Hibernate 和 JPA 和Spring Data JPA
JPA
JPA的全称是Java Persistence API, 即Java 持久化API,是SUN公司推出的一套基于ORM的规范
Hibernate
Hibernate是一个JPA规范的具体实现,是ORM类型的框架,对象映射模型。
Hibernate 可以自动生成 SQL 语句,自动执行
关系
JPA规范本质上就是一种ORM规范,注意不是ORM框架,因为JPA并未提供ORM实现,JPA仅仅定义了一些接口
Hibernate除了作为ORM框架之外,它也是一种JPA实现。
Spring Data JPA
接口的再次封装抽象更多的可用接口
Spring Data JPA是在JPA规范下提供了Repository层的再次封装,提供了更多可用的接口,然后底层通过Hibernate实现。
JPA是一种规范,Hibernate是一个实现了JPA规范的框架,Spring Data JPA是对JPA简化操作的实现,实现了更多可用的接口,底层具体实现用了Hibernate。
在SpringBoot环境下使用JPA
导入依赖
spring-boot-starter-data-jpa
配置数据源
Hibernate的相关配置 HibernateProperties或配到yml中
创建实体类
编写持久层
@Repository public interface AccountRepository extends JpaRepository<Account, Integer> { }
使用Hibrenate
导入依赖 hibernate-core
Hibernate的相关配置文件
- Xxx.hbm.xml:它主要是用于描述类与数据库中的表的映射关系;
- hibernate.cfg.xml:它是Hibernate框架的核心配置文件。
在resources目录下创建 hibernate.cfg.xml 配置文件
使用xml修改表
1.实体类
2.创建实体关系映射文件 xxx.hbm.xml
3.将实体类关系映射文件注册到 Hibernate.cfg.xml 配置文件中
4. 使用 Hibernate API 完成数据操作
一对一
一对多 set 标签来配置实体类中的集合属性
一个顾客多个订单 private Set<Orders> orders;
<set name="orders" table="orders"> <key column="cid"></key> <one-to-many class="com.zhijia.entity.Orders"></one-to-many> </set>
多对多 多个学生对应多个课程
column:属性的集合泛型实体类与中间表的外键字段名
<set name="courses" table="student_course"> <key column="sid"></key> <many-to-many class="com.zhijia.entity.Course" column="cid"></many-to-many> </set>
Hibernate自动创建表的配置文件设置
数据库要预先建立好,因为hibernate只会建表,不会建库
- create:启动hibernate时,自动删除原来的表,新建所有的表,所以每次启动后的以前数据都会丢失。
- update:如果缺少表,则自动建表;如果表里缺少列,则自动添加列。
- create-drop:启动hibernate时,自动创建表,程序关闭时,自动把相应的表都删除。所以程序结束时,表和数据也不会再存在。
- validate: 自动校验,如果表结构与实体类不一致,那么不做任何操作,报错
spring: jpa: hibernate: ddl-auto: update # 有三个选项:update、create、create-drop