CodeGym /Java tanfolyam /All lectures for HU purposes /Osztályleképezés hibernált állapotban

Osztályleképezés hibernált állapotban

All lectures for HU purposes
Szint , Lecke
Elérhető

2.1 Annotáció @Entity, @Table

Ha az osztályunkat az adatbázisban lévő táblázathoz szeretnénk leképezni, akkor ehhez akár 3 megjegyzést is hozzá kell adnunk.

Először is hozzá kell adnia egy megjegyzést az osztályhoz @Entity. Ez az osztály előtti megjegyzés jelzi a Hibernate-nak, hogy ez nem csak egy osztály, hanem egy speciális osztály, amelynek objektumait az adatbázisban kell tárolni.

Példa:

@Entity
class User {
    public int id;
    public String name;
    public int level;
    public Date createdDate;
}

Ez elegendő a Hibernate számára ahhoz, hogy az osztályba tartozó objektumokat különleges módon kezelje.

A második megjegyzés a @Table. Segítségével beállíthatja annak a táblának a nevét az adatbázisban, amelyhez ez az osztály hozzá lesz rendelve. Példa:

@Entity
@Table(name="user")
class User {
    public int id;
    public String name;
    public int level;
    public Date createdDate;
}

Ha az osztálynév és a táblanév megegyezik, akkor a megjegyzés @Tableelhagyható.

Továbbá, ha az alkalmazás több sémából származó táblákkal működik egyszerre, akkor meg kell adnia, hogy a tábla melyik sémában található:

@Entity
@Table(name="user", schema="test")
class User {
    public int id;
    public String name;
    public int level;
    public Date createdDate;
}

Igen, minden olyan egyszerű, mint amilyennek látszik.

2.2 @Oszlop annotáció

A második fontos tudnivaló a táblázat oszlopainak osztálymezőkre való hozzárendelése. A legegyszerűbb verzióban a Hibernate egyszerűen leképezi az entitásosztály mezőit a kívánt tábla oszlopaira.

Ha szabályozni szeretné a leképezés minden árnyalatát, használhatja a megjegyzést @Column. Példa:

@Entity
@Table(name="user")
class User {
   @Column(name="id")
   public Integer id;

   @Column(name="name")
   public String name;

   @Column(name="level")
   public Integer level;

   @Column(name="created_date")
   public Date createdDate;
}

Az annotáció @Columnkülönféle paraméterekkel rendelkezik, az alábbiakban megvizsgáljuk a legnépszerűbbeket:

# Attribútum neve Attribútum típusa Leírás
1 név Húr Beállítja a táblázat oszlopának nevét az osztálymezőhöz
2 egyedi logikai érték Minden mezőértéknek egyedinek kell lennie
3 nullázható logikai érték A mező nulla lehet
4 hossz int Maximális hossz (húrokhoz)

Adjunk hozzá néhány megszorítást a User Entity osztályunk mezőihez:

  • a felhasználónévnek egyedinek kell lennie, és nem lehet hosszabb 100 karakternél
  • szint nulla lehet
  • A createDate nem lehet null

Ezután a megjegyzéseink a következők:

@Entity
@Table(name="user")
class User {
   @Column(name="id")
    public Integer id;

   @Column(name="name", unique=true, length=100)
   public String name;

   @Column(name="level", nullable=true)
   public Integer level;

   @Column(name="created_date", nullable=false)
   public Date createdDate;
}

Létrehozhat egy User típusú objektumot , és akár minden null mezőt is hozzárendelhet hozzá, azonban amikor megpróbálja elmenteni az adatbázisba, a Hibernate ellenőrzést hajt végre, és ha bármilyen korlátozás megsérti, kivételt dob.

2.3 @Id megjegyzés

És még egy fontos megjegyzés @Id: . Használható egy táblázat elsődleges kulcsának beállítására.

Csak meg kell adnia ezt a megjegyzést a kívánt mezőhöz - és a Hibernate mindent maga fog megtenni:

@Entity
@Table(name="user")
class User {
   @Id
   @Column(name="id")
   public Integer id;

   @Column(name="name")
   public String name;

   @Column(name="level")
   public Integer level;

   @Column(name="created_date")
   public Date createdDate;
}

Ha azt szeretné, hogy a Hibernate önállóan generálja az objektumok azonosítóit, amikor hozzáadja őket az adatbázishoz, akkor hozzá kell adnia egy további megjegyzést - @GeneratedValue. Akkor a példánk így nézne ki:

@Entity
@Table(name="user")
class User {
   @Id
   @GeneratedValue
   public Integer id;

   @Column(name="name")
   public String name;

   @Column(name="level")
   public Integer level;

   @Column(name="created_date")
   public Date createdDate;
}

@ColumnAz id mező megjegyzését itt elhagytuk , mivel nem hordoz értékes információkat - a mező neve és az oszlop neve a táblázatban megegyezik, és a többi megjegyzésnek köszönhetően a Hibernate már megérti, hogy táblázatról beszélünk. oszlop.

Hozzászólások
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION