SpringBoot整合hibeate纯注解版
一、hibeate是什么
hibeate是一款优秀的ORM(Object Relational Mapping ,对象关系映射)框架,是一种面向对象编程的框架,它对JDBC进行了封装,是一个全自动的ORM框架,可以自动生成SQL语句,也可以自定义HQL进行执行脚本。
优点:hibeate在进行对象进行数据库存储时,可以不进行SQL编写,配置好对象与数据库的关系后,自动生成SQL执行,也可自动创建表,在简单的数据库关系项目中,可进行高效率的工作。
缺点:hibete在项目开发的过程中,由于全自动生成SQL,在使用时会发现,当执行复杂关系的数据库关系的业务时,hibeate略显笨重,执行时间偏长且无法灵活的配置关系较为复杂的业务,所以后期有了mybatis的出现,为了可以更加便捷的写sql,灵活的配置SQL。
二、为什么我还要使用hibeate
刚才也描述了,在进行关系较为简单的项目业务上,hibeate可以自动生成SQL执行,也提供了增删改查的方法,可以很简单直接进行对象存储删除,所以在开发逻辑简单的业务时(例如帮学妹做个毕设,课程设计什么的,你懂的,哈哈),可以利用hibeate进行快速的项目开发。
三、开始整合
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 |
|
五、项目下载地址如下
作者:Java小白_Mr.Yang
来源链接:http://www.it-online.cn/2019/01/30/SpringBoot%E9%9B%86%E6%88%90hibeate/
版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。
2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。