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

Java EE Discussion :

les ejb3 et les base de donnees [EJB3 Entity]


Sujet :

Java EE

  1. #1
    Membre éprouvé Avatar de anisj1m
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2006
    Messages
    1 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Tunisie

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 067
    Points : 955
    Points
    955
    Par défaut les ejb3 et les base de donnees
    bonjour;
    je vait developper un projet en j2ee et j'utilise les ejb3, donc j'ai trouver quelque code source interessant, mais un chose que je n'arive pas a comoprendre c'set est se qu'on doit faire une fichier de configuration pour faire correspondre les champs de la base de donnees aux attribue definie en ejb ?
    ou est ce que il faut juste avoir des attribut ayany les mems nom que les champs de la base de donnees?
    personelement j'ai vue un fixhier de configuration (persistence.xml) mais il n'indique pas une corespondance.
    Ce qu'on appelons le hasard n'est que notre incapacité à comprendre un degré d'ordre supérieur.

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

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Il te faut utiliser les annotations dans la classe java représentant ta table de base de données.
    Le fichier persistence.xml concerne la configuration globale :
    - adresse de ta base de données
    - classes java impliquées
    - etc...

  3. #3
    Membre éprouvé Avatar de anisj1m
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2006
    Messages
    1 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Tunisie

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 067
    Points : 955
    Points
    955
    Par défaut
    Citation Envoyé par fr1man
    Il te faut utiliser les annotations dans la classe java représentant ta table de base de données.
    je n'ai pas compris, est ce que tu peut m'expliquer car moi je veut savoir par exemple si j'ai dans ma base de donnes un champs "prenom" alors comment je doit utiliser dans mon ejb est ce que je doit declarer un attribut de meme nom "prenom" dans mon ejb ou il faut mettre dans un fichier de configuration le nom du champs et son correspondant (le nom de l'attribut ) qui vas etre utiliser dans mon ejb
    Ce qu'on appelons le hasard n'est que notre incapacité à comprendre un degré d'ordre supérieur.

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

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    En gros (pour faire simple), tu auras une classe java par table.
    Dans ta classe java, tu vas définir des propriétés correspondant aux champs de ta table.
    Pour chaque propriété de ta classe, tu vas utiliser les annotations pour faire le lien entre le nom de cette propriété et le nom de la colonne correspondante de ta table.

    Ex:
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
     
    @Entity
    public class Personne implements Serializable {
     
        @Id
        @GeneratedValue(strategy=GenerationType.AUTO)
        @Column(name = "id", nullable = false)
        private long id;
     
        @Column(name = "nom")
        private String nom;
     
        @Column(name = "prenom")
        private String prenom;
     
        /**
         * Gets the id of this Personne.
         * @return the id
         */
        public long getId() {
            return this.id;
        }
     
        /**
         * Sets the id of this Personne to the specified value.
         * @param id the new id
         */
        public void setId(long id) {
            this.id = id;
        }
     
        /**
         * Gets the nom of this Personne.
         * @return the nom
         */
        public String getNom() {
            return this.nom;
        }
     
        /**
         * Sets the nom of this Personne to the specified value.
         * @param nom the new nom
         */
        public void setNom(String nom) {
            this.nom = nom;
        }
     
        /**
         * Gets the prenom of this Personne.
         * @return the prenom
         */
        public String getPrenom() {
            return this.prenom;
        }
     
        /**
         * Sets the prenom of this Personne to the specified value.
         * @param prenom the new prenom
         */
        public void setPrenom(String prenom) {
            this.prenom = prenom;
        }    
    }

  5. #5
    Membre éprouvé Avatar de anisj1m
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2006
    Messages
    1 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Tunisie

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 067
    Points : 955
    Points
    955
    Par défaut
    merci infiniment;
    est ce que ce que vous avez ecrit est conforme au ejb3 car dans un tuto j'ai trouver ceci:
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
     
    package com.labosun.cj.ejb3.entity;
     
    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.GenerationType;
    import javax.persistence.Id;
     
    /**
    * Entity Bean Contact
    * @author Cyril
    *
    */
    @Entity // Annotation indiquant que la classe est un entity bean
    public class Contact {
     
    private int id;
     
    private String firstname;
     
    private String lastname;
     
    private String address;
     
    private int zipCode;
     
    private String city;
     
    private String phone;
     
    private String mobile;
     
    public Contact() {
    }
     
    @Id // tag définissant la clé primaire
    @GeneratedValue(strategy=GenerationType.AUTO) // tag indiquant que la clé est auto générée
    public int getId() {
    return id;
    }
     
    public void setId(int id) {
    this.id = id;
    }
     
    public String getAddress() {
    return address;
    }
     
    public void setAddress(String address) {
    this.address = address;
    }
     
    public String getCity() {
    return city;
    }
     
    public void setCity(String city) {
    this.city = city;
    }
     
    public String getFirstname() {
    return firstname;
    }
     
    public void setFirstname(String firstname) {
    this.firstname = firstname;
    }
     
    public String getLastname() {
    return lastname;
    }
     
    public void setLastname(String lastname) {
    this.lastname = lastname;
    }
     
    public String getMobile() {
    return mobile;
    }
     
    public void setMobile(String mobile) {
    this.mobile = mobile;
    }
     
    public String getPhone() {
    return phone;
    }
     
    public void setPhone(String phone) {
    this.phone = phone;
    }
     
    public int getZipCode() {
    return zipCode;
    }
     
    public void setZipCode(int zipCode) {
    this.zipCode = zipCode;
    }
     
    }
    et donc il n'ya pas (@Column(name = "id", nullable = false)) que vous avez intrduit et qui semble tres logique car avec cette classe je ne voit pas comme cette ejb peut faire la corespondance entre le nom du champs et le nom de l'attribut
    Ce qu'on appelons le hasard n'est que notre incapacité à comprendre un degré d'ordre supérieur.

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

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    En fait, par défaut, le nom de la propriété = le nom de la colonne.
    Si les noms sont différents, il faut utiliser l'annotation @Column(name = "...")

  7. #7
    Membre à l'essai
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2004
    Messages
    17
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2004
    Messages : 17
    Points : 21
    Points
    21
    Par défaut
    le @Column n'est pas obligatoire si dans la base le champs a le meme nom, mais pour un rigeur de developpement c'est mieux de l'écrire

  8. #8
    Membre éprouvé Avatar de anisj1m
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2006
    Messages
    1 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Tunisie

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 067
    Points : 955
    Points
    955
    Par défaut
    et en ce qui concerne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    @GeneratedValue(strategy=GenerationType.AUTO).
    private int id;
    est ce que dans ma base je doit avoir un attribut qui est auto incremente
    Ce qu'on appelons le hasard n'est que notre incapacité à comprendre un degré d'ordre supérieur.

  9. #9
    Membre à l'essai
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2004
    Messages
    17
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2004
    Messages : 17
    Points : 21
    Points
    21
    Par défaut
    Pour une base MySQL, oui, on peux utiliser l'option Auto (si la clé primaire de la table est en auto-incrémente).
    Sinon pour Oracle ou encore PostgreSQL par exemple, il faut utiliser les sequences.

    ça ressemble à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
         @SequenceGenerator(name = "mySequence", sequenceName = "mySequenceName")
        @GeneratedValue(generator = "mySequence")
    et après dans la base faut créer une sequence mySequenceName correspondante.

    (je n'ai pas tester qu'avec ces 3 bases, mais pour les autres c'est le même principe je suppose)

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

Discussions similaires

  1. Enregistrer les visites dans la base de donnee
    Par glodybiss4 dans le forum Langage
    Réponses: 1
    Dernier message: 30/08/2009, 10h13
  2. recuperer les valeurs d une base de donnee
    Par caroen dans le forum JDBC
    Réponses: 7
    Dernier message: 09/02/2007, 10h14
  3. [SGBD] Renvoyer les enregistrements d'une base de données mysql
    Par pod1978 dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 30/01/2006, 21h01
  4. ADO et les guillemet dans les champs d'une base Texte
    Par jnc dans le forum Bases de données
    Réponses: 3
    Dernier message: 27/10/2005, 08h41

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