栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Seam POJO的手动交易

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Seam POJO的手动交易

如您所知,事务管理是一个跨领域的问题。因此,将代码分散在不是主要关注点的模块中并不是一个好主意。

如果在非EJB环境中使用JTA UserTransaction,则可以使用JTA(Apache Tomcat不支持JTA)。

1°法则

默认情况下 ,所有JSF请求(Seam 2.0+)都 启用 Seam事务管理。

我认为 Seam事务管理 听起来比 Seam管理的 事务
更好。这意味着Seam会在后台谨慎地调用begin和commit。Seam通过使用Seam事务管理器扮演事务管理器的角色

1°场景 :可用POJO + JTA(Apache Tomcat不支持JTA)

Seam使用的事务管理器:org.jboss.seam.transaction.UTtransaction

当JTA可用时,在非EJB环境(战争)中默认启用(JBoss支持JTA)

如果您使用的是JPA EntityManager或Hibernate Session,则需要注册它们以允许Seam管理事务边界

参见9.3。Seam管理的持久性上下文如何设置Seam管理的持久性上下文(使用@In注入)

然后使用@In(作用域为ScopeType.CONVERSATION)注入EntityManager(EntityManager)或Session(hibernate)。

@Name("businessService")public class BusinessServiceImpl implementes BusinessService {    @In    private EntityManager entityManager;    public void doSomething() {        // You do not need to call entityManager().getTransaction().begin();        // because Seam Transaction Manager takes care of it        // By using proxies        // Therefore, if you call entityManager().getTransaction().begin()        // You will get IllegalStateException        // Some EntityManager operations persist, find etc        // You do not need to call entityManager().getTransaction().commit();        // because Seam Transaction Manager takes care of it        // By using proxies    }}

在后台,Seam Transaction
Manager通过调用joinTransaction方法在活动的JTA
UserTransaction中注册EntityManager(JPA)或Session(hibernate)

2°场景 :POJO + RESOURCE_LOCAL(hibernate或JPA)事务

Seam(JPA)使用的事务管理器:org.jboss.seam.transaction.EntityTransaction

Seam(Hibernate)使用的事务管理器:org.jboss.seam.transaction.HibernateTransaction

参见9.3。Seam管理的持久性上下文如何设置Seam管理的持久性上下文(使用@In注入)

在后台,Seam Transaction Manager通过使用代理来处理调用begin和commit的底层技术

3°场景 :EJB

Seam使用的事务管理器:org.jboss.seam.transaction.CMTTransaction

在EJB环境中默认启用。请注意,在这种情况下,Seam不控制容器管理的事务。

问候,



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/406186.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号