为什么要使用@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.关闭连接

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