hibernate教程

     

如何在Hibernate将java.time.YearMonth类型存储为整数或日期

1299

Hibernate Types是Hibernate默认不支持的一组额外类型。其中一种类型是java.time.YearMonth。这里展示一个Spring Boot应用程序,说明是如何使用Hibern.

使用JPA和Hibernate延迟加载实体属性的最佳方法 - Vlad Mihalcea

1741 1 8K
获取实体时,也会加载所有属性。这是因为每个隐式使用@Basic实体属性提取策略都默认FetchType.EAGER。但是,属性获取策略可以设置为FetchType.LAZY,在这种情况下,实体属性只有.

Hibernate/JPA中如何合并实体集合?

1570 9K

正确合并集合并不是一件容易的事!推荐Vlad的例子文章的Spring Boot示例,只有手工进行集合合并。关键点: 删除传入集合中不再存在的现有数据库行。 更新现有的可以在传入集合中找到的数据库行。 .

如何通过JOIN FETCH避免Hibernate/JPA的LazyInitializationException?

1046 3K
如果你从来没有遇到过著名LazyInitializationException, 那么你实际上没有真正使用Hibernate过:),但是,如果你遇到过,你是将LAZY懒加载切换到AGER立即加载,那么.

使用JPA和Hibernate调用存储过程的最佳方法 - Vlad Mihalcea

4451 1 7K

在本文中,您将学习使用JPA和Hibernate时调用存储过程的最佳方法,以便尽快释放底层JDBC资源。我决定写这篇文章,因为Hibernate处理存储过程的方式会导致ORA-01000: maxim.

为什么在Hibernate/JPA实体中避免使用Lombok @EqualsAndHashCode?

3772 13K
Lombok 是一个非常受欢迎和有用的图书馆。尽管如此,请注意Lombok @EqualsAndHashCode对实体的影响可能会带来严重问题。实体应实施equals()和hashCode()。主要问.

使用Spring post commit注意点

1021

Spring post-commit钩子会一直保持数据库连接打开直到完成,因此使用afterCommit方法实现提交后的钩子时,其中任务不能耗时过长,因为这是数据库连接一直打开,没有关闭归还到连接池,.

如何使用Spring Projections和Join实现DTO?

2484 1 16K

SQL JOINS和DTO是我们打击N + 1问题的好办法,可参考DTO标签看看其他方式,这里,我们通过使用Spring Projections(DTO)和通过JPQL和本机SQL(用于MySQL)编.

如何在使用Open-Session in View时避免性能损失?

1918 12K
Open-Session In View会在你即使没有使用惰性实体情况下加载且初始化并获取它们,这会导致严重的性能损失。Open-Session in View 反模式在Spring Boot中默认是.

Hibernate/JPA中@ElementCollection如果没有@OrderColumn性能会降低

2972 3 2K

@ElementCollection是Hibernate/JPA中代表父子关系的多方注释,但是没有@OrderColumn的@ElementCollection插入和删除容易出现性能损失,而使用@Or.

如何通过ResultTransformer和原生SQL或JPQL生成DTO?

1994 6K

获取超出需要的数据更容易导致性能损失。使用DTO可以让我们只提取所需的数据。在这个应用程序中,我们依赖于Hibernate ResultTransformer和原生SQL生成DTO?对于不可变的DTO.

如何通过构造函数和JPQL生成DTO?

1267 2K

获取超出需要的数据更容易导致性能损失。使用DTO可以让我们只提取所需的数据。在这个应用程序中,我们依赖于Constructor Expression和JPQLL生成DTO。点击DTO标签可获得更多生成.

如何通过javax.persistence.Tuple和JPQL提取DTO?

2276 2K

从实体中获取DTO数据,也就是从DDD聚合中获取DDD值对象有多种方式,如果我们不使用DTO方式,直接返回完整实体聚合,容易导致性能损失,使用DTO可以让我们只提取所需的数据。在这个应用程序中,我们展.

如何通过javax.persistence.Tuple和原生SQL生成DTO?

1774 4K

从实体中获取DTO数据,也就是从DDD聚合中获取DDD值对象有多种方式,如果我们不使用DTO方式,直接返回完整实体聚合,容易导致性能损失,使用DTO可以让我们只提取所需的数据。在这个应用程序中,我们展.

如何通过SqlResultSetMapping和NamedNativeQuery生成DTO?

1714 4K

获取超出你实际需要的数据容易导致性能损失。使用DTO可以让我们只提取所需的数据。在这里我们展示依赖SqlResultSetMapping,NamedNativeQuery和EntityManager实.

如何通过Hibernate/JPA的SqlResultSetMapping生成需要数据的DTO?

5204 5K

获取比你实际所需要的更多数据并不好,此外,当您不打算修改实体时,获取实体(通过在持久化上下文中加入的方式获取实体)是最常见的错误之一,它隐含性能损失。因此,使用DTO可允许我们仅提取所需的数据。在这个.

Hibernate/JPA中@OneToOne和@MapsId的使用

5394 3

双向@OneToOne的效率低于与父表共享主键的单向@OneToOne。因此,不要使用双向@OneToOne,最好是依靠单向@OneToOne和@MapsId。第一步:在子实体这边使用@MapsId@.

如何使用JPA回调?

1524 2K

当您需要将自己的操作方法绑定到某个实体生命周期事件时,请不要重新发明轮子。只需依靠内置的JPA回调。本应用是启用JPA回调(Pre/ PostPersist,Pre/ PostUpdate,Pre/ .

Hibernate/JPA如何保证不生成多余的SQL语句?

1541 7K

对SQL语句如果没有计数和断言的情况下,很容易失去对当前场景背后执行的SQL的控制,从而导致性能损失。本应用是计数和断言“幕后”触发的SQL语句的示例。计数SQL语句非常有用,以确保您的代码不会生成比.

Hibernate/JPA批插入中使用PostgreSQL的(BIG)SERIAL自增主键

2737 1 12K
在PostgreSQL中使用GenerationType.IDENTITY会失效批处理能力。因此使用其(BIG)SERIAL,它的作用类似MySQL的 AUTO_INCREMENT。这里使用Gener.

如何在SpringBoot中使用Hibernate/JPA的@NaturalId?

2452 8K

第一步,在实体中标记你的业务字段为@NaturalId:@Entitypublic class Product implements Serializable {    private static .

Hibernate/JPA中如何使用JOIN FETCH获取一个懒加载集合?

2435 2K

默认情况下,如果使用@ElementCollection标注一个实体中的子集合,这个集合是懒加载的,不会随着这个实体加载而立即加载:@Entitypublic class ShoppingCart i.

Hibernate/JPA中避免save()冗余调用

1746 2 2K

对于托管实体调用save是一个坏主意,因为Hibernate使用脏检查机制来帮助我们避免这种冗余调用。关键点: Hibernate对于托管实体会触发UPDATE语句,无需显式调用save()方法 在幕.

Hibernate如何避免使用GenerationType.AUTO生成主键?

3743 7K
在MySQL中,TABLE生成器是您总是希望避免的。永远不要用它!在MySQL和Hibernate 5中,GenerationType.AUTO生成器类型将导致使用TABLE生成器。这增加了显着的性能.

如何使用Hibernate/JPA的JPQL/HQL查询提取?

2346 2K

当不能直接提取时,我们可以考虑JPQL / HQL查询提取。本文的应用程序展示如何通过JpaRepository,EntityManager和Session实现查询概念的证明。关键点: 对于JpaRe.

Hibernate/JPA中如何正确使用@OneToMany双向关系?

7780 3 3K

在实施@OneToMany双向关系时,有很多方法会搞砸。这里说明一下最佳实践方式:关键点: 始终从父级到子级实现级联 在父类上使用mappedBy 在父类上使用orphanRemoval以删除父类不再.

如何在Hibernate/JPA的实体和查询中使用Java 8 Optional?

1950 2K

将Java 8 Optional视为处理所有的空值的“银弹”可能会带来更多弊大于利。合适它们是最好的方法。本文的应用程序是在实体和查询中如何正确使用Java 8 Optional的概念证明。关键点: .

Hibernate如何启用高性能的脏数据检查机制?

714 3K
在Hibernate版本5之前,脏数据检查机制依赖于Java Reflection API,Java Reflection一直很慢,会降低性能;从Hibernate版本5开始,脏检查机制依赖于字节码增.

什么是Hibernate N+1性能问题?

1237
N + 1是一个可能导致严重性能损失的问题,为了消除它,你必须找到/识别它,但这并不总很容易,但这里列举导致N + 1的最常见场景之一。描述: N + 1是一个延迟抓取的问题(但是,急切加载也不能免除.

如何通过Hibernate/JPA的Proxy实现父子关联的实体插入?

1614 1

执行更多的SQL总是性能损失。重要的是努力尽可能地减少它们的数量,并且依赖于指向引用是一种易于使用的优化方式。当一个带有指向其父实体的子实体持久化并时,Proxy可能很有用。在这种情况下,从数据库中获.