xih
日历
导航
首页
发新随笔
发新文章
聚合
管理
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
(2)
给我留言
查看公开留言
查看私人留言
随笔档案
2010年9月 (1)
2009年4月 (1)
2009年3月 (1)
2007年7月 (1)
2007年3月 (1)
2006年5月 (1)
搜索
最新评论
1. re: 导出到word,并产生目录
请问,利用Velocity模板导出word时,怎么生成目录啊?
-- 马银涛
2. re: 导出到word,并产生目录
这是写什么啊,故意放一点点。舍不得啊
--第四代
3. re: 导出到word,并产生目录
特别期望能得到用java代码实现的生成目录和页码的功能。所以希望作者能给与详细的代码,因为这段js我不知道怎么去调。我的QQ:350562587
--王鸿雁
4. re: 自己控制spring中的事务
不错,感谢分享!
--CoderDream
5. re: 导出到word,并产生目录
评论内容较长,点击标题查看
--sunxilai
阅读排行榜
1. 关于java中double型数据的四舍五入与加减乘除(6138)
2. 导出到word,并产生目录(2654)
3. Hibernate中三重关联(map)的应用(725)
4. 自己控制spring中的事务(530)
5. Software caused connection abort 错误(506)
评论排行榜
1. 导出到word,并产生目录(4)
2. 关于java中double型数据的四舍五入与加减乘除(1)
3. 自己控制spring中的事务(1)
4. Hibernate中三重关联(map)的应用(0)
5. Software caused connection abort 错误(0)
自己控制spring中的事务
项目要求能获得CONNECTION便于对数据库的操作,并要求能与spring中的事务处于同一事务中。实现:
1.定义
SanHibernateTransactionManager
类,继承spring中的
HibernateTransactionManager,便于获得HibernateTransactionObject。把这个类注入到spring容器中。
<
bean
id
="transactionManager"
class
="com.san.tools.hibernate.SanHibernateTransactionManager"
>
<
property
name
="sessionFactory"
>
<
ref
bean
="sessionFactory"
/>
</
property
>
</
bean
>
public
class
SanHibernateTransactionManager
extends
HibernateTransactionManager
{
public
Object getTransactionObj()
{
return
super
.doGetTransaction();
}
public
boolean
existsTransaction(Object transaction)
{
return
super
.isExistingTransaction(transaction);
}
public
Session getSession()
{
return
SessionFactoryUtils.getSession(
this
.getSessionFactory(),
true
);
}
public
Session getCurrentSession()
{
HibernateTransactionObject obj
=
(HibernateTransactionObject)
this
.getTransactionObj();
return
obj.getSessionHolder().getSession();
}
}
2.开始事务。
public
void
beginTransaction()
throws
SQLException
{
//
TransactionDefinition.PROPAGATION_REQUIRED:支持当前的事务,如果不存在就创建一个新的。
DefaultTransactionDefinition transactionDef
=
new
DefaultTransactionDefinition(TransactionDefinition.PROPAGATION_REQUIRED);
//
创建一个TransactionStatus
TransactionStatus transactionStatus
=
transactionManager.getTransaction(transactionDef);
//
取得绑定到当前线程上的session。从HibernateTransactionObject中获得,这里修改了spring中HibernateTransactionManager.java文件,
//
将private HibernateTransactionObject改为protected HibernateTransactionObject
Session session
=
transactionManager.getCurrentSession();
if
(session
!=
this
.session)
{
System.err.println(
"
session不是同一对象
"
);
}
//
将transactionStatus保存到集合中
this
.transactionStatuss.add(transactionStatus);
this
.beginTransaction
=
true
;
}
3.提交事务
public
void
commit()
throws
HibernateException,SQLException
{
//
循环TransactionStatus集合,直至第一个transactionStatus被提交时,才真正提交
for
(
int
i
=
transactionStatuss.size()
-
1
;i
>=
0
;i
--
)
{
DefaultTransactionStatus transactionStatus
=
(DefaultTransactionStatus)transactionStatuss.get(i);
transactionManager.commit(transactionStatus);
}
transactionStatuss.clear();
}
4.回滚事务
public
void
rollBack()
{
for
(
int
i
=
transactionStatuss.size()
-
1
;i
>=
0
;i
--
)
{
DefaultTransactionStatus transactionStatus
=
(DefaultTransactionStatus)transactionStatuss.get(i);
transactionManager.rollback(transactionStatus);
}
transactionStatuss.clear();
}
贴出这段代码一是为了共享一点所得,二是希望能指出中间有什么不正确的地方(心里不是很有底
)
posted on 2009-03-30 15:32
费思量
阅读(530)
评论(1)
编辑
收藏
评论:
#
re: 自己控制spring中的事务
CoderDream
Posted @ 2009-03-30 22:55
不错,感谢分享!
回复
更多评论
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
知识库
C++博客
博问
管理
Copyright © 费思量
Powered by:
博客园
模板提供:
沪江博客