Hibernate不需要多介绍,它是Java中最受欢迎的ORM。同样,Spring Boot是功能最强大且易于使用的框架。本文并不是描述一些关于Hibernate或Spring Boot的用法,因为有很多。相反,我们将研究同时使用它们时可能遇到的一些常见错误以及如何解决。

依赖

我们使用Gradle来构建我们的项目,建议使用 Spring Initializr来引导你的项目。包括如下:

Spring Boot 2Spring WebfluxSpring Data JPASpring Data EnversJackson 注解Jackson DataType HibernateH2 数据库Lombok

Spring Data Envers允许我们访问由Hibernate Envers管理的实体;Jackson Annotations将帮助我们避免由JPA关系引起的常见Stack Overflow错误;Jackson DataType Hibernate 模块将有助于Hibernate类型和延迟加载方面。

实体

在这个例子中,我们将使用JPA来创建universities和students,通用逻辑和属性存储在超类中。即为实体创建一个超类,并在其中存储公共属性,我们来看看这个 BaseEntity 类。

你可以注意到我没有在类上使用@Data注解,@Data注解会自动添加@ToString注解,这可能会导致Stack Overflow错误。因此,最好是手动管理注解。@MappedSuperclass注解允许实体从基类继承属性,即如果要从基类继承属性,这个注解非常重要。

@EntityListeners({AuditingEntityListener.class})启用审计,我们使用@CreatedDate和@LastModifiedDate捕获创建或修改实体的时间,这将由Spring Data JPA处理。@JsonIdentityInfo将我们的实体转换为JSON时,避免Stack Overflow错误。由于我们的实体之间的双向关系,这个注解是打破死循环所必需的。我们来看看我们的University 和Student 实体。

@Audited将使Hibernate能够管理该实体上的审计(跟踪更改)。

配置

我们来检查一下运行项目所需的配置。

Hibernate Jackson 模块

我们注册一个新的Jackson模块,Spring Boot会自动检测它并将其注册到ObjectMapper bean。

Hibernate Envers

要启用Envers,我们必须通过RevisionRepository扩展我们的存储库。UniversityRepository如下所示:

我们需要为StudentRepository 做同样的事情:

我们还需要在我们的主类上使用注解即@EnableJpaRepositories(repositoryFactoryBeanClass = EnversRevisionRepositoryFactoryBean.class)。

Spring Data Auditing

要启用这个功能,也是需要在主类上使用注解 @EnableJpaAuditing。

总结

本文尝试用一个简单的例子解释如何使用Spring Boot和Hibernate创建REST应用程序,可能会帮助您解决一些Stack Overflow错误。否则的话,您可能需要考虑编写自己的数据传输对象(DTO)。如果需要支持核心Hibernate ORM不支持的数据类型,还需要去查看这个库。

java spring hiberate_Java程序员:Spring Boot和Hibernate一起使用的技巧相关推荐

  1. oracle ocp认证_OCP Oracle认证专业Java SE 8程序员学习指南II-复习和作者对话

    oracle ocp认证 在招聘技术职位时,传统观点认为,没有什么能比有经验的候选人更胜一筹了,而且许多招聘经理通常可能不会在认证方面投入太多. 但是,Oracle Java认证考试当然是一个例外,因 ...

  2. Java程序员应该知道的10个Eclipse调试技巧

    为什么80%的码农都做不了架构师?>>>    Eclipse是众多Java程序员实用的开发工具,其中开发技巧也是繁多,但作为优秀的Java程序员,需要掌握最起码的调试技巧. 1 条 ...

  3. 英语不好学java好学吗_英语不好能学好java,做程序员吗?

    原标题:英语不好能学好java,做程序员吗? 很多想学java的朋友,都存在着这样一个疑惑:我的英语很差劲,对学习java没有影响吗?java编程用到英语的地方很多吧,我英语不好能学好java吗? 学 ...

  4. 读《Java夜未眠程序员的心声》感

    读<Java夜未眠程序员的心声>感 在这个快餐文化盛行的年代,已经很少有人耐的下心来读书了,我指的是大量的读书,作为程序员,你选择了这个行业,就注定了与学习为伍,短短几十年IT业发生了翻天 ...

  5. 最受Java编码员和程序员欢迎的好助手:Android IDE工具和应用

    Android(['ændrɔid])是一个以Linux为基础的半开源操作系统,主要用于移动设备,由Google和开放手持设备联盟开发与领导. Android 系统最初由安迪·鲁宾(Andy Rubi ...

  6. 吐槽java之《程序员的呐喊》读后总结

    <程序员的呐喊>读后总结 --关于java的批判 一.写在总结前面的一些废话 <程序员的呐喊>(后文简称呐喊),是一本非常有趣的散篇,全文都是作者对目前软件开发界的看法,主要翻 ...

  7. 如何使用jquery_好程序员web前端学习路线分享jQuery学习技巧

    好程序员web前端学习路线分享jQuery学习技巧,jQuery在web前端学习中是一个必不可少的内容,很多小伙伴都在学习这阶段的时候遇到问题,今天我们就来聊一下jQuery,让我们一起来看一看吧! ...

  8. 【译】成为优秀程序员(和人类)的101个技巧

    1.擅长谷歌搜索 作为一个编码者,意味着你需要搜索你问题的答案.通过有效地使用谷歌,你将节省很多开发时间. 2.承诺和交付 最好让你的团队知道一项任务将花费三周的时间,并以两种方式交付的事情.通过给予 ...

  9. 如何使用Spring初始化程序创建Spring Boot项目

    你好朋友, 如果您以前使用过Spring框架,则必须意识到,即使要开始使用基本的Spring功能也需要付出一些真正的努力.有了Spring Boot,最初的麻烦就消失了,您可以在数分钟内开始使用. 欢 ...

最新文章

  1. 命名实体识别学习笔记——使用Ltp
  2. 设备连接:Ubuntu16.04 ROS中连接Hokuyo激光雷达UTM-30LX-EW
  3. 计算机绘画作品 星空,关于近期绘画作品《星空系列》的自述:
  4. Spring学习总结(1)- IOC
  5. 【工具】FormatUtil.ava 常用工具类
  6. Nginx反向代理服务器获取不到端口的问题的解决办法
  7. Maven Build Profiles
  8. 2020年最值得关注的28款区块链游戏
  9. SecureCRT 超级终端 不能输入命令
  10. python中成语接龙游戏_python爬虫实现成语接龙1.0
  11. java 句柄无效_Java 关于java.io.IOException: 句柄无效。
  12. 理解浏览器的历史记录
  13. 算法训练 4-2找公倍数
  14. Android NFC详解(高级)
  15. 不清楚用电脑怎么图片转文字?来看看这三个方法吧
  16. 通过DNS2SOCKS建立本地稳定无污染DNS
  17. 爬虫练习:爬取网易云音乐热歌榜全部歌曲的热门评论
  18. led手电筒烧灯珠_LED手电筒不亮了如何进行维修
  19. 杂谈 | 从刘慈欣科幻小说到元宇宙
  20. 12位早起的IT大佬们让小伙伴们都惊呆了

热门文章

  1. MFC关键技术-命令传递机制
  2. 【剑指offer】面试题55 - I. 二叉树的深度(java)
  3. Leetcode--448. 找到所有数组中消失的数字
  4. python url中传递中文_Python编程:URL网址链接中的中文编码与解码
  5. python 获取 字典中的指定键_python中字典方法的详细教程
  6. Linux as4开启telnet,Red hat AS4开启telnet过程
  7. keras安装_代码详解:构建一个简单的Keras+深度学习REST API
  8. MSE和Cross-entropy梯度更新比较
  9. 李航《统计学习方法》笔记
  10. Java加密与解密的艺术~RSA模型分析