• SQL JOINS和DTO是我们打击N + 1问题的好办法,可参考#DTO标签看看其他方式,这里,我们通过使用Spring Projections(DTO)和通过JPQL和本机SQL(用于MySQL)编写各种Join联接的概念证明。 1. 定义多个 icon
  • Lombok 是一个非常受欢迎和有用的图书馆。尽管如此,请注意Lombok @EqualsAndHashCode对实体的影响可能会带来严重问题。实体应实施equals()和hashCode()。主要问题是Hibernate要求实体在其所有状态转换(瞬态,附加,分离 和删除)中等于自身 icon
  • icon
  • 获取实体时,也会加载所有属性。这是因为每个隐式使用@Basic实体属性提取策 icon
  • 您可能已经知道,Spring Data JPA是更大的Spring Data系列的一部分。在本文中,我们将使用Spring Data JPA和Spring Boot与MariaDB数据库进行通信。 依赖: icon
  • 这是一个Spring Boot应用程序展示案例,它读取一个相对较大的JSON文件(200000多行),并使用ForkJoinPoolAPI和HikariCP 通过批处理将其内容插入MySQL 。 关键点:1.  使用MySQL  json类 icon
  • 这是展示一个SpringBoot应用程序,它使用两个数据源(两个MySQL数据库,一个命名players_db,一个命名coaches_db)和两个连接池(每个数据库使用自己的HikariCP连接池,具有不同的设置)。基于上述配置,从两个不同的提供程序配置两个连接池非常容易。 icon
  • 当试图在JPQL查询使用SQL函数时,如果Hibernate无法识别就不能分析这个JPQL语句,那么就导致exceptions抛错。例如,Hibernate无法识别MySQL的concat_ws函数。这个应用程序是一个基于Hibernate 5.3的Spring Boot应用程序,它 icon
  • 这是一个Spring Boot应用程序案例,展示如何使用Hibernate映射自然业务键  @NaturalId。 关键点:1.在实体(例如,Product)中,标记应作为自然ID 的属性(业务键)  @NaturalId; 通常,实体中只 icon
  • 获取超出需要的数据更容易导致性能损失。使用DTO可以让我们只提取所需的数据。在这个应用程序中,我们依赖于Hibernate ResultTransformer和原生SQL生成DTO? 对于不可变的DTO值对象和可变的DTO对象使用不同的方式,不可变 icon
  • Open-Session In View会在你即使没有使用惰性实体情况下加载且初始化并获取它们,这会导致严重的性能损失。Open-Session in View 反模式在Spring Boot中默认是激活的。如果您更喜欢使用它,那么需要尝试尽可能减轻性能损失:一种优化是将标记Conn icon
  • 正确合并集合并不是一件容易的事!推荐Vlad的例子文章的Spring Boot示例,只有手工 icon
  • Hibernate Types是Hibernate默认不支持的一组额外类型。其中一种类型是java.time.YearMonth。这里展示一个Spring Boot应用程序,说明是如何使用 icon
  • 获取超出需要的数据更容易导致性能损失。使用DTO可以让我们只提取所需的数据。在这个应用程序中,我们依赖于Constructor Expression和JPQLL生成DTO。点击#DTO标签可获得更多生成DTO的方式。同样,在DDD编程中,从DDD聚合中获取DDD值对象有多种方式,如果 icon
  • 如果你从来没有遇到过著名LazyInitializationException, 那么你实际上没有真正使用Hibernate过:),但是,如果你遇到过,你是将LAZY懒加载切换到AGER立即加载,那么这里建议对你有用。 通常情况下,当我们遇到一个L icon
  • Spring post-commit钩子会一直保持数据库连接打开直到完成,因此使用afterCommit方法实现提交后的钩子时,其中任务不能耗时过长,因为这是数据库连接一直打开,没有关闭归还到连接池,在负载很重的情况下,会导致连接池资源耗尽。因此,避免在提交后执行耗时的任务,如下:@ icon