IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JPA Java Discussion :

JPA et multi projet


Sujet :

JPA Java

  1. #1
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2013
    Messages
    1 066
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 066
    Points : 2 569
    Points
    2 569
    Par défaut JPA et multi projet
    Bonjour,

    Je reprend un ancien projet personnel en Java Swing Hibernate.

    Je veux le passer en Java EE puis en Spring
    https://github.com/FabriceLuneau/

    Mais je veux garder l'ancien projet Swing tant qu'il marche
    Ce n'était pas un projet Maven.
    Je veux juste e transformer, et m'en servir pour les testts
    Et faire des évolutions mineurs, tant que la partie JEE n'est pas prète

    J'ai séparé la partie métier dans un projet à part "xComptaCore"
    Je voulais savoir comment concilier Maven et configuration Jee.
    Où dois je notifier le persistance.xml ?

    Ma partie métier est en plusieur package pour la modularité.
    Dois-je la laisser dans un seul projet ou faire plusieurs projet ?

    Et globalement comment dois-je adapter ma configuration avec MAven ?

    Cordialement
    Fabrice
    Consultez mes articles sur l'accessibilité numérique :

    Comment rendre son application SWING accessible aux non voyants
    Créer des applications web accessibles à tous

    YES WE CAN BLANCHE !!!

    Rappelez-vous que Google est le plus grand aveugle d'Internet...
    Plus c'est accessible pour nous, plus c'est accessible pour lui,
    et meilleur sera votre score de référencement !

  2. #2
    Membre extrêmement actif Avatar de ddoumeche
    Homme Profil pro
    Ingénieur recherche et développement
    Inscrit en
    Octobre 2007
    Messages
    1 676
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Singapour

    Informations professionnelles :
    Activité : Ingénieur recherche et développement

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 676
    Points : 2 009
    Points
    2 009
    Par défaut
    Bonjour Darkman,

    le fichier persistence.xml devrait se trouver dans le dossier src/main/resources/META-INF de ton application J2EE
    (si tu suis la convention Maven)

    Tu n'as besoin de spécifier autre chose, et notamment rien dans le fichier pom.xml de Maven, le fichier sera inclut automatiquement dans ton .war

    Tu peux faire plusieurs modules projets qui sont autant de modules Maven, par exemple
    - la couche DAO + objects
    - les tests
    - les services web + rest
    - la couche web

    Cordialement
    La joie de l'âme est dans la planification -- Louis Hubert Liautey

  3. #3
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    le persistence est à mettre dans le META-INF/ du jar contenant tes entités.

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 937
    Points : 4 358
    Points
    4 358
    Par défaut
    ... et Spring permet de se passer du persistence.xml...

  5. #5
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2013
    Messages
    1 066
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 066
    Points : 2 569
    Points
    2 569
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    le persistence est à mettre dans le META-INF/ du jar contenant tes entités.
    Le problème est que je reprends un de mes ancien projet écrit en JSE Swing Hibernate
    Je veux le passer en JEE puis en Spring
    xComptaOld sur mon GitHub
    Je le ferait évoluer à minima
    Le plus urgent est de le passer à Maven, je ne l'utilisais pas en 2005

    J'ai séparé les objets métiers dans un nouveau projet
    xComptaCore, avec toutes mes entités
    J'ai utilisé les annotations JPA pour être indépendant d'hibernate
    Dans le pom il y a une dépendance vers hibernate, et je me demande si je ne devrais ne pas mettre qu'une dépendance vers les annotations JPA
    A ce propos si vous pouvez me conseiller une dépendance

    Je dois concilier une solution pour utiliser mes objets métiers avec JPA, JSE et Spring pour plus tard
    Chaque version projet a une référence ver le projet métier
    Et il implémente sa persistance

    Alors je me demande où je dois mettre mon persistance.xml dans le projet avec les objets métiers ?
    Dans le projet métier ou dans le projet qui utilise les objets métier

    De plus il y a plusieurs package métiers, il serait bien que selon son choix on déclare que ceux que l'on utilise
    Consultez mes articles sur l'accessibilité numérique :

    Comment rendre son application SWING accessible aux non voyants
    Créer des applications web accessibles à tous

    YES WE CAN BLANCHE !!!

    Rappelez-vous que Google est le plus grand aveugle d'Internet...
    Plus c'est accessible pour nous, plus c'est accessible pour lui,
    et meilleur sera votre score de référencement !

  6. #6
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2013
    Messages
    1 066
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 066
    Points : 2 569
    Points
    2 569
    Par défaut
    Citation Envoyé par JeitEmgie Voir le message
    ... et Spring permet de se passer du persistence.xml...
    J'ai bien eu une formation Spring.
    Mais comme c'était court je n'ai pas beaucoup touché à la configuration.
    Car quand il y avait un problème le formateur me corrigeait mon problème sans que j'ai le temps de comprendre.
    J'ai pu voir Spring MVC et Spring JDBC et pas Spring Hibernate à mon grand regret

    J'ai oublié car je n'ai pas pratiqué en mission

    Je songe à passer à Spring, mais la configuration d'un projet Spring from crash me pose encore problème, et aussi en JEE.
    Néanmoins les outils d'aide à la création d'un projet semble une solution.

    Je veux continuer à pratiquer Jee et passer à Spring après

    Dans les deux cas à force de pratiquer qu'un aspect d'un techno on perd, c'est pourquoi je reprend mon projet

    Merci pour vos conseils
    Consultez mes articles sur l'accessibilité numérique :

    Comment rendre son application SWING accessible aux non voyants
    Créer des applications web accessibles à tous

    YES WE CAN BLANCHE !!!

    Rappelez-vous que Google est le plus grand aveugle d'Internet...
    Plus c'est accessible pour nous, plus c'est accessible pour lui,
    et meilleur sera votre score de référencement !

  7. #7
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2013
    Messages
    1 066
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 066
    Points : 2 569
    Points
    2 569
    Par défaut
    Citation Envoyé par ddoumeche Voir le message
    Bonjour Darkman,

    le fichier persistence.xml devrait se trouver dans le dossier src/main/resources/META-INF de ton application J2EE
    (si tu suis la convention Maven)

    Tu n'as besoin de spécifier autre chose, et notamment rien dans le fichier pom.xml de Maven, le fichier sera inclut automatiquement dans ton .war

    Tu peux faire plusieurs modules projets qui sont autant de modules Maven, par exemple
    - la couche DAO + objects
    - les tests
    - les services web + rest
    - la couche web

    Cordialement


    Bonjour DoudouMan

    Mon problème c'est l'architecture avec la réponse de Cheese j'ai un doute.

    En premier lieu je respecte bien la convention maven, dans les différents sous-projets qui constituent le projet.

    Ce dont je ne suis pas sûr c'est si je peux mettre mon perssistance.xml dans le projet principal, qui ne contient pas mes Entity
    Ils sont dans le projet xComptaCore et sont appellé par le projet xComptaJee, qui à le persistance et la référence dans le pom

    Est-il possible dans mon persistance de référencer par package et non par clase
    pour l'instant je nn'ai rien mis

    J'éssaye de travailler avec Mysql
    Je me demande si je ne peux pas travailler avec hsql db pour éliminer les problèmes potentiel de configuration MySql
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    <?xml version="1.0" encoding="UTF-8"?>
    <persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
    	<persistence-unit name="pu_xcompta">
    <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
    	<jta-data-source>java:openejb/Resource/pool_jpa</jta-data-source>
    <!--		
    <class>fr.xcompta.base.Classe</class>
    -->
     
    <properties>
    <!-- Hibernate -->
    <property name="hibernate.show_sql" value="true" />
    <property name="hibernate.format_sql" value="true" />
          <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect" />
    <property name="hibernate.hbm2ddl.auto" value="creade" />
     
    <!-- TomEE -->
    		<property name="tomee.jpa.factory.lazy" value="true" />
     
    		<!--  connection -->
    		<!-- 
    		<property name="hibernate.connection.datasource" value="java:comp/env/jdbc/pool_jpa"/>
    		-->
     
    	</properties>
    	</persistence-unit>
    </persistence>
    Consultez mes articles sur l'accessibilité numérique :

    Comment rendre son application SWING accessible aux non voyants
    Créer des applications web accessibles à tous

    YES WE CAN BLANCHE !!!

    Rappelez-vous que Google est le plus grand aveugle d'Internet...
    Plus c'est accessible pour nous, plus c'est accessible pour lui,
    et meilleur sera votre score de référencement !

  8. #8
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par CoderInTheDark Voir le message
    Le problème est que je reprends un de mes ancien projet écrit en JSE Swing Hibernate
    Je veux le passer en JEE puis en Spring
    Je ne vois pas ce qui t'empeche de mettre le persistence.xml dans le project modèle jpa. Au pire les appli qui ne seront pas J2EE auront un xml dans le META-INF qu'il ignoreront joyeusement.

    En JPA, l'alternative pour du web c'est de le mettre dans le WEB-INF/classes/META-INF/persistence.xml

    Dans tous les cas tu ne poura pas avoir un jar avec tes entités et un autre avec le persistence.xml, J2EE ne le permet pas.

    Par contre il permet d'avoir un persistence.xml différent dans charque jar

  9. #9
    Membre extrêmement actif Avatar de ddoumeche
    Homme Profil pro
    Ingénieur recherche et développement
    Inscrit en
    Octobre 2007
    Messages
    1 676
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Singapour

    Informations professionnelles :
    Activité : Ingénieur recherche et développement

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 676
    Points : 2 009
    Points
    2 009
    Par défaut
    Recoucou Darkman


    Citation Envoyé par CoderInTheDark Voir le message
    J'ai séparé les objets métiers dans un nouveau projet
    xComptaCore, avec toutes mes entités
    J'ai utilisé les annotations JPA pour être indépendant d'hibernate
    Dans le pom il y a une dépendance vers hibernate, et je me demande si je ne devrais ne pas mettre qu'une dépendance vers les annotations JPA

    A ce propos si vous pouvez me conseiller une dépendance
    Ce n'est guère un problème d'avoir une dépendance vers Hibernate. De toute façon tu ne vas pas mettre une implémentation inférieure en performance et en fonctionnalité comme EcllipseLink, si ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>5.3.0.CR2</version>
    </dependency>
    Citation Envoyé par CoderInTheDark Voir le message
    Alors je me demande où je dois mettre mon persistance.xml dans le projet avec les objets métiers ?
    Dans le projet métier ou dans le projet qui utilise les objets métier
    Tu dois mettre ton persistence.xml dans le même projet que des Entités (ou objets métier), en tout cas dans le projet contenant la couche d'accès aux bases.

    Citation Envoyé par CoderInTheDark Voir le message
    De plus il y a plusieurs package métiers, il serait bien que selon son choix on déclare que ceux que l'on utilise
    Que veux tu dire par plusieurs package métiers ? les logiques métiers sont différentes selon les utilisateurs ?
    Dans ce cas là, cela doit se régler au niveau de la couche métier et non pas de la couche DAO.

    Citation Envoyé par CoderInTheDark Voir le message
    J'ai bien eu une formation Spring.
    Mais comme c'était court je n'ai pas beaucoup touché à la configuration.
    Car quand il y avait un problème le formateur me corrigeait mon problème sans que j'ai le temps de comprendre.
    J'ai pu voir Spring MVC et Spring JDBC et pas Spring Hibernate à mon grand regret
    Honnêtement, je te conseille de te documenter sur Hibernate puis Spring Hibernate : c'est un peu plus compliqué mais te fera gagner un temps considérable par la suite (par la suite étant une notion relative).
    En plus de te permettre d'oublier des regrets qui sont un temps de cerveau disponible gâché.


    Citation Envoyé par CoderInTheDark
    Je songe à passer à Spring, mais la configuration d'un projet Spring from crash me pose encore problème, et aussi en JEE.
    Néanmoins les outils d'aide à la création d'un projet semble une solution.
    Je veux continuer à pratiquer Jee et passer à Spring après. Dans les deux cas à force de pratiquer qu'un aspect d'un techno on perd, c'est pourquoi je reprend mon projet
    En fait, J2EE et Spring ne sont pas exactement semblable, il y a de variances architecturales.
    Le meilleur moyen de rentabiliser le temps consacré a ta formation reste de pratiquer.

    Citation Envoyé par CoderInTheDark Voir le message
    Mon problème c'est l'architecture avec la réponse de Cheese j'ai un doute.
    Maven va copier le contenu du dossier src/main/resources à la racine de ton jar lors du packaging donc il dit la même chose que moi.

    Citation Envoyé par CoderInTheDark Voir le message
    J'éssaye de travailler avec Mysql
    Je me demande si je ne peux pas travailler avec hsql db pour éliminer les problèmes potentiel de configuration MySql
    Même si beaucoup utilisent hsql db parce qu'il est plus rapide pendant les tests, je recommande de s'en tenir à Mysql ou à la base de donnée cible sauf à avoir des mauvaises surprises de compatibilité.

    Pour déclarer un package au lieu de spécifier toutes tes classes :
    <?xml version="1.0" encoding="UTF-8"?>
    <persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlnssi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
    <properties>
    <property name="hibernate.archive.autodetection" value="class"/>
    (...)
    Mais normalement hibernate scanne toutes les classes à la recherche de l'annotation @Entity
    La joie de l'âme est dans la planification -- Louis Hubert Liautey

  10. #10
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2013
    Messages
    1 066
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 066
    Points : 2 569
    Points
    2 569
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Je ne vois pas ce qui t'empeche de mettre le persistence.xml dans le project modèle jpa. Au pire les appli qui ne seront pas J2EE auront un xml dans le META-INF qu'il ignoreront joyeusement.

    En JPA, l'alternative pour du web c'est de le mettre dans le WEB-INF/classes/META-INF/persistence.xml

    Dans tous les cas tu ne poura pas avoir un jar avec tes entités et un autre avec le persistence.xml, J2EE ne le permet pas.

    Par contre il permet d'avoir un persistence.xml différent dans charque jar


    Tu as raison c'est plus simple.
    C'est parce que je pensais faire de la modularité dans le projet utilisateur.
    Mon idée était que chacun configurerait son persistance en fonction de ses besoins métiers
    Mais j'ai résonné comme une patate
    Si je dois le faire je le ferai après

    J'ai déplacé mon persistence.xml
    dans un dossier meta-inf à la base de src main java

    Mais si je te lis bien, je dois faire un sous dossier classes

    Par contre les Dao vont rester dans le projet utilisateur avec le context.xml
    dans "webcontent/meta-inf


    J4ai vraiment du mal à travailler de zéro

    Merci pour ton aide
    Consultez mes articles sur l'accessibilité numérique :

    Comment rendre son application SWING accessible aux non voyants
    Créer des applications web accessibles à tous

    YES WE CAN BLANCHE !!!

    Rappelez-vous que Google est le plus grand aveugle d'Internet...
    Plus c'est accessible pour nous, plus c'est accessible pour lui,
    et meilleur sera votre score de référencement !

  11. #11
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2013
    Messages
    1 066
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 066
    Points : 2 569
    Points
    2 569
    Par défaut
    Finalement ça va me poser un problème de mettre le persistance dans le projet métier.
    Car dans le projet JSE je veux passer par le persistance, pour écrire des DAO communs.
    Car pour l'instant je passe par sessionfactory dans le projet jse et entityManager dans le projet jee

    Alors je fait deux persistance unit ?
    N'y a t-il pas de meilleurs solutions ?
    Consultez mes articles sur l'accessibilité numérique :

    Comment rendre son application SWING accessible aux non voyants
    Créer des applications web accessibles à tous

    YES WE CAN BLANCHE !!!

    Rappelez-vous que Google est le plus grand aveugle d'Internet...
    Plus c'est accessible pour nous, plus c'est accessible pour lui,
    et meilleur sera votre score de référencement !

  12. #12
    Membre extrêmement actif Avatar de ddoumeche
    Homme Profil pro
    Ingénieur recherche et développement
    Inscrit en
    Octobre 2007
    Messages
    1 676
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Singapour

    Informations professionnelles :
    Activité : Ingénieur recherche et développement

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 676
    Points : 2 009
    Points
    2 009
    Par défaut
    Si la datasource et le paramétrage sont la même entre le projet JSE et le projet J2E, quel besoin de faire deux persistence-unit ?
    La joie de l'âme est dans la planification -- Louis Hubert Liautey

  13. #13
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2013
    Messages
    1 066
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 066
    Points : 2 569
    Points
    2 569
    Par défaut
    Citation Envoyé par ddoumeche Voir le message
    Si la datasource et le paramétrage sont la même entre le projet JSE et le projet J2E, quel besoin de faire deux persistence-unit ?
    Bhaaa oui , à moins que je suis à côté de la plaque.
    Si ça m'arrive souvent

    , je veux faire converger la version local en Java Swing Hibernate et la version web Jee ou Spring je ne suis pas encore fixé.
    La version local travaillera avec HSQLDB, et doit pouvoir changer de base en fonction de l'utilisateur
    May be I am wrong

    En premier lieu faire que la version locale utilise hibernate avec des DAO avec entityManager et plus sessionFactory pour avoir des DAO communs aux deux versions.
    Pour avoir le même code pour la version Swing et Jee.
    J'avais pensé utiliser la généricité ou trouver une classe commune à sessionFactory et entyManager ou un truc du genre, mais je n'ai pas didée
    Pour Spring je ne sais pas je n'ai pas encore utilisé Spring Hibernate, mais Spring JDBC et je ne suis pas maso au point de l'utiliser à nouveau
    Consultez mes articles sur l'accessibilité numérique :

    Comment rendre son application SWING accessible aux non voyants
    Créer des applications web accessibles à tous

    YES WE CAN BLANCHE !!!

    Rappelez-vous que Google est le plus grand aveugle d'Internet...
    Plus c'est accessible pour nous, plus c'est accessible pour lui,
    et meilleur sera votre score de référencement !

Discussions similaires

  1. Réponses: 3
    Dernier message: 13/01/2010, 14h28
  2. Multi projet avec tomcat
    Par thierryler dans le forum Maven
    Réponses: 3
    Dernier message: 20/02/2008, 16h13
  3. Multi projet dépendance
    Par lifestyles dans le forum Maven
    Réponses: 3
    Dernier message: 20/07/2007, 07h45
  4. Modèles Multi projets
    Par Lyzergik dans le forum Visual Studio
    Réponses: 4
    Dernier message: 25/04/2007, 14h31
  5. maven multi projet
    Par austin P. dans le forum Maven
    Réponses: 3
    Dernier message: 17/03/2007, 14h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo