一、hibernate是什么
hibernate是一款优秀的ORM(Object Relational Mapping ,对象关系映射)框架,是一种面向对象编程的框架,它对JDBC进行了封装,是一个全自动的ORM框架,可以自动生成SQL语句,也可以自定义HQL进行执行脚本。
优点:hibernate在进行对象进行数据库存储时,可以不进行SQL编写,配置好对象与数据库的关系后,自动生成SQL执行,也可自动创建表,在简单的数据库关系项目中,可进行高效率的工作。
缺点:hibernte在项目开发的过程中,由于全自动生成SQL,在使用时会发现,当执行复杂关系的数据库关系的业务时,hibernate略显笨重,执行时间偏长且无法灵活的配置关系较为复杂的业务,所以后期有了mybatis的出现,为了可以更加便捷的写sql,灵活的配置SQL。
二、为什么我还要使用hibernate
刚才也描述了,在进行关系较为简单的项目业务上,hibernate可以自动生成SQL执行,也提供了增删改查的方法,可以很简单直接进行对象存储删除,所以在开发逻辑简单的业务时(例如帮学妹做个毕设,课程设计什么的,你懂的,哈哈),可以利用hibernate进行快速的项目开发。
三、开始整合
1.搭建SpringBoot工程,此处不再多讲,之前已经讲过,可以翻看SpringBoot的搭建的帖子,(点我跳转),在pom文件加上如下依赖
1 | <dependency> |
2.在java文件夹下创建自定义包,项目结构如下
3.全局配置文件如下
1 | #配置数据源 |
4.创建实体类-用户类,及统一返回对象ResultObject
1 | package com.yang.bean; |
1 | package com.yang.bean; |
5.创建数据查询接口,需要继承JpaRepository接口来实现查询
1 | package com.yang.dao; |
6.编写Service接口及实现类,实现类注入数据层接口
1 | package com.yang.service; |
1 | package com.yang.service.impl; |
7.编写控制器
1 | package com.yang.controller; |
8.编写启动类
1 | package com.yang.boot; |
9.创建数据库表及插入数据
1 | CREATE TABLE `t_user` ( |
10.启动项目,访问地址:localhost:8088/user/getAllUser ,访问结果如下
四、整合的时候遇到的坑
1.注入数据层接口失败,启动时
1 | Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled. |
原因:在启动类上,只是用了@EnableJpaRepositories注解,但未将该注解指定数据层接口包名,需要指定数据层接口的包名,上面代码是已经修复过的,错误代码如下
2.启动时,无法创建userDao,原因为无法创建bean
1 | Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userDao': Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Not a managed type: class com.yang.bean.User |
解决方案:使用@EntityScan注解指定实体类的地址
3.注解的顺序导致的项目无法启动@SpringBootApplication注解需要放到扫描包指定配置之后,否则数据层也无法依赖,实体类指向也不能生效(这个问题困扰了我两个小时)
1 |
|