• 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();
         }
    }
  • 相关阅读:
    LG4377 「USACO2018OPEN」Talent Show 分数规划+背包
    LG4111/LOJ2122 「HEOI2015」小Z的房间 矩阵树定理
    LG5104 红包发红包 概率与期望
    LG2375/LOJ2246 「NOI2014」动物园 KMP改造
    LG4824 「USACO2015FEB」(Silver)Censoring KMP+栈
    20191004 「HZOJ NOIP2019 Round #9」20191004模拟
    LG5357 「模板」AC自动机(二次加强版) AC自动机+fail树
    LG3812 「模板」线性基 线性基
    数据结构
    git
  • 原文地址:https://www.cnblogs.com/lone5wolf/p/10940809.html
Copyright © 2020-2023  润新知