如果您的数据库事务应该是只读的,那么您是提交还是回滚?有什么理由去做其中一个吗?其中一种方法是否可以提高数据库性能?
答案 0 :(得分:3)
某些RDMS(至少是Oracle)具有READ ONLY隔离级别。否则,我更喜欢ROLLBACK
,因为它不会在事务日志中创建一个条目(从性能的角度来看稍微好一点)。
<强>更新强>
一些解释。
大多数RDMS记录所有已提交的事务和与事务关联的更改。即使未进行任何更改,服务器也会记录事务。我没有看到通过存储无用数据浪费服务器资源的任何要点。
答案 1 :(得分:1)
我同意Downpour046 我执行以下操作以进行只读操作。像魅力一样,没有问题。
Session session;
synchronized (this) {
session = currentSession();
Query rowResult = session.createSQLQuery(rowQuery).addEntity(table.getClass());
tableRow = rowResult.list().toArray();
}
public Session currentSession() {
Session s = (Session) session.get();
// Open a new Session, if this thread has none yet
if (s == null || !s.isOpen()) {
s = sessionFactory.openSession();
// Store it in the ThreadLocal variable
session.set(s);
}
return s;
}