Aidez-moi à comprendre SEAM et Hibernate?
-
27-09-2019 - |
Question
Je veux utiliser Framework SEAM avec Hibernate, mais ne veulent pas utiliser EJB. Je ne peux pas utiliser EJB.
La première question est, puis-je utiliser EntityManager? ou est EntityManager une partie EJB?
Comment puis-je avoir accès à utiliser Hibernate dans mon composant Seam?
Merci, Philip
La solution
Avec Seam, vous pouvez utiliser Hibernate ou (EntityManager). Il fonctionne indépendamment des EJB. Vous pouvez utiliser POJO simple si vous voulez.
Comment puis-je avoir accès à utiliser Hibernate dans mon composant Seam?
Voici les paramètres va Hibernate WEB-INF / components.xml
SessionFactory Paramètres
<persistence:hibernate-session-factory name="sessionFactory" cfg-resource-name="app.cfg.xml"/>
Où app.cfg.xml est placé dans la racine du classpath
Session Paramètres
<persistence:managed-hibernate-session name="session" hibernate-session-factory="#{sessionFactory}" auto-create="true"/>
TransactionManagement Paramètres
<!--It takes care of calling begin and commit in the underlying Transaction API-->
<!--Here a Hibernate Transaction API-->
<tx:hibernate-transaction session="#{session}"/>
Pour injecter votre session Hibernate vous pouvez utiliser
/**
* Seam lookup Seam enabled components Through its referenced name - session
*/
private @In Session session;
Gardez à l'esprit Seam fonctionne avec tout framework MVC bien qu'il utilise Java Server Faces par défaut. Vous pouvez même créer vos propres capacités MVC si vous voulez. Jetez un oeil à JBoss Seam Tuto
Autres conseils
Le site Seam est un bon endroit pour commencer. Il y a beaucoup de documentation sur le cadre.
De la FAQ:
Dois-je utiliser EJB 3 à utiliser Seam
D'abord, il est important de comprendre que EJB 3 englobe les haricots de session, géré par messages haricots et Java Persistence API. Seam répond à tous trois types de composants, ce qui les rend plus facile à utiliser et à fournir de précieux améliorations. Mais SEAM parallèle soutien à la programmation non-EJB modèle, notamment JavaBeans et Mise en veille prolongée natif. Ainsi, le choix de ce qu'il faut utiliser est à vous. Seam de La plus grande force est qu'il fournit une architecture unifiée à travers à la fois la EJB et les modèles non-EJB. Cela signifie une fois que vous apprendrez à utiliser un, vous automatiquement savoir comment utiliser la autres.
Une autre façon d'obtenir la session Hibernate est d'utiliser la méthode déléguée sur EntityManager:
Session session = (Session)entityManager.getDelegate();