JPA 2.0 中的会话和事务之间有什么区别?

2022-08-31 20:23:46

我刚刚开始我的JPA 2.0学习,我有这段代码:

em = SessionFactory.startSession();
tx = em.getTransaction();

我的问题是:我不确定我是否完全理解使用会话和使用事务之间的区别。在短短几行中,谁能告诉我它们之间最大的区别吗?谢谢!


答案 1

你去银行存入2张支票,并提取一小笔钱。

所以你排队,直到柜员打开。

您进行首次存款。
然后是你的第二个。
然后你提款。

现在你完成了,你离开了柜员线。

到达柜员就像创建您的会话,现在您在银行中,准备工作。

每个存款和取款都是他们自己包含的工作集,这些是您的交易。

当您完成工作并离开时,您将关闭或放弃会话。


所以,从本质上讲,会话包含您的交易,毕竟如果您从未去银行,则无法进行银行存款,对吗?


答案 2
em = SessionFactory.startSession();

在JPA中,没有会话,也没有会话工厂。SessionFactory是一个特定于休眠的接口,如果您使用JPA,则不应使用该接口(使用Hibernate自己的API或使用Hibernate作为JPA提供程序,但不能同时使用两者。


推荐