微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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实现感到困惑.

原文地址:https://www.jb51.cc/spring/432117.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐