为什么要使用@Transactional Jboss Seam
Why use @Transactional Jboss Seam
我试图理解为什么在某些情况下我需要使用@Transactional,让我们看看。
如果我在没有 @Transactional 注释的情况下使用此方法,日志中的 jboss return:"Close the connection yourself. Closing connection for you"。
public void doSomething() {
((Session) em.getDelegate()).doWork(new Work() {
@Transactional(TransactionPropagationType.NEVER)
public void execute(Connection connection) throws SQLException {
StringBuilder sqlSP = new StringBuilder();
sqlSP.append("{ call ");
sqlSP.append("myprocedure");
sqlSP.append("(?)}");
connection.setReadOnly(true);
CallableStatement cs = connection.prepareCall(sqlSP.toString());
cs.setInt(1, 1020);
cs.execute();
//FORCE A EXCEPTION and JBOSS SHOW "Closing connection for you"
throw new MyException("FATAL ERROR");
}
});
}
但是当我输入“@Transactional”时,问题就消失了,我不明白为什么。有人可以解释一下吗?
处理数据库调用的标准方法是:
1.打开连接
2.开启会话and/or交易
3.做事
4.关闭交易and/or季
5.关闭连接
这基本上就是该注释为您做的事情 ;) 我强烈建议您了解更多有关处理此类事情的信息。
我试图理解为什么在某些情况下我需要使用@Transactional,让我们看看。
如果我在没有 @Transactional 注释的情况下使用此方法,日志中的 jboss return:"Close the connection yourself. Closing connection for you"。
public void doSomething() {
((Session) em.getDelegate()).doWork(new Work() {
@Transactional(TransactionPropagationType.NEVER)
public void execute(Connection connection) throws SQLException {
StringBuilder sqlSP = new StringBuilder();
sqlSP.append("{ call ");
sqlSP.append("myprocedure");
sqlSP.append("(?)}");
connection.setReadOnly(true);
CallableStatement cs = connection.prepareCall(sqlSP.toString());
cs.setInt(1, 1020);
cs.execute();
//FORCE A EXCEPTION and JBOSS SHOW "Closing connection for you"
throw new MyException("FATAL ERROR");
}
});
}
但是当我输入“@Transactional”时,问题就消失了,我不明白为什么。有人可以解释一下吗?
处理数据库调用的标准方法是: 1.打开连接 2.开启会话and/or交易 3.做事 4.关闭交易and/or季 5.关闭连接
这基本上就是该注释为您做的事情 ;) 我强烈建议您了解更多有关处理此类事情的信息。