Spring 的 @Transactional
2014-06-26 15:01
99 查看
Spring业务的传达行动 在service类前加上@Transactional,声明这个service一切办法需求业务管理。每一个业务办法开始时都会翻开一个业务。 Spring默许情况下会对运行期破例(RunTimeException)进行业务回滚。这个破例是unchecked 假如遇到checked意外就不回滚。 如何改动默许规矩: 1 让checked破例也回滚:在整个办法前加上 @Transactional(rollbackFor=Exception.class) 2 让unchecked破例不回滚: @Transactional http://www.metabase.cn (notRollbackFor=RunTimeException.class) 3 不需求业务管理的(只查询的)办法:@Transactional(propagation=Propagation.NOT_SUPPORTED) 在整个办法运行前就不会敞开业务 还能够加上:@Transactional(propagation=Propagation.NOT_SUPPORTED,readOnly=true),这样就做成一个只读业务,能够提高效率。 各种特点的含义: REQUIRED:业务办法需求在一个容器里运行。假如办法运行时,现已处在一个业务中,那么加入到这个业务,否则自个新建一个新的业务。 NOT_SUPPORTED:声明办法不需求业务。假如办法没有相关到一个业务,容器不会为他敞开业务,假如办法在一个业务中被调用,该业务会被挂起,调用完毕后,原先的业务会康复履行。 REQUIRESNEW:不论是否存在业务,该办法总汇为自个建议一个新的业务。假如办法现已运行在一个业务中,则原有业务挂起,新的业务被创立。 MANDATORY:该办法只能在一个现已存在的业务中履行,业务办法不能建议自个的业务。假如在没有业务的环境下被调用,容器抛出破例。 SUPPORTS:该办法在某个业务规模内被调用,则办法变成该业务的一部分。假如办法在该业务规模外被调用,该办法就在没有业务的环境下履行。 NEVER:该办法绝对不能在业务规模内履行。假如在就抛破例。只有该办法没有相关就任何业务,才正常履行。 NESTED:假如一个活动的业务存在,则运行在一个嵌套的业务中。假如没有活动业务,则按REQUIRED特点履行。它使用了一个独自的业务,这个业务具有多个能够回滚的保留点。内部业务的回滚不会对外部业务形成影响。它只对DataSourceTransactionManager业务管理器起效。 业务圈套-1 清单 1. 使用 JDBC 的简略数据库刺进 view plaincopy to clipboardprint? @Stateless public class TradingServiceImpl implements TradingService { @Resource SessionContext ctx; // http://www.metabase.cn @Resource(mappedName="java:jdbc/tradingDS") DataSource ds; public long insertTrade(TradeData trade) throws Exception { Connection dbConnection = ds.getConnection(); try { Statement sql = dbConnection.createStatement(); String stmt = "INSERT INTO TRADE (ACCT_ID, SIDE, SYMBOL, SHARES, PRICE, STATE)" + "VALUES (" + trade.getAcct() + "','" + trade.getAction() + "','" + trade.getSymbol() + "'," + trade.getShares() + "," + trade.getPrice() + ",'" + trade.getState() + "')"; sql.executeUpdate(stmt, Statement.RETURN_GENERATED_KEYS); ResultSet rs = sql.getGeneratedKeys(); if (rs.next()) { return rs.getBigDecimal(1).longValue(); } else { throw new Exception("Trade Order Insert Failed"); } } finally { if (dbConnection != null) dbConnection.close(); } } }
相关文章推荐
- Spring 的@Transactional 如何开启事务
- spring事物回滚操作-@Transactional
- Spring 之注解事务 @Transactional
- Spring中的@Transactional深度分析之二
- @Transactional注解在spring中的应用-事务
- 8 -- 深入使用Spring -- 6...3 使用@Transactional
- spring事物配置,声明式事务管理和基于@Transactional注解的使用
- spring,mybatis事务管理配置与@Transactional注解使用
- spring事物配置,声明式事务管理和基于@Transactional注解的使用
- spring,mybatis事务管理配置与@Transactional注解使用[转]
- Spring 之注解事务 @Transactional
- spring事物配置,声明式事务管理和基于@Transactional注解的使用 [转]
- spring事物配置,声明式事务管理和基于@Transactional注解的使用
- Spring 之注解事务 @Transactional
- spring事物配置,声明式事务管理和基于@Transactional注解的使用
- spring事物配置,声明式事务管理和基于@Transactional注解的使用
- Spring中@Transactional用法深度分析之一
- Spring中@Transactional事务回滚实例及源码
- [转]使用spring中的@Transactional注解时,可能需要注意的地方
- spring 事务 @Transactional注解参数详解