Konfigurácia stratégie pomenovania 5 režimu dlhodobého spánku

1. Prehľad

Hibernate 5 poskytuje dve rôzne pomenovacie stratégie pre použitie s entitami Hibernate: implicitnú pomenovaciu stratégiu a fyzickú pomenovaciu stratégiu.

V tomto tutoriáli sa dozvieme, ako nakonfigurovať tieto stratégie pomenovania na mapovanie entít na prispôsobené názvy tabuliek a stĺpcov.

Pre čitateľov, ktorí v Hibernate začínajú, nezabudnite si prečítať náš úvodný článok tu.

2. Závislosti

Pre tento tutoriál použijeme základnú závislosť Hibernate Core:

 org.hibernate hibernate-core 5.3.6.Final 

3. Stratégia implicitného pomenovania

Hibernate používa logický názov na mapovanie názvu entity alebo atribútu na názov tabuľky alebo stĺpca. Toto meno je možné prispôsobiť dvoma spôsobmi: možno ho odvodiť automaticky pomocou znaku ImplicitNamingStrategy alebo to možno definovať explicitne pomocou anotácií.

The ImplicitNamingStrategy určuje, ako bude režim dlhodobého spánku odvodzovať logický názov z našej triedy Java a názvov vlastností. Môžeme si vybrať zo štyroch zabudovaných stratégií alebo si môžeme vytvoriť vlastnú.

V tomto príklade použijeme predvolenú stratégiu, ImplicitNamingStrategyJpaCompliantImpl. Pri použití tejto stratégie budú logické názvy rovnaké ako názvy našich tried a vlastností Java.

Ak sa chceme odchýliť od tejto stratégie pre konkrétnu entitu, môžeme na vykonanie týchto úprav použiť anotácie. Môžeme použiť @ Tabuľka anotácia na prispôsobenie názvu súboru @Entity. Pre nehnuteľnosť môžeme použiť @ Stĺpec anotácia:

@Entity @Table (name = "Zákazníci") verejná trieda Zákazník {@Id @GeneratedValue private Long id; private String meno; private String priezvisko; @Column (name = "email") private String emailAddress; // zakladatelia a zakladatelia}

Pri použití tejto konfigurácie sa logické názvy pre Zákazník entita a jej vlastnosti by boli:

Zákazník -> Meno zákazníka -> meno priezvisko -> priezvisko emailAddress -> email

4. Stratégia fyzického pomenovania

Teraz, keď sme nakonfigurovali naše logické názvy, pozrime sa na naše fyzické mená.

Hibernate používa stratégiu fyzického pomenovania na mapovanie našich logických názvov do tabuľky SQL a jej stĺpcov.

V predvolenom nastavení bude fyzický názov rovnaký ako logický názov ktoré sme špecifikovali v predchádzajúcej časti. Ak chceme prispôsobiť fyzické názvy, môžeme vytvoriť vlastný PhysicalNamingStrategy trieda.

Napríklad môžeme chcieť v našom kóde Java použiť názvy veľkých a veľkých písmen, ale pre naše skutočné názvy tabuliek a stĺpcov v databáze chceme použiť oddelené názvy podčiarknutia.

Teraz by sme mohli použiť kombináciu anotácií a zvyku ImplicitNamingStrategy tieto názvy správne namapovať, ale režim dlhodobého spánku 5 poskytuje PhysicalNamingStrategy ako spôsob zjednodušenia tohto procesu. Berie naše logické názvy z predchádzajúcej časti a umožňuje nám ich všetky prispôsobiť na jednom mieste.

Pozrime sa, ako sa to deje.

Najskôr vytvoríme stratégiu, ktorá prevedie názvy našich ťavých písmen na náš štandardnejší formát SQL:

verejná trieda CustomPhysicalNamingStrategy implementuje PhysicalNamingStrategy {@Override public Identifier toPhysicalCatalogName (konečný identifikátor identifikátora, konečný JdbcEnvironment jdbcEnv) {návrat convertToSnakeCase (identifikátor); } @Override public Identifier toPhysicalColumnName (final Identifier identifier, final JdbcEnvironment jdbcEnv) {return convertToSnakeCase (identifier); } @Override public Identifier toPhysicalSchemaName (konečný identifikátor identifikátora, konečný JdbcEnvironment jdbcEnv) {návrat convertToSnakeCase (identifikátor); } @Override public Identifier toPhysicalSequenceName (konečný identifikátor identifikátora, konečný JdbcEnvironment jdbcEnv) {návrat convertToSnakeCase (identifikátor); } @Override public Identifier toPhysicalTableName (final Identifier identifier, final JdbcEnvironment jdbcEnv) {return convertToSnakeCase (identifier); } private Identifier convertToSnakeCase (final Identifier identifier) ​​{final String regex = "([a-z]) ([A-Z])"; finálna výmena reťazca = "$ 1_ $ 2"; final String newName = identifier.getText () .replaceAll (regex, replacement) .toLowerCase (); return Identifier.toIdentifier (newName); }}

Na záver môžeme Hibernate povedať, aby využil našu novú stratégiu:

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

Využívanie našej novej stratégie proti Zákazník fyzická osoba by bola:

Zákazník -> zákazníci firstName -> first_name lastName -> last_name emailAddress -> email

5. Záver

V tomto rýchlom článku sme sa naučili vzťah medzi stratégiami implicitného a fyzického pomenovania.

Tiež sme videli, ako prispôsobiť implicitné a fyzické názvy entity a jej vlastnosti.

Zdrojový kód tohto tutoriálu si môžete pozrieť na stránkach Github.


$config[zx-auto] not found$config[zx-overlay] not found