搭建环境的过程
    1.创建maven工程导入坐标

    1. <dependencies>
    2. <!--c3p0-->
    3. <dependency>
    4. <groupId>com.mchange</groupId>
    5. <artifactId>c3p0</artifactId>
    6. <version>0.9.5.5</version>
    7. </dependency>
    8. <!--Junit-->
    9. <dependency>
    10. <groupId>junit</groupId>
    11. <artifactId>junit</artifactId>
    12. <version>4.13.2</version>
    13. <scope>test</scope>
    14. </dependency>
    15. <!--hibernate对Jpa的支持-->
    16. <dependency>
    17. <groupId>org.hibernate</groupId>
    18. <artifactId>hibernate-entitymanager</artifactId>
    19. <version>5.0.7.Final</version>
    20. </dependency>
    21. <!--Log日志-->
    22. <dependency>
    23. <groupId>log4j</groupId>
    24. <artifactId>log4j</artifactId>
    25. <version>1.2.17</version>
    26. </dependency>
    27. <!--MySQL and MariaDB-->
    28. <dependency>
    29. <groupId>mysql</groupId>
    30. <artifactId>mysql-connector-java</artifactId>
    31. <version>8.0.26</version>
    32. </dependency>
    33. </dependencies>

    2.需要配置Jpa的核心配置文件
    位置:配置到类路径下一个叫做MATA-INF的文件夹下
    命名:persistence.xml
    搭建环境的过程 - 图1

    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">
    3. <!--需要配置persistent-unit节点
    4. 持久化单元:
    5. name:持久化单元名称
    6. transaction-type:事务管理的方式
    7. JTA:分布式事务管理
    8. RESOURCE-LOCAL:本地事务管理
    9. -->
    10. <persistence-unit name="myJpa" transaction-type="RESOURCE_LOCAL">
    11. <!--JPA的实现方式-->
    12. <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
    13. <!--可选配置:配置JPA实现方的配置信息-->
    14. <properties>
    15. <!--数据库信息
    16. 用户名,密码,驱动,数据库地址
    17. -->
    18. <property name="javax.persistence.jdbc.driver" value="com.mysql.cj.jdbc.Driver"/>
    19. <property name="javax.persistence.jdbc.url" value="jdbc:mysql:///springdata"/>
    20. <property name="javax.persistence.jdbc.user" value="root"/>
    21. <property name="javax.persistence.jdbc.password" value="ced51515151"/>
    22. <!--配置JPA实现方(hibernate)的配置信息
    23. 显示sql : true | false
    24. 自动创建数据库表 : hibernate.hbm2ddl.auto
    25. create : 程序运行时创建数据库表(如果有表,先删除再创建)
    26. update :程序运行时创建数据库表(如果有表,不会创建表)
    27. none :不会创建表
    28. -->
    29. <property name="hibernate.show_sql" value="true"/>
    30. <property name="hibernate.hbm2ddl.auto" value="create"/>
    31. </properties>
    32. </persistence-unit>
    33. </persistence>

    3.编写客户的实体类
    4.配置实体类和表,类中属性和表中字段的映射关系

    package com.cedric.domain;
    
    import javax.persistence.*;
    
    /**
     * 客户实体类
     *      配置映射关系:
     *          1.实体类和表的映射关系
     *          2.实体类中的属性和表中字段的映射关系
     *
     *  @Entity  :  声明实体类
     *  @Table   :  配置实体类和表的映射关系
     *      name  :  配置数据库表的名称
     */
    @Entity
    @Table(name = "cst_customer")
    public class Customer {
    
        /**
         * @Id : 声明主键的配置
         * @GeneratedValue:配置主键的生成策略
         *      strategy
         *          GenerationType.IDENTITY:自增,MySQL
         *              * 底层数据库必须支持自动增长(底层数据库支持的自动增长方式,对id自增)
         *          GenerationType.SEQUENCE:序列,Oracle
         *              * 底层数据库必须支持序列
         *          GenerationType.TABLE : jpa提供的一种机制,通过一张数据库表的形式帮助我们完成主键自增
         *          GenerationType.AUTO  : 由程序自动帮助我们选择主键生成策略
         * @Column:配置属性和字段的映射关系
         *      name:数据库表中的字段名称
         */
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        @Column(name = "cust_id")
        private Long custId; //客户的主键
    
        @Column(name = "cust_name")
        private String custName;//客户姓名
    
        @Column(name = "cust_source")
        private String custSource;//客户来源
    
        @Column(name = "cust_level")
        private String custLevel;//客户级别
    
        @Column(name = "cust_industry")
        private String custIndustry;//客户所属行业
    
        @Column(name = "cust_phone")
        private String custPhone;//客户联系方式
    
        @Column(name = "cust_address")
        private String custAddress;//客户地址
    
        // setter and getter
        // toString
    }
    

    5.保存客户到数据库中

    package com.cedric.test;
    
    import com.cedric.domain.Customer;
    import org.junit.Test;
    
    import javax.persistence.EntityManager;
    import javax.persistence.EntityManagerFactory;
    import javax.persistence.EntityTransaction;
    import javax.persistence.Persistence;
    
    public class JpaTest {
    
        /**
         * 测试Jpa的保存
         *      案例:保存一个客户到数据库中
         *  Jpa的操作步骤
         *      1.加载配置文件创建工厂(实体管理类工厂)对象
         *      2.通过实体管理类工厂获取实体管理器
         *      3.获取事务对象,开启事务
         *      4.完成增删改查操作
         *      5.提交事务(回滚事务)
         *      6.释放资源
         */
    
        @Test
        public void testSave(){
            //1.加载配置文件创建工厂(实体管理类工厂)对象
            EntityManagerFactory factory = Persistence.createEntityManagerFactory("myJpa");
            //2.通过实体管理类工厂获取实体管理器
            EntityManager entityManager = factory.createEntityManager();
            //3.获取事务对象,开启事务
            EntityTransaction transaction = entityManager.getTransaction();//获取事务对象
            transaction.begin();//开启事务
            //4.完成增删改查操作:保存一个客户到数据库中
            Customer customer = new Customer();
            customer.setCustName("张三");
            customer.setCustIndustry("国防");
            customer.setCustAddress("北京");
            customer.setCustLevel("SVIP");
            customer.setCustPhone("111");
            //保存
            entityManager.persist(customer);
            //5.提交事务(回滚事务)
            transaction.commit();
            //6.释放资源
            entityManager.close();
            factory.close();
        }
    }
    

    ii.完成基本的CRUD案例
    persist : 保存
    merge : 更新
    remove : 删除
    find/getReference : 根据id查询