开始事务时是否需要使用Hibernate?

10

当你只需要执行一个查询,而不删除或更新数据时,是否真的需要开始一个事务?

我目前正在使用Hibernate 4.1.9和C3p0。

例如,

session session = hibernateutil.getsessionfactory().opensession();
Transaction tx = session.beginTransaction();
List messages = session.createQuery("from Message m order by m.text asc").list();  
tx.commit();
session.close();

致以问候

1个回答

8

该文档指出:

数据库或系统事务边界总是必要的。在没有数据库事务的情况下,不能与数据库进行通信(这似乎使许多开发人员感到困惑,他们习惯了自动提交模式)。即使是只读操作,也要始终使用明确的事务边界。根据您的隔离级别和数据库功能,这可能不是必需的,但如果您始终明确标记事务,则没有缺点。当然,单个数据库事务甚至对于读取数据也会比许多小事务执行得更快。

(强调是我的)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接