gpt4 book ai didi

Java Hibernate session 没有被正确终止

转载 作者:行者123 更新时间:2023-12-02 02:15:52 25 4
gpt4 key购买 nike

我正在为我的 Java 应用程序使用 Hibernate。

当hibernate打开连接时,JDBC瘦客户端打开一个 session ,如下所示:

enter image description here

完成 Oracle DB 的工作后,我关闭打开的 session 。 session 关闭并处于非 Activity 状态,而不是完全被杀死。我还在关闭 session 之前尝试使用 session.flush() 命令,但它再次不起作用。

我应该怎样做才能完全终止并删除这些 session ?

数据库连接并最终关闭的示例:

Session session = null;
Transaction transaction = null;

try
{
session = DatabaseConnection.GetDatabaseSession();
transaction = session.getTransaction();
transaction.begin();

/*
Something something
*/

transaction.commit();
}
catch (Exception exp)
{
exp.printStackTrace();
}
finally
{
if (session != null && session.isOpen())
{
session.close();
session.flush();
}
}

还有我的 GetDatabaseSession() 方法:

public static Session GetDatabaseSession() throws FileNotFoundException, NullModelException
{
String connectionUrl = "jdbc:oracle:thin:@" + IPADDRESS + ":" + DBPORT + ":" + DATABASE;

Properties properties = new Properties();
properties.put("hibernate.dialect", "org.hibernate.dialect.OracleDialect");
properties.put("hibernate.connection.driver_class", "oracle.jdbc.driver.OracleDriver");
properties.put("hibernate.connection.url", connectionUrl);
properties.put("hibernate.connection.username", USERNAME);
properties.put("hibernate.connection.password", PASSWORD);
properties.put("hibernate.default_schema", SCHEME);
properties.put("hbm2ddl.auto", "update");
properties.put("hibernate.query.substitutions", "true 0, false 1");

return new Configuration()
.addProperties(properties)
.addAnnotatedClass(SOMECLASS.class)
.buildSessionFactory(
new StandardServiceRegistryBuilder()
.applySettings(properties)
.build()).openSession();
}

最佳答案

看起来我必须关闭 SessionFactory 实体才能完全终止我的 Hibernate 打开的 session 。代码如下:

public static SessionFactory sessionFactory = null;

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

解决我的问题的一个间接解决方案是创建 Signleton Hibernate SessionFactory,如下所述:Singleton Hibernate SessionFactory Example

关于Java Hibernate session 没有被正确终止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57304210/

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