gpt4 book ai didi

hibernate - hibernate是在内部使用jdbc还是在内部使用JTA,或者它是可配置的?”

转载 作者:行者123 更新时间:2023-12-04 09:55:48 24 4
gpt4 key购买 nike

我是 hibernate 的新手,并开始研究 hibernate 。我要学习的章节将JDBC()与 hibernate 结合使用。我的第一个问题是
hibernate 是内部使用jdbc还是内部使用JTA 来执行持久化和获取操作?
但是我在这里也可以看到对JTA的提及,例如getCurrentSeessionSession()方法获取与当前JTA事务关联的 session 。问题:-基本上,我想在 hibernate 状态下了解JTA和jdbc的作用。

问题2:-我可以在 hibernate 状态下的任何操作中看到以下代码段

try{ 
session=factory.openSession();
tx=session.beginTransaction();
session.save(myClass);
tx.commit();
}
finally{
session.close();
}

在这里,我想了解第//tx = session.beginTransaction();行的作用。据了解,每个 session 将使用一个连接。所以即使
如果我们从同一 session 开始多个事务,则将使用相同的连接。一旦我们提交了特定交易,所有交易
从同一 session 创建的内容将被提交一次。那么我们试图通过//tx = session.beginTransaction();实现什么呢? ?

最佳答案

Does hibernate uses jdbc internally or JTA internally to perform persist and get operations?



JDBC和JTA不可互换。 Java应用程序用来与数据库进行交互的 JDBC is the standard APIJTA is the standard API,用于管理一项或多项资源中的交易。对于您的问题,最接近的答案是“内部”,Hibernate使用JDBC与数据库进行交互。

Like getCurrentSeessionSession() method obtains the session associated with current JTA transaction.



不完全是。 SessionFactory.getCurrentSession()根据 current session context获得 session 。该策略的一种实现是 JTA session context,它实际上将 session 与JTA事务相关联。 JTA事务没有“拥有”一个Hibernate session ,因为JTA对Hibernate一无所知,而且说Hibernate在内部使用JTA是不正确的。它仅具有与JTA集成并使其管理事务的能力。

here i want to understand the role of line // tx=session.beginTransaction();



它以您正在使用的任何事务处理机制开始事务,这由所使用的 TransactionFactory决定。例如,使用JDBCTransactionFactory,它仅确保 auto-commit已关闭,以便在事务完成之前不会提交更改。

once we commit the specific transaction all transactions created from a same session will be commited once.



通常情况下,一个 session 仅与一个事务相关联。对Session.beginTransaction()的多次调用将只是 return the same underlying Transaction

So what we are trying to achieve with // tx=session.beginTransaction()



就是这样:告诉正在管理交易的人,您将开始新的交易。这意味着直到commit()或rollback()为止发生的所有事情都应该具有 database transaction的普遍接受的语义。

关于hibernate - hibernate是在内部使用jdbc还是在内部使用JTA,或者它是可配置的?”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7455717/

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