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 @Table
elhagyható.
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ó @Column
kü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;
}
@Column
Az 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.
GO TO FULL VERSION