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

Persistance des données Java Discussion :

Initialisation de la persistance et DAO.


Sujet :

Persistance des données Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2004
    Messages : 109
    Par défaut Initialisation de la persistance et DAO.
    Bonjour,

    j'aimerai savoir si lorsque vous avez plusieurs objets DAO vous initialisez la persistance dans chaque objet ?
    J'initialise cette persistance dans le constructeur de la classe de la manière suivante et répète l'opération pour chaque DAO. Y-a-t-il une meilleure manière de procéder ?

    Exemple :
    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
     
    public class EleveDAO extends DAO<Eleve> {
        protected EntityManagerFactory emf;
     
     
        @PersistenceContext(unitName = "myPU")
        protected EntityManager em;
     
        public EleveDAO() {
            if (emf == null) {
                emf = Persistence.createEntityManagerFactory("myPU");
                em = emf.createEntityManager();
            }
     
        }
    Merci.

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 276
    Par défaut
    Pas besoin de créer ton entityManager, il est déjà automatiquement créé par: @PersistenceContext(unitName = "myPU")

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2004
    Messages : 109
    Par défaut
    Citation Envoyé par fr1man Voir le message
    Pas besoin de créer ton entityManager, il est déjà automatiquement créé par: @PersistenceContext(unitName = "myPU")
    Merci pour ta réponse.
    Mon problème est que l'entityManager ne se crée pas automatiquement. Mon application est déployée sous glassfish avec le persistence.xml suivant :

    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
    <?xml version="1.0" encoding="UTF-8"?>
    <persistence version="2.0"
    	xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xsi:schemaLocation="http://java.sun.com/xml/ns/persistence 
     http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
    	<persistence-unit name="myPU" transaction-type="JTA">
    		<jta-data-source>jdbc/myDS</jta-data-source>
    
    
    		<class>ch.myapp.domain.model.Book</class>
    		<class>ch.myapp.domain.model.Cours</class>
    		<class>ch.myapp.domain.model.Eleve</class>
    		<class>ch.myapp.domain.model.Publisher</class>
    	</persistence-unit>
    
    
    </persistence>
    Il me manque quelque chose ?

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 276
    Par défaut
    Normal. Il faut que ta classe EleveDao soit annotée pour que l’injection fonctionne.
    Tu peux utiliser par exemple @RequestScoped, ou un autre scope selon le besoin.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2004
    Messages : 109
    Par défaut
    Citation Envoyé par fr1man Voir le message
    Normal. Il faut que ta classe EleveDao soit annotée pour que l’injection fonctionne.
    Tu peux utiliser par exemple @RequestScoped, ou un autre scope selon le besoin.
    Merci pour ta réponse. Malgré l'annotation @RequestScoped, l'injection ne fonctionne pas. J'ai lu que cette injection ne fonctionnait que sur les ejb, et que sur les autres objets il faut créer cette persistance via la factory. Suis-je juste ?

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 276
    Par défaut
    J'aurais pensé que ça fonctionnerait avec un objet "managé", ton DAO avec l'annotation.
    J'avoue que je n'ai pas cette couche DAO comme toi. J'ai ma couche EJB dans laquelle j'injecte mon EntityManager et dans laquelle j'effectue mes traitements vers la base de données.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. persistance en tant que aspect ou DAO
    Par je viens du sud dans le forum Général Java
    Réponses: 5
    Dernier message: 20/01/2018, 21h43
  2. Probleme d'initialisation avec DAO
    Par candrau dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 26/07/2011, 16h58
  3. [Hibernate 2] Bean session et persistance DAO
    Par archer dans le forum Hibernate
    Réponses: 4
    Dernier message: 19/04/2010, 16h55
  4. Initialisation de XMLModule
    Par Sylvain Leray dans le forum XMLRAD
    Réponses: 10
    Dernier message: 01/04/2003, 10h08
  5. initialisation Directinput avec delphi
    Par Madmaxx dans le forum DirectX
    Réponses: 1
    Dernier message: 21/02/2003, 17h37

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