发帖    主题    评论    推荐    标签    作者    订阅    查搜    注册   登陆   关注
 
面向对象 设计模式 领域驱动设计 企业架构 框架 开发教程 微服务 CQRS 扩展性 并发编程 事件溯源 分布式 SOA
1 2 下一页 Go 2

大家好,Banq,请教EJB事务

         
2006-07-19 09:18
赞助商链接

你们好,我现在业务层用session bean,DAO层用HIBERNATE
现在问题是:SESSION BEAN本身有事务,HIBERNATE操作也有事务,请问DAO中的DB操作事务是由谁的事务来控制的?
   第一:如果是HIBERNATE的事务,则EJB的事务做什么用?
   第二:如果是EJB的事务控制,则HIBERNATE的事务做什么用?

2006-07-23 14:24

事务范围。SessionBean一般是JTA事务, Hibernate一般是JDBC事务,两者可嵌套

2007-04-20 14:19

正好我也有这方面的问题,想再明确一下。
我现在用Jdon框架,在DAO的实现里CRUD时,应该是用了Hibernate的事务吧,比如
Transaction tx=session.beginTransaction();
....
tx.commit();
这样,那现在是在Service的实现中,如何实现多个操作的事务控制?可以用JTA吗?

可以嵌套这两种事务吗?

是不是象下面这样?奇怪的是怎么要处理这么多异常啊?是不是我做错了什么?


[该贴被wind13于2007年04月20日 14:22修改过]

2007-04-20 14:20


是不是象下面这样?奇怪的是怎么要处理这么多异常啊?是不是我做错了什么?

UserTransaction tx = null;
Context ctx;
try {
ctx = new InitialContext();
tx = (UserTransaction)ctx.lookup("javax.transaction.UserTransaction");
tx.begin();
// 此处执行DAO中的操作,在DAO的实现中又有上面提到的hibernate事务处理。
someDao.createSome(someModel);
someModel.setValue(newValue);
someDao.updateSome(someModel);
tx.commit();
} catch (NamingException e) {
e.printStackTrace();
rollbackTransaction(tx);
} catch (NotSupportedException e) {
e.printStackTrace();
rollbackTransaction(tx);
} catch (SystemException e) {
e.printStackTrace();
rollbackTransaction(tx);
} catch (SecurityException e) {
e.printStackTrace();
rollbackTransaction(tx);
} catch (IllegalStateException e) {
e.printStackTrace();
rollbackTransaction(tx);
} catch (RollbackException e) {
e.printStackTrace();
rollbackTransaction(tx);
} catch (HeuristicMixedException e) {
e.printStackTrace();
rollbackTransaction(tx);
} catch (HeuristicRollbackException e) {
e.printStackTrace();
rollbackTransaction(tx);
}

// 这里把回滚的操作抽成方法了,要不代码更多。
private void rollbackTransaction(UserTransaction tx) {
if(tx != null){
try {
tx.rollback();
} catch (IllegalStateException e1) {
e1.printStackTrace();
} catch (SecurityException e1) {
e1.printStackTrace();
} catch (SystemException e1) {
e1.printStackTrace();
}
}
}

奇怪的是怎么要处理这么多异常啊?是不是我做错了什么?
[该贴被wind13于2007年04月20日 14:22修改过]

2007-04-20 20:52

本应该新起个贴子的,查了一下论坛,正好以前有类似问题,就接着发了,希望有高手给回复一下。

2Go 1 2 下一页

赞助商链接

赞助商链接

返回顶部

移动版 关于本站 使用帮助 联系反馈 最佳分辨率1366x768
OpenSource JIVEJDON Powered by JdonFramework Code © 2002-20 jdon.com