Spring中编程式事务处理(使用TransactionTemplate)
Spring的编程式事务处理,需要使用Hibernate事务回调接口,事务回调接口可以管理Hibernate的事务:
TransactionCallbackWithoutResult —— 执行事务没有返回值,例如save、update、delete等等;
TransactionCallback —— 执行事务处理后有返回值,如find要返回结果集(List);
spring相关配置
public void createPerson(final Person person) { transactionTemplate.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED); transactionTemplate.execute(new TransactionCallbackWithoutResult(){ // 使用无返回值的事务回调接口 @Override protected void doInTransactionWithoutResult(TransactionStatus arg0) { getHibernateTemplate().save(person); } });}public Person queryOnePerson(final String hql) { transactionTemplate.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED); return (Person)transactionTemplate.execute(new TransactionCallback(){ // 使用带返回值的事务回调接口 public Object doInTransaction(TransactionStatus arg0) { return getHibernateTemplate().find(hql).get(0); } });}