gpt4 book ai didi

java - 使用 Spring HibernateDaoSupport 进行延迟加载?

转载 作者:行者123 更新时间:2023-11-29 08:18:47 24 4
gpt4 key购买 nike

您好 我正在使用 Spring+Hibernate 开发一个非 Web 应用程序。我的问题是 HibernateDaoSupport 如何处理延迟加载,因为在调用 do DAO 之后, session 关闭。

看看下面的伪代码:

DAO 就像:

CommonDao extends HibernateDaoSupport{
Family getFamilyById(String id);
SubFamily getSubFamily(String familyid,String subfamilyid);
}

域模型是这样的:

Family{
private List<SubFamily> subfamiles;
public List<SubFamily> getSubFamiles();
}

SubFamily{
private Family family;
public Family getFamily();
}

在应用程序中,我从 app-context 获取 DAO 并希望执行以下操作。这是否可能与延迟加载有关,因为 AFAIK 在每个方法(getFamilyById()、getSubFamily())之后 session 都关闭了。

CommonDAO dao=//get bean from application context;
Family famA=dao.getFamilyById(familyid);
//
//Do some stuff
List<SubFamily> childrenA=fam.getSubFamiles();

SubFamily asubfamily=dao.getSubFamily(id,subfamilyid);
//
//Do some other stuff
Family famB=asubfamily.getFamily();

最佳答案

My question is how the HibernateDaoSupport handles lazy-loading , because after a call to DAO, the Session is closed.

DAO 不会为每次调用创建/关闭 session ,他们对此不负责,这通常使用“Open Session in View”模式完成(Spring 为此提供过滤器或拦截器)。但这是针对网络应用程序的。

在 swing 应用程序中,一种解决方案是使用 long session .您必须决定明确定义的点,在该点关闭 session 以释放内存。对于小型应用程序,这通常很简单并且可行。对于更大的(即现实生活中的应用程序),正确的解决方案是每个框架/内部框架/对话框使用一个 session 。它更难管理,但会扩展。

一些您可能想阅读的主题:

关于java - 使用 Spring HibernateDaoSupport 进行延迟加载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2145024/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com