JPA ---- 简介

一、JPA(Java Persistence API)是SUN官方推出的Java持久化规范,它为Java开发人员提供了一种对象/关联映射工具来管理Java应用中的关系数据。它的出现主要是为了简化现有的持久化开发工作和整合ORM技术,结束现在Hibernate,TopLink,JDO等ORM框架各自为营的局面。JPA是在充分吸收了现有Hibernate,TopLink,JDO 等ORM框架的基础上发展而来的,具有易于使用,伸缩性强等优点。
 
二、JPA包括以下三方面的技术
 1、ORM映射元数据
    JPA支持XML和JDK5.0注释两种元数据形式,元数据描述对象和表之间的映射关系,框架据此将实体对象持久化到数据库表中。
 2、Java持久化API
    用来操作实体对象,执行CRUD操作,框架在后台替我们完成所有的事情,开发者可以从繁琐的JDBC和SQL代码中解脱出来。
 3、查询语言(JPQL)
    这是持久化操作中很重要的一个方面,通过面向对象而非面向数据库的查询语言查询数据,避免程序的SQL语句紧密耦合。
 
三、实例:
  1、创建JPA Project,导入jar包:
    (1)Hibernate必须的jar包
    (2)hibernate-entitymanager-4.2.2.Final.jar
    (3)mysql驱动jar包
 
  2、编写持久化类:
        @Table(name="jpa_customer")
        @Entity
        public class Customer {
           private Integer id;
           private String lastName;
           private String email;
           private Integer age;
     
           @GeneratedValue(strategy=GenerationType.AUTO)
           @Id
           public Integer getId() {
              return id;
           }
           public void setId(Integer id) {
              this.id = id;
           }
     
           @Column(name="last_name")
           public String getLastName() {
              return lastName;
           }
           public void setLastName(String lastName) {
              this.lastName = lastName;
           }
           public String getEmail() {
              return email;
           }
           public void setEmail(String email) {
              this.email = email;
           }
           public Integer getAge() {
              return age;
           }
           public void setAge(Integer age) {
              this.age = age;
           }
        }
    3、配置核心配置文件(persistence.xml)
    <!-- 配置使用什么ORM产品,作为JPA的实现
             1.实际上配置的是javax.persistence.spi.PersistenceProvider接口的实现类
             2.若JPA项目中只有一个JPA的实现产品,也可以不配置给节点
          -->
          <provider> org.hibernate.ejb.HibernatePersistence</provider>
          <!-- 配置实体类 -->
          <class>com.beans.Customer</class>
          
          <properties>
              <!-- 配置数据库连接的基本信息 -->
              <property name="javax.persistence.jdbc.driver" value="com.mysql.cj.jdbc.Driver"/>
              <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/jpa?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC"/>
              <property name="javax.persistence.jdbc.user" value="root"/>
              <property name="javax.persistence.jdbc.password" value="admin"/>
              
              <!-- 配置JPA实现产品的基本信息, 配置hibernate的基本属性-->
              <property name="hibernate.show_sql" value="true"/>
              <property name="hibernate.format_sql" value="true"/>
              <property name="hibernate.hbm2ddl.auto" value="update"/>
          </properties>
  
   4、测试:
  public class Main {
       public static void main(String[] args) {
          //1.创建EntityManagerFactory
          String persistenceUnitName = "jpa-1";
          EntityManagerFactory entityManagerFactory =
                     Persistence.createEntityManagerFactory(persistenceUnitName);
          
          //2.创建EntityManager
          EntityManager entityManager = entityManagerFactory.createEntityManager();
          
          //3.开启事务
          EntityTransaction transaction = entityManager.getTransaction();
          transaction.begin();
          
          //4.进行持久化操作
          Customer customer = new Customer();
          customer.setLastName("张三");
          customer.setEmail("abc@qq.com");
          customer.setAge(23);
          entityManager.persist(customer);
          //5.提交事务
          transaction.commit();
          
          //6.关闭EntityManager
          entityManager.close();
          
          //7.关闭EntityManagerFactory
          entityManagerFactory.close();
     }
}
posted @ 2019-05-28 22:33  #独狼  阅读(1348)  评论(0编辑  收藏  举报