2010-12-10 63 views
1

Nous utilisons des annotations pour mapper la classe d'entité avec la table de base de données en spécifiant simplement @Entity et plus comme @Id, les jointures de table et beaucoup de choses. Je ne sais pas comment ces variables d'entité sont mappées avec la table de base de données. Quelqu'un peut-il donner une brève description pour la compréhension.Comment le mappage d'annotations est-il effectué dans la persistance java?

Merci :)

Répondre

2

Eh bien, l'idée est de traduire vos objets et leurs connexions avec d'autres objets dans une base de données relationnelle. Ces deux façons de représenter les données (objets définis par les classes et dans les tables dans une base de données) ne sont pas directement compatibles et c'est là qu'intervient un cadre Object Relational Mapper. donc une classe comme

class MyObject 
{ 
    private String name; 
    private int age; 
    private String password; 

    // Getters and setters 
} 

se traduira par une table de base de données contenant un nom de colonne qui est de type varchar, l'âge de type int et mot de passe de type VARCHAR.

Les annotations en Java ajoutent simplement des informations supplémentaires (appelées méta-données) à vos définitions de classe, qui peuvent être lues par n'importe quelle autre classe (par exemple JavaDoc) et Java Persistence API seront utilisées par un framework ORM comme Hibernate pour lire les informations supplémentaires dont vous avez besoin pour traduire votre objet dans la base de données (votre table de base de données a besoin d'un ID principal et certaines informations - comme le type de relation d'un objet à un autre - ne peut pas être automatiquement déterminée).

0

annotations sont les méta-données sur une classe, rien de magique. Vous pouvez écrire vos propres annotations. Ces annotations reçoivent des règles de rétention de runtime (ce qui signifie que vous avez accès à ces métadonnées lors de l'exécution). Lorsque vous appelez persist etc, le fournisseur de persistance parcourt les champs (java.lang.reflect.Field) dans votre classe et vérifie quelles annotations sont présentes pour construire votre instruction SQL. Essayez d'écrire votre propre annotation et de faire quelque chose avec elle. Ça ne paraîtra pas très magique après ça.

0

dans votre travail d'annotation de cas signifie la cartographie avec tablename avec classe d'entité est ressembler comme ....


@Entity

@Table (name = "CompanyUser")

CompanyUserCAB public class implémente java.io.Serializable

{ 
private long companyUserID; 

private int  companyID; 

    @Id 
@GeneratedValue(strategy = GenerationType.IDENTITY) 
@Column(name = "companyUserID") 
public long getCompanyUserID() 
{ 
    return this.companyUserID; 
} 
public void setCompanyUserID(long companyUserID) 
{ 
    this.companyUserID = companyUserID; 
} 

@Column(name = "companyID") 
public int getCompanyID() 
{ 
    return this.companyID; 
} 
public void setCompanyID(int companyID) 
{ 
    this.companyID = companyID; 
} 

}

+0

Lisez ma question encore une fois s'il vous plaît –