JPA:

    JPA是Sun官方提出的Java持久化规范。它为Java开发人员提供了一种对象/关系映射工具来管理Java应用中的关系数据。

Hibernate:

    Hibernate是一个是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。

Spring Data:

     Spring Data是一个用于简化数据库访问,并支持云服务的开源框架。其主要目标是使得数据库的访问变得方便快捷,并支持map-reduce框架和云计算数据服务。此外,它还支持基于关系型数据库的数据服务,如Oracle RAC等。对于拥有海量数据的项目,可以用Spring Data来简化项目的开发,就如Spring Framework对JDBC、ORM的支持一样,Spring Data会让数据的访问变得更加方便。

所以Spring Data JPA的出现就是为了简化JPA的写法,让你只需要编写一个接口继承一个类就能实现CRUD操作了。


操作:

  1:配置pom.xml添加依赖

  

<!-- 添加MySQL数据库驱动依赖包 --> 
            <dependency> 
                <groupId>mysql</groupId> 
                <artifactId>mysql-connector-java</artifactId> 
            </dependency> 
            <!-- 添加Spring-data-jpa依赖 --> 
            <dependency> 
                    <groupId>org.springframework.boot</groupId> 
                    <artifactId>spring-boot-starter-data-jpa</artifactId> 
            </dependency>

2.配置mysql连接文件:

   

建立application.properties
        ########################################################
        ###datasource 
        ######################################################## 
        spring.datasource.url = jdbc:mysql://localhost:3306/test 
        spring.datasource.username = root 
        spring.datasource.password = root 
        spring.datasource.driverClassName = com.mysql.jdbc.Driver 
        spring.datasource.max-active=20 
        spring.datasource.max-idle=8 
        spring.datasource.min-idle=8 
        spring.datasource.initial-size=10

   3.配置JAR配置信息

  

在application.properties添加:
        ######################################################## 
        ### Java Persistence Api 
        ######################################################## 
        # Specify the DBMS spring.jpa.database = MYSQL 
        # Show or not log for each sql query spring.jpa.show-sql = true 
        # Hibernate ddl auto (create, create-drop, update) 
        spring.jpa.hibernate.ddl-auto = update 
        # Naming strategy 
        #[org.hibernate.cfg.ImprovedNamingStrategy 
        #org.hibernate.cfg.DefaultNamingStrategy] 
        spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy 
        # stripped before adding them to the entity manager) 
        spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect
上述代码  spring.jpa.hibernate.ddl-auto = update 为

    摘自:

其实这个hibernate.hbm2ddl.auto参数的作用主要用于:自动创建|更新|验证数据库表结构。如果不是此方面的需求建议set value="none"。
create:
每次加载hibernate时都会删除上一次的生成的表,然后根据你的model类再重新来生成新表,哪怕两次没有任何改变也要这样执行,这就是导致数据库表数据丢失的一个重要原因。
create-drop :
每次加载hibernate时根据model类生成表,但是sessionFactory一关闭,表就自动删除。
update:
最常用的属性,第一次加载hibernate时根据model类会自动建立起表的结构(前提是先建立好数据库),以后加载hibernate时根据 model类自动更新表结构,即使表结构改变了但表中的行仍然存在不会删除以前的行。要注意的是当部署到服务器后,表结构是不会被马上建立起来的,是要等 应用第一次运行起来后才会。
validate :
每次加载hibernate时,验证创建数据库表结构,只会和数据库中的表进行比较,不会创建新表,但是会插入新值。

再说点“废话”:
当我们把hibernate.hbm2ddl.auto=create时hibernate先用hbm2ddl来生成数据库schema。
当我们把hibernate.cfg.xml文件中hbm2ddl属性注释掉,这样我们就取消了在启动时用hbm2ddl来生成数据库schema。通常 只有在不断重复进行单元测试的时候才需要打开它,但再次运行hbm2ddl会把你保存的一切都删除掉(drop)---- create配置的含义是:“在创建SessionFactory的时候,从scema中drop掉所以的表,再重新创建它们”。
注意,很多Hibernate新手在这一步会失败,我们不时看到关于Table not found错误信息的提问。但是,只要你根据上面描述的步骤来执行,就不会有这个问题,因为hbm2ddl会在第一次运行的时候创建数据库schema, 后续的应用程序重启后还能继续使用这个schema。假若你修改了映射,或者修改了数据库schema,你必须把hbm2ddl重新打开一次。

上述代码: spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy为命名策略 

4,创建po类,Controller类,service类,repositor接口类(继承CrudRepository类)。

实体类中

        /*
         * 创建一个实体类
         * 
         * 如何持久化?
         * 1.使用@Entity进行实体类的持久化操作,当JPA检测到我们实体类当中有
         * @Entity 注解的时候,会在数据库生成对应的表结构数据信息
         * 
         * 如何指定主键
         * 2.使用@id指定主键
         */

   5.测试