当我使用jpa(eclipselink)执行只读查询时,EJB(glassfish)是否会创建新事务。
答案 0 :(得分:0)
这取决于@TransactionAttribute
默认设置为Required
,这意味着如果它未在事务中运行,则会启动一个。
TransactionAttribute批注的值由枚举TransactionAttributeType定义。如果未指定TransactionAttribute批注,并且bean使用容器管理的事务划分,则假定REQUIRED事务属性的语义。
Required
的语义:
如果客户端在客户端与事务上下文关联时调用企业bean的方法,则容器在客户端的事务上下文中调用企业bean的方法。
如果客户端在客户端未与事务上下文关联时调用企业bean的方法,则容器会在将方法调用委托给enterprise bean方法之前自动启动新事务。
更多信息: http://docs.oracle.com/javaee/6/api/javax/ejb/TransactionAttribute.html