码迷,mamicode.com
首页 > 编程语言 > 详细

java的事务运用

时间:2014-12-11 00:12:45      阅读:304      评论:0      收藏:0      [点我收藏+]

标签:io   ar   os   sp   for   java   on   div   art   

这个若要想成为公共的就要写在baseDaoImpl中。因为这个要继承 HibernateDaoSupport,然后在dao及其他相关里的进行继承、实现
session= getHibernateTemplate().getSessionFactory().openSession();

这句是关键在之前没有写这句时总是会报一个org.springframework.transaction.TransactionSystemException:
Could not commit Hibernate transaction; nested exception is org.hibernate.TransactionException: Transaction not successfully started
at org.springframework.orm.hibernate3.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:661)
不过在用了opensession这个方法后必须在后面给它手动关闭session.close()
/****
* 这是利用事务来进行批处理的操作 用户只需传入hql的集合,
*/
public List <String> deleteSiteBySite(final List<String> list )
{
// TODO Auto-generated method stub
return (List <String>) this.getHibernateTemplate().execute(new HibernateCallback()
{
public Object doInHibernate(Session session)throws HibernateException, SQLException
{
List <String> result=new ArrayList<String>();
session= getHibernateTemplate().getSessionFactory().openSession();
session.beginTransaction();
// TODO Auto-generated method stub
try
{

String re="";
for(int i=0; i<list.size();i++)
{
int a = session.createSQLQuery(list.get(i)).executeUpdate();
if(a<0)
{
re=re+"*";
}
}
if (re=="")
{
session.getTransaction().commit();
result.add("success");
}
else
{
session.getTransaction().rollback();
result.add("error");
}
}
catch (Exception e)
{
session.getTransaction().rollback();
result.add("error");
}
finally{session.close();}
return result;
}
});
}

 附上两张出错的图片 方便以后查阅bubuko.com,布布扣

 

 bubuko.com,布布扣

 

java的事务运用

标签:io   ar   os   sp   for   java   on   div   art   

原文地址:http://www.cnblogs.com/tianyiwuying/p/4156594.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!