2010-06-24 6 views
0

Seam prend-il en charge plusieurs unités de persistance dans sa configuration? Aussi, quand voudriez-vous avoir ou avoir besoin de plusieurs unités de persistance?Seam - Unités de persistance multiple

Je travaille sur un composant générique et en ce moment, il prend en charge une seule unité de persistance qui fait sens pour moi comme je l'ai jamais utilisé plus de 1 unité de persistance par application web. Donc, j'ai de la difficulté à voir où vous utiliseriez plus d'une seule unité de persistance.

Merci,

Walter

Répondre

1

Est-ce que Seam appuyer les unités de persistance multiples dans sa configuration?

Je ne vois pas pourquoi ce ne serait pas le cas. Configurer plusieurs unités de persistance et de les obtenir injectés par nom:

@PersistenceContext(unitName="UNITNAME") 
private EntityManager em; 

Aussi, quand voudriez-vous avoir besoin de plusieurs unités ou de persistance?

Si vous avez besoin d'accéder à plusieurs sources de données.

+0

Ok, je pensais plus le long des lignes d'avoir des gestionnaires d'identité multiples. Il semble que vous ne pouvez avoir qu'un seul magasin d'identité jpa. Vous pouvez probablement chausse plus dedans, mais je ne crois pas que la partie a été conçue pour plus d'un comme la configuration d'un expéditeur d'email ne supporte qu'une seule adresse. –

+0

Je prends ça en arrière, vous pouvez en avoir plus de 1, mais ça devient vite moche. –

0

Il est très bien possible d'avoir plusieurs unités de persistance dans JPA et à JPA avec Seam. En couture, c'est très facile. Créez simplement plus d'un élément <persistence-unit name="myapp" /> dans votre fichier persistence.xml et configurez une EntityManagerFactory pour chaque unité, et éventuellement un EntityManager pour chaque EntityManagerFactory. Vous pouvez ensuite injecter simplement une EntityManager de façon standard:

@In 
EntityManager entityManagerOne; 

où votre EntityManager est nommé entityManagerOne (et l'autre entityManagerTwo).

La raison la plus importante d'avoir plusieurs unités de persistance est la nécessité de travailler avec des systèmes de bases de données multiples. Cela n'est pas lié à une source de données, mais le problème consiste simplement à définir une étendue pour vos mappages d'entités.

Une autre raison est que vous choisissez une stratégie de transaction (globale (JTA) ou local (ressources locales)) par unité de persitence. Ainsi, si vous devez travailler avec plusieurs stratégies de transaction, vous pouvez créer 2 unités de persistance pour la même base de données.