cdiアプリケーションとして使用されるBeanには、jpaの読み込み/書き込みが含まれていますか、またはDB stuffのために常にEJBを使用する必要がありますか?私はインターネット上のどこかでcdiがdbのものを含んでいないと読んでいます。本当?CDI BeanとJPAトランザクション
2
A
答えて
3
いつもの答えはそれが依存している...それはあなたの特定のユースケースによって異なります。
Java EEでは、後でEntityManager
を挿入してJPAエンティティの読み取り/書き込みを実行する場所として@EJB
beansを使用します。 なぜこれを行うのですか? Transactions
が必要なためです。デフォルトでは、@Stateless
でBeanに注釈を付けると、その中のすべてのメソッドはTransactional
となり、すべて無料で取得できます。トランザクションを使用すると、アトミックな方法で複数のテーブルを更新できます。これらのテーブルはすべて成功するか失敗します。
例:あなたは、表A、B、Cを更新すると、あなたが成功するためにそれらのすべてまたはトランザクションがロール担保になりたいupdateABC()
あなたの方法では :
@Stateless
public class MyClass{
@PersistenceContext
EntityManager em;
public void updateABC(){
A a= em.find(A.class, aId);
//here update some fields on the entity "a"
B b= em.find(B.class, bId);
//here update some fields on the entity "b"
C c= em.find(C.class, cId);
//here update some fields on the entity "c"
}
}
そしてこれがそれです。 ..あなたは終わった。あなたのすべての更新は、魔法のようにDBに保存されます。
このようなものが必要ですか? EJBのために行く。 あなたはそうする必要はありませんか?あなたは手動で仕事をしたいですか?
1
YES、Java EE 7サーバーを使用している場合は、@Transactional
を使用して、DBIを管理できます。
のJavadocを見てみましょう:
public class EntityManagerProducer {
@PersistenceContext
private EntityManager em;
@Produces
@RequestScoped
public EntityManager getEntityManager() {
return em;
}
}
:
public MyCDIBean{
@Inject
private EntityManager m_entityManager;
@Transactional
public doStuff(){
// Here you are in a Transaction
m_entityManager.persist(...)
}
}
EntityManager
を生成するためにプロデューサーを使用して:あなたはdoStuff
方法@Transactional
注釈されているCDI Beanを持つことができます例えばhttp://docs.oracle.com/javaee/7/api/javax/transaction/Transactional.html
関連する問題
- 1. CDI @ Beanのトランザクション属性
- 2. CDIダイナミックBeanインスタンス
- 3. JPAクエリを実行しているCDI Bean
- 4. CDI BeanをPayara 4.1.1
- 5. リクエストスコープのCDI BeanからセッションスコープのCDI Beanへのアクセスを取得
- 6. JAVA EE - EJB/CDI/JPA:
- 7. トランザクションエラーJTA DATASOURCE JPA CDI
- 8. CDI Beanとは何ですか?
- 9. @Asynchronous CDIイベントと@Named beanの@Observesメソッド
- 10. Quartz2とBean CDIを使用する
- 11. Undertow Websocket Bean Injection CDI Issue
- 12. @RequestScoped @MessageDriven BeanへのCDIインジェクション
- 13. CDIマネージドBeanとステートフルセッションBeanを使用したLazyInitializationException
- 14. playframework 1.2.x:await/asyncとJPAトランザクション
- 15. OpenSessionInViewとトランザクション? (Spring/Hibernate/JPA)
- 16. EJB3/JPA @トランザクション
- 17. JPA/@PostPersist @PostUpdate - トランザクション
- 18. JPA並行トランザクション
- 19. サーブレットにCDIセッションBeanを挿入する
- 20. CDI Beanは、最終的な方法
- 21. JSF CDI:会話スコープBeanのベストプラクティス
- 22. JSF2マネージドBean参照問題:CDI注入?
- 23. Java BeanがCDI Nullポインタは例外
- 24. primfaces graphicimage CDI Beanが動作しない
- 25. @ CDIを使用したサービススレッドのトランザクションEntityManager
- 26. JSFマネージドBeanをCDIマネージドBeanに移行する
- 27. JPA:複数のトランザクション
- 28. JPA CDIエンティティにDAOを挿入する
- 29. JPAトランザクション後のSpringコミットJMSトランザクション
- 30. ステートレスBeanへの呼び出しでJPAトランザクションのロールバックが失敗する
一般に、1つのセンテンスはインターネット上で良い質問をしません。質問に文脈を追加できますか? – halfer
ok私はもっと見てみてください – Joey