BeginTransaction Hibernate必要吗?

Cha*_*ori 10 hibernate transactions

当您只执行一个查询而不删除或更新数据时,是否真的有必要启动事务?

我目前正在使用带有C3p0的Hibernate 4.1.9

例,

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();
Run Code Online (Sandbox Code Playgroud)

问候

JB *_*zet 8

文件说:

数据库或系统,事务边界始终是必需的.在数据库事务之外不会发生与数据库的通信(这似乎使许多习惯于自动提交模式的开发人员感到困惑).始终使用明确的事务边界,即使对于只读操作也是如此.根据您的隔离级别和数据库功能,这可能不是必需的,但如果您始终明确划分事务,则没有任何缺点.当然,即使是读取数据,单个数据库事务也会比许多小事务执行得更好.

(强调我的)