java – 通过Spring Hibernate只读数据

前端之家收集整理的这篇文章主要介绍了java – 通过Spring Hibernate只读数据前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

注意到如果我想读取一些数据,如果我没有事务上下文,我将无法这样做,因为

org.hibernate.HibernateException: No Session found for current thread

对于读取数据,通常不需要事务.

因此,为了让Spring管理会话,即使对于只读操作,它也需要进行交易…?

这不是开销吗?

PS.I不想手动打开和关闭会话…

非常感谢.

最佳答案
@Transactional告诉spring打开和关闭一个会话,除了指示它启动并提交一个事务.这不是很简单,但它是如何工作的.因此,如果您没有@Transactional,则不会打开任何会话.以下是您的选择:

>使用@Transactional(readOnly = true) – 目的是拥有只读事务.我推荐一个
>使用注入了@PersistenceContext的JPA EntityManager.它将为每次调用打开一个新的基础会话.不是那么好的选择.但是您应该考虑将EntityManager与readOnly = true事务一起使用
>使用其他方面/拦截器/过滤器来打开和关闭会话.这很难,你最终会对hibernate当前会话概念的spring实现感到困惑.

猜你在找的Spring相关文章