我在Hibernate的Internet上看到了一些transaction.commit()用于select语句的示例。下面是示例代码。
transaction.commit()
public static List<?> list(Class<?> className,int start,int limit,SearchFilter[] searchFilter){ Session session = HibernateUtil.getSessionFactory().openSession(); Transaction transaction = null; try { transaction = session.beginTransaction(); Criteria criteria = session.createCriteria(className); criteria.setFirstResult(start); criteria.setMaxResults(limit); for(SearchFilter sf : searchFilter){ String[] values = sf.getValue(); if(values != null){ if(values.length == 1) { criteria.add(Restrictions.eq(sf.getField(), values[0])); }else{ criteria.add(Restrictions.in(sf.getField(), values)); } } } List<?> Objects = criteria.list(); transaction.commit(); return Objects; }catch (Exception e) { transaction.rollback(); e.printStackTrace(); }finally{ session.close(); } return null; }
为什么我们要为select语句开始并提交事务?
一切都在交易范围内发生。有时,软件会自动为您管理交易,而hibernate则不会。无论是只读还是否,在hibernate状态下都必须打开和关闭事务。