Hibernate 5 elnevezési stratégia konfigurációja

1. Áttekintés

A Hibernate 5 két különböző elnevezési stratégiát kínál a hibernált entitásokkal való használatra: egy implicit elnevezési stratégiát és egy fizikai elnevezési stratégiát.

Ebben az oktatóanyagban megtudhatjuk, hogyan konfigurálhatjuk ezeket az elnevezési stratégiákat az entitások testreszabott tábla- és oszlopnevekhez való hozzárendeléséhez.

Azok számára az olvasók számára, akik újak a hibernálásban, olvassa el itt a bevezető cikkünket.

2. Függőségek

Az oktatóanyaghoz az alapvető hibernált magfüggőséget fogjuk használni:

 org.hibernate hibernate-core 5.3.6.Végső 

3. Implicit elnevezési stratégia

A hibernálás logikai névvel társítja az entitást vagy az attribútum nevét egy tábla vagy oszlop nevéhez. Ez a név kétféleképpen testre szabható: automatikusan levezethető az an használatával ImplicitNamesStrategy vagy annotációk segítségével kifejezetten meghatározható.

A ImplicitNamesStrategy szabályozza, hogy a Hibernate hogyan hozza létre a logikai nevet a Java osztályunkból és tulajdonságunkból. Négy beépített stratégia közül választhatunk, vagy létrehozhatunk sajátot.

Ebben a példában az alapértelmezett stratégiát fogjuk használni, ImplicitNamingStrategyJpaCompliantImpl. Ezt a stratégiát használva a logikai nevek meg fognak egyezni a Java osztály- és tulajdonságneveinkkel.

Ha egy adott entitásnál el akarunk térni ettől a stratégiától, akkor a testreszabásokhoz kommentárokat használhatunk. Használhatjuk a @Asztal kommentár az an. nevének testreszabásához @Entity. Egy ingatlan esetében használhatjuk a @Oszlop kommentár:

@Entity @Table (name = "Ügyfelek") public class Ügyfél {@Id @GeneratedValue private Long id; privát karakterlánc keresztnév; privát karakterlánc vezetéknév; @ Oszlop (név = "e-mail") privát karakterlánc e-mail cím; // szerelők és beállítók}

Ennek a konfigurációnak a használatával a Vevő entitás és tulajdonságai a következők lennének:

Ügyfél -> Az ügyfelek keresztneve -> keresztnév vezetéknév -> vezetéknév emailcím -> e-mail

4. Fizikai elnevezési stratégia

Most, hogy konfiguráltuk a logikai nevünket, nézzük meg a fizikai nevünket.

A hibernálás a fizikai elnevezési stratégiát használja a logikai nevek leképezéséhez egy SQL táblához és annak oszlopaihoz.

Alapértelmezés szerint a fizikai név megegyezik a logikai névvel hogy az előző szakaszban meghatároztuk. Ha testre akarjuk szabni a fizikai neveket, akkor létrehozhatunk egy egyéni PhysicalNamingStrategy osztály.

Például használhatunk teve esetek nevét a Java kódunkban, de aláhúzással elválasztott neveket szeretnénk használni az adatbázisban szereplő tényleges tábla- és oszlopneveinkhez.

Most használhatnánk annotációk és egy egyedi kombinációt ImplicitNamesStrategy hogy ezeket a neveket helyesen feltérképezzem, de a Hibernate 5 biztosítja a PhysicalNamingStrategy a folyamat egyszerűsítésének módja. Az előző szakasz logikai neveinket veszi át, és lehetővé teszi számunkra, hogy mindet egy helyen testre szabjuk.

Lássuk, hogyan történik ez.

Először létrehozunk egy stratégiát, amely átalakítja a teve esetneveinket a szabványosabb SQL formátumunk használatára:

public class CustomPhysicalNamingStrategy megvalósítja a PhysicalNamingStrategy {@Override public Identifier toPhysicalCatalogName (végső azonosító azonosító, végleges JdbcEnvironment jdbcEnv) {return convertToSnakeCase (azonosító); } @Orride public Identifier toPhysicalColumnName (végső azonosító azonosító, végső JdbcEnvironment jdbcEnv) {return convertToSnakeCase (azonosító); } @Orride public Identifier toPhysicalSchemaName (végső azonosító azonosító, végső JdbcEnvironment jdbcEnv) {return convertToSnakeCase (azonosító); } @Orride public Identifier toPhysicalSequenceName (végső azonosító azonosító, végső JdbcEnvironment jdbcEnv) {return convertToSnakeCase (azonosító); } @Orride public Identifier toPhysicalTableName (végső azonosító azonosító, végső JdbcEnvironment jdbcEnv) {return convertToSnakeCase (azonosító); } privát azonosító convertToSnakeCase (végső azonosító azonosító) {final String regex = "([a-z]) ([A-Z])"; végleges karakterlánc-csere = "$ 1_ $ 2"; final String newName = azonosító.getText () .replaceAll (regex, csere) .toLowerCase (); return Identifier.toIdentifier (newName); }}

Végül elmondhatjuk Hibernate-nek, hogy használja új stratégiánkat:

hibernate.physical_naming_strategy = com.baeldung.hibernate.namingstrategy.CustomPhysicalNamingStrategy

Új stratégiánk felhasználása a Vevő entitás, a fizikai nevek a következők lennének:

Ügyfél -> ügyfelek keresztnév -> keresztnév utónév -> vezetéknév email címCím -> e-mail

5. Következtetés

Ebben a rövid cikkben megismertük az implicit és a fizikai elnevezési stratégia kapcsolatát.

Láttuk azt is, hogyan lehet testre szabni az entitás implicit és fizikai nevét és tulajdonságait.

Az oktatóanyag forráskódját a Githubon tekintheti meg.