1.jpa的介绍
JPA是Java Persistence API的简称, 中文名为Java持久层API;
是JDK 5.0注解或XML描述对象-关系表的映射关系, 并将运行期的实体对象持久化到数据库中。
 
JPA包括以下3方面的内容:
    1) 一套API标准。
         在javax.persistence的包下面, 用来操作实体对象, 执行CRUD操作, 框架在后台替代我们完成所有的事情, 开发者从烦琐的JDBC和SQL代码中解脱出来。
 
    2) 面向对象的查询语言: Java Persistence Query Language(JPQL) 。
         这是持久化操作中很重要的一个方面, 通过面向对象而非面向数据库的查询语言查询数据, 避免程序的SQL语句紧密耦合。
 
    3) ORM(object/relational metadata) 元数据的映射。
         JPA支持XML和JDK5.0注解两种元数据的形式, 元数据描述对象和表之间的映射关系, 框架据此将实体对象持久化到数据库表中。
 
总的来说:
    jpa是用于对象持久化的API;
    是jave EE5.0平台的标准ORM规范,其作用是使得应用程序以统一的方式来访问持久层;
    目前主要使用的jap实现是hibernate;
 
2.jpa和hibernate
1)jap是规范:
    jpa本质上是一种ORM规范而不是ORM框架;
    jpa并未提供ORM实现,它只制定了一些规范提供了编程的API接口,具体的实现则由ORM框架比如Hibernate等来实现;
 
2)Hibernate是实现:
    Hibernate 3.2+实现了jpa规范;
 
3.使用jpa持久化对象
大概步骤:
    1】创建persistence.xml配置文件,在这个文件中配置持久化单元:
        ->指定和哪个数据库交互;
        ->指定jpa使用的ORM框架以及配置该框架的基本属性;
 
    2】创建实体类,使用注解来描述实体类和数据库之间的映射关系;
    
    3】使用jpa的API来进行数据的增删查改操作;
        ->创建EntityManagerFactory;
        ->创建EntityManager,用它完成增删改查;
 
4.利用jpa操作实例
1)eclipse->new->JPA Projiect 
注意jpa版本选2.0; 
会自动生成persistence.xml配置文件;
 
 
2)在工程下新建一个lib目录,放入jar包;
需要的jar包:
    hibernate的全部;
    mysql的驱动;
    jpa的全部;
 
3)修改配置文件persistence.xml
1】配置mysql数据库:
    事务方式选本地事务Resource Local;
    可打开persistence.xml.选Collection,填写即可;当然手动修改配置文件的代码也行;
 
2】配置hibernate
provider标签指定框架为hibernate;
在properties标签里加入propertie标签来配置hibernate的属性;
<?xml version="1.0" encoding="UTF-8"?>
     <persistence-unit name="jap_emp" transaction-type="RESOURCE_LOCAL">
     
           <!-- 配置提供jpa实现的ORM框架 ,若只有一种jpa实现框架不配置也可以-->
           <provider>org.hibernate.ejb.HibernatePersistence</provider>
     
           <properties>
                <!-- 连接数据库配置 -->
                <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
                <property name="javax.persistence.jdbc.url" value="jdbc:mysql://127.0.0.1/myjpa"/>
                <property name="javax.persistence.jdbc.user" value="root"/>
                <property name="javax.persistence.jdbc.password" value="root"/>
                
                <!-- 配置jpa的实现框架hibernate的基本属性 -->
                <!-- 格式化sql -->
                <property name="hibernate.format_sql" value="true"/>
                <!--显示sql  -->
                <property name="hibernate.show_sql" value="true"/>
                <!--生成数据表的策略  -->
                <property name="hibernate.hbm2ddl.auto" value="update"/>
                
           </properties>
           
     </persistence-unit>
</persistence>
 
4)创建实体类Emp
这里的实体类用注解和数据库的表映射;
主要的注解:
    @Table    ->用在实体类名前;name属性指定表名;如果不指定默认表名和类名一样;
    @Entity    ->实体类前面;
    @Colunm    ->用在实体类属性前或get方法前面;用来映射实体类和表列名;name属性指定列名;可以省略;省略时表的列名和属性名一样;
    @Id    ->用在对应表的主键的属性前;
    @GeneratedValue    ->用来指定主键的生成策略
package com.liusir.java;
 
import java.util.Date;
 
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
 
import org.hibernate.annotations.GenericGenerator;
 
@Table(name="tb_emp")
@Entity
public class Emp {
    
    @Column(name="id")
    @GeneratedValue(strategy=GenerationType.AUTO)
    @Id
    private Integer id;
    private String name;
    private Date birthday;
    private Integer salary;
    
    //getter setter
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Date getBirthday() {
        return birthday;
    }
    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }
    public Integer getSalary() {
        return salary;
    }
    public void setSalary(Integer salary) {
        this.salary = salary;
    }
    
    
}
 
 
创建好实体类后,将完整的类名注入到persistence.xml中;
也就是在配置文件中添加一条class标签:
<!--添加持久化类  -->
<class>com.liusir.java.Emp</class>
 
5)测试用的main方法
主要步骤:
    1】创建EntityManagerFactory;
    2】创建EntityManager;
    3】开启事务;
    4】进行持久化操作;
    5】提交事物
    6】关闭EntityManager
    7】关闭EntityManagerFactory;
package com.liusir.java;
 
import java.util.Date;
 
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityTransaction;
import javax.persistence.Persistence;
 
public class TestEmp {
 
    public static void main(String[] args) {
        //对应persistence.xml文件里的persistence-unit标签中的 name属性;默认为工程名
        String persistenceUnitName="jpa_emp";
        //1.创建EntityManagerFactory
        EntityManagerFactory factory=Persistence.createEntityManagerFactory(persistenceUnitName);
        //2.创建EntityManager
        EntityManager entityManager=factory.createEntityManager();
        //3.开启事务
        EntityTransaction transaction=entityManager.getTransaction();
        transaction.begin();
        //4.持久化操作
        Emp emp=new Emp();
        emp.setName("诸葛村夫");
        emp.setSalary(1000);
        emp.setBirthday(new Date());
        entityManager.persist(emp);
        //5.提交事务
  transaction.commit();
        //6.关闭EntityManager
        entityManager.close();
        //7.关闭EntityManagerFactory
        factory.close();
    }
 
}
 
 
6)结果
在数据库中自动创建了一个表;
并且在表中插入了一条数据;
 
 

jpa介绍的更多相关文章

  1. springboot:spring data jpa介绍

    转载自:https://www.cnblogs.com/ityouknow/p/5891443.html 在上篇文章springboot(二):web综合开发中简单介绍了一下spring data j ...

  2. spring boot(五)Spring data jpa介绍

    在上篇文章springboot(二):web综合开发中简单介绍了一下spring data jpa的基础性使用,这篇文章将更加全面的介绍spring data jpa 常见用法以及注意事项 使用spr ...

  3. Spring Data JPA介绍与简单案例

    一.Spring Data JPA介绍 可以理解为JPA规范的再次封装抽象,底层还是使用了Hibernate的JPA技术实现,引用JPQL(Java Persistence Query Languag ...

  4. spring boot 中使用 jpa以及jpa介绍

    1.什么是jpa呢?JPA顾名思义就是Java Persistence API的意思,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中.12.jpa具有什么 ...

  5. Spring Data JPA 介绍

    Spring-data-jpa的基本介绍:JPA诞生的缘由是为了整合第三方ORM框架,建立一种标准的方式,百度百科说是JDK为了实现ORM的天下归一,目前也是在按照这个方向发展,但是还没能完全实现.在 ...

  6. spring data jpa介绍

    首先了解JPA是什么? JPA(JavaPersistence API)是Sun官方提出的Java持久化规范.它为Java开发人员提供了一种对象/关联映射工具来管理Java应用中的关系数据.他的出现主 ...

  7. SQLite数据库和JPA简单介绍

    SQLite数据库和JPA简单介绍 一.SQLite简单使用 SQLite是遵循ACID的关系数据库管理系统,它的处理速度很快,它的设计目标是嵌入式的,只需要几百K的内存就可以了. 1.下载SQLit ...

  8. spring boot(五):spring data jpa的使用

    在上篇文章springboot(二):web综合开发中简单介绍了一下spring data jpa的基础性使用,这篇文章将更加全面的介绍spring data jpa 常见用法以及注意事项 使用spr ...

  9. JPA入门例子(采用JPA的hibernate实现版本)

    (1).JPA介绍: JPA全称为Java Persistence API ,Java持久化API是Sun公司在Java EE 5规范中提出的Java持久化接口.JPA吸取了目前Java持久化技术的优 ...

随机推荐

  1. 使用Minikube运行一个本地单节点Kubernetes集群

    使用Minikube是运行Kubernetes集群最简单.最快捷的途径,Minikube是一个构建单节点集群的工具,对于测试Kubernetes和本地开发应用都非常有用. ⒈安装Minikube Mi ...

  2. asp.net练习①——Application聊天室

    已经好几年没写过代码,重新练习起代码,在这做做笔记备忘. aspx页面js代码: <script type="text/javascript"> function sh ...

  3. IIS--解决64位系统IIS网站发布出现未能加载文件或程序集“...”或它的某一个依赖项。试图加载

    解决64位系统IIS网站发布出现未能加载文件或程序集“...”或它的某一个依赖项.试图加载 ASP.NET MVC 项目发布的在本地IIS后,启动网站出现未能加载文件或程序集“…”或它的某一个依赖项. ...

  4. squoosh

    谷歌在线压缩图片

  5. SQL SERVER中Datetime时间的范围与.net的DateTime对象的区别

    对于编写.net程序中我们一般写默认的时间,我们会自动创建一个new DateTime()对象.但与SQL SERVER连用我们就会出现一个时间范围的问题. 今天我就记录一下该时间问题. 我们创建的n ...

  6. O029、教你看懂OpenStack日志

    参考https://www.cnblogs.com/CloudMan6/p/5456484.html   instance 从创建到删除的整个生命周期都是有 Nova 管理的,后面各小节我们以inst ...

  7. Java必考题目之JVM面试题目和答案

    JVM内存模型 首先我们来了解一下JVM的内存模型的怎么样的: 1.堆:存放对象实例,几乎所有的对象实例都在这里分配内存 堆得内存由-Xms指定,默认是物理内存的1/64:最大的内存由-Xmx指定,默 ...

  8. latex中文环境配置(针对北大模板,开题报告+中期答辩+毕业论文)

    最近自己在忙着开题,中文环境真的是emm 以下只针对北大的毕业论文模板,至于其他的中文环境没有尝试 主要是用不同的latex编辑器会报不同的错误,当然我最后还是统一成了pdflatex,经过无数次尝试 ...

  9. (转)JVM垃圾回收机制

    一.技术背景 GC的历史比Java久远,早在1960年Lisp这门语言中就使用了内存动态分配和垃圾回收技术 二.那些内存需要回收? JVM的内存结构包括五大区域:程序计数器.虚拟机栈.本地方法栈.堆区 ...

  10. fastadmin中关联表时A为主表,想让B表和C表关联时怎么办?

    $sql = Db::connect('数据库')->table('C表')->where('status', 'normal')->field('字段 别称[不可与其他表重复]') ...