我们到底在用Hibernate还是Spring Data JPA还是JPA???

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的相关配置文件

  1. Xxx.hbm.xml:它主要是用于描述类与数据库中的表的映射关系;
  2. 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值