2013-08-13 4 views
0

Je dois créer 2 projets. Pour cela, je vais utiliser Spring, JPA, JSF et Maven. Mes projets seront des structures sur une architecture à 3 couches, donc j'aurai des couches vue, service et DAO. La couche de persistance sera fournie par hibernate avec JPA2.0.
Le problème est que ces deux projets partageront une grande partie du code, essentiellement les deux projets fonctionnent sur la même base de données, et partageront la majorité des entités, des DAO et peut-être même des services. Après un peu de google, j'ai trouvé que cette tâche pouvait être accomplie avec un projet Maven multi-modules. J'ai donc créé un projets Maven multimodule qui se composait de:
- paquet de base (qui contiendra toutes les classes communes),
- webApp interne (qui sera accessible par les utilisateurs internes)
- site Web externe (qui être accessible par des clients externes).partager le code entre les projets avec maven

Le problème que j'ai rencontré ici est l'emplacement de persitence.xml, parce que si je mets ce fichier au paquet de base je ne peux pas inclure les entités d'autres projets. Si je mets le fichier à l'intérieur des projets que je peux renvoyer les entités de base à l'intérieur persitence.xml, mais certaines fonctionnalités que je veux partager, à savoir:

public abstract class GenericDaoImpl<T> implements GenericDao<T> { 

    @PersistenceContext(type = PersistenceContextType.TRANSACTION,unitName="CCPU") 
    protected EntityManager em; 

ne fonctionnera pas plus parce que l'éclipse est « hurlait » qu'il n'y a unité de persistance avec le nom CCPU, car le fichier persistence.xml n'est plus dans ce projet.
Tout d'abord, est-ce la bonne approche pour ce genre de problème?
Le dernier mais non le moindre, où devrais-je mettre le fichier de persistance afin de pouvoir combiner des entités de tous les 3 sous-projets?

Répondre

0

J'ai la même situation: deux webapps avec des objets de domaine communs, mais toutes mes entités sont situées dans le module "domaine". Les Webapp sont comme des «clients frontaux» pour le module de back-end «domaine».

Si vous souhaitez localiser des entités spécifiques à webapp dans des projets appropriés, essayez de supprimer le champ "em" de GenericDaoImpl et passez-le comme paramètre à toutes les méthodes.

+0

oui, mais en passant "em" comme paramètre à toutes les méthodes n'est pas si élégant ... –

Questions connexes