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.