gpt4 book ai didi

java - 一遍又一遍地使用相同的 Hibernate Session 是一种好习惯吗

转载 作者:行者123 更新时间:2023-11-29 07:01:02 25 4
gpt4 key购买 nike

我正在开发 JavaFX Hibernate 桌面应用程序。我配置了我的应用程序,以便在应用程序运行到关闭之前使用相同的 session 。我是这样做的:

public static Session getCurrentSession() {
if (sessionFactory != null) {
Session session = sessionFactory.getCurrentSession();
if (session != null) {
return sessionFactory.getCurrentSession();
} else {
session = sessionFactory.openSession();
session.beginTransaction();
return session;
}
}
return null;
}

当用户关闭应用程序时,我运行第二种方法来关闭 session 和 SessionFactory。

public static void closeConnections() {
if (sessionFactory != null) {
if (sessionFactory.getCurrentSession().isOpen()) {
sessionFactory.getCurrentSession().close();
}
sessionFactory.close();
}
}

我是 Hibernate 的新手,请多多关照 PEACE

最佳答案

应将 Hibernate session 视为“单一工作单元”。一个或多个事务可以存在于一个 session 中。在大多数情况下,最佳做法是每个请求一个 session 。在处理请求开始时打开一个 session ,并在最后关闭它。

Hibernate 的一级缓存在“ session ”中维护,因此如果您将它保留在用户 session 中,它将命中“缓存”对象。

Hibernate 具有二级缓存,您必须配置(如果需要)才能利用它。第 2 级基本支持以下内容:查询、具有加载和获取的对象以及集合/关联,并提供跨 Session、SessionFactories 和 Clusters 的缓存对象。

您没有为每个应用程序使用一个 session ,您使用的是“当前 session ”概念,它会打开一个 session 并将其存储在上下文中。如果您不关闭 session ,它将保留在那里。

关于java - 一遍又一遍地使用相同的 Hibernate Session 是一种好习惯吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26150843/

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