栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在控制台应用程序中将spring-data-jpa与hibernate一起使用时如何延迟加载

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在控制台应用程序中将spring-data-jpa与hibernate一起使用时如何延迟加载

一种解决方案是通过以下方式制作

User.orders
一个 热切的 收藏

@oneToMany(cascade=CascadeType.ALL, fetch = FetchType.EAGER)private Set<Order> orders = new HashSet<Order>();

默认情况下,实体关联是延迟加载的。这意味着

orders
Set实际上只是一个代理对象,除非您在其上调用方法,否则它不会被初始化。这很好,因为
Order
除非需要它们,否则不会加载关联的对象。但是,如果您尝试在运行的事务之外访问未初始化的集合,则可能会导致问题。

如果您知道在大多数情况下您将需要用户订单,那么使关联热切地获取是有意义的。否则,您将必须确保集合在事务内被初始化/加载。在

OpenSessionInViewFilter
你确定提到品牌,交易停留在请求处理过程中打开,这就是为什么你没有在YOUT的webapp这个问题。

如果必须让它延迟加载,请尝试使用Spring

TransactionTemplate
将代码包装在您的main方法中:

TransactionTemplate transactionTemplate = new TransactionTemplate(transactionManager);transactionTemplate.execute(new TransactionCallbackWithoutResult() {    @Override    protected void doInTransactionWithoutResult(TransactionStatus status) {    ...    }});


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/406130.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号