Hibernate认识

一、定义

Hibernate 是一种开源的 Java 对象关系映射 (ORM) 框架,用于将面向对象的领域模型持久化到关系数据库中。它为开发人员提供了一种简便的方法来操作数据库,而无需编写繁琐的 SQL 代码。

ORM(对象关系映射):Object relation mapping

  • 对象:指的是java对象,是实体bean。
  • 关系:关系只是数据库,sqlserver,mysql,oracle都属于关系型数据库。
  • 映射:java中对象的属性与数据库中的表字段之间一一对应(包含一对一,一对多,多对一,多对多)。

JPA、Hibernate、Spring Data jpa 三者之间的关系:

JPA全称Java Persistence API,它是一种规范,旨在可以通过注解或者XML描述【对象-关系表】之间的映射关系,并将实体对象持久化到数据库中。而Hibernate就是实现了JPA规范的ORM框架。Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架。Spring Data JPA是Spring提供的一套简化JPA开发的框架,按照约定好的【方法命名规则】写dao层接口,就可以在不写接口实现的情况下,实现对数据库的访问和操作。同时提供了很多除了CRUD之外的功能,如分页、排序、复杂查询等等。Spring Data JPA 可以理解为 JPA 规范的再次封装抽象,底层还是使用了 Hibernate 的 JPA 技术实现。 

二、核心功能

1、对象关系映射 (ORM)

Hibernate 可以自动将 Java 对象映射到关系数据库表,并反之亦然。这意味着开发人员可以使用面向对象的术语来操作数据库,而无需了解底层的 SQL 语句

2、自动事务管理

Hibernate 可以自动管理数据库事务,开发人员无需手动开始和提交事务

3、缓存

Hibernate 可以缓存数据库查询结果,以提高性能

4、HQL查询语言

Hibernate 提供了一种名为HQL的查询语言,类似于SQL,但更易于使用

三、优势

1、提高开发效率

Hibernate 可以简化数据访问层 (DAL) 的开发,提高开发效率

2、降低代码复杂性

Hibernate 可以减少需要编写的 SQL 代码,降低代码复杂性

3、提高应用程序可移植性

Hibernate 可以将应用程序与特定的数据库供应商无关,提高应用程序的可移植性

四、SpringBoot集成Hibernate

0、数据库已存在category表

1、引入依赖

<!--  jpa 默认集成hibernate  -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>

2、编写配置

spring:
  datasource:
    url: jdbc:mysql://xxx:xxx/xxx?useSSL=false&serverTimezone=UTC
    username: xxx
    password: xxx
    driver-class-name: com.mysql.cj.jdbc.Driver
  jpa:
    database-platform: org.hibernate.dialect.MySQL8Dialect
#    hibernate:
#      # 指定了Hibernate如何自动生成数据库表
#      # 每次启动应用程序时都会创建表,并在关闭应用程序时删除表
#      ddl-auto: create-drop

3、编写实体类Category

@Data// @Data必须有,不然映射会为空
@Entity
public class Category {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;
    private String updateTime;
    private String createTime;
    private String delFlag;
}

 4、编写映射类(操作数据库的类)CategoryRepo

@Repository
public interface CategoryRepo extends JpaRepository<Category,Long> {
}

5、编写业务类CategoryService

@Service
public class CategoryService {
    @Autowired
    CategoryRepo categoryRepo;

    public void list(){
        List<Category> list= categoryRepo.findAll();
        System.out.println(JSONUtil.toJsonPrettyStr(list));
    }
}

6、测试

@SpringBootApplication
public class App implements CommandLineRunner
{
    public static void main( String[] args )
    {
        SpringApplication.run(App.class,args);
    }

    @Autowired
    CategoryService categoryService;

    @Override
    public void run(String... args) throws Exception {
        categoryService.list();
    }
}

 结果:

7、高级映射

Spring Boot 入门系列(二十八) JPA 的实体映射关系,一对一,一对多,多对多关系映射! - 章为忠 - 博客园 (cnblogs.com)

五、原理

 

参考地址:

SpringBoot整合JPA_springboot中整合jpa-优快云博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值