gpt4 book ai didi

java - 为什么使用@Transactional Jboss Seam

转载 作者:行者123 更新时间:2023-12-01 10:31:23 25 4
gpt4 key购买 nike

我试图理解为什么在某些情况下需要使用@Transactional,让我们看看。

如果我在没有 @Transactional 注释的情况下使用此方法,jboss 将在日志中返回:“您自己关闭连接。为您关闭连接”。

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. 开放 session 和/或交易3.做事4. 结束交易和/或季节5.关闭连接

这基本上就是该注释为您做的事情;)我强烈建议您了解更多有关处理此类事情的信息。

关于java - 为什么使用@Transactional Jboss Seam,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35063824/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com