תצורת אסטרטגיית שמות שינה 5

1. סקירה כללית

Hibernate 5 מספק שתי אסטרטגיות שמות שונות לשימוש עם ישויות Hibernate: אסטרטגיית שמות משתמעת ואסטרטגיה של שמות פיזיים.

במדריך זה נראה כיצד להגדיר אסטרטגיות שמות אלה למיפוי ישויות לשמות טבלאות ועמודות מותאמים אישית.

לקוראים שאינם חדשים במצב שינה, הקפד לבדוק את מאמר ההקדמה שלנו כאן.

2. תלות

נשתמש בתלות הליבה הבסיסית של שינה ללימוד זה:

 org.hibernate hibernate-core 5.3.6.Final 

3. אסטרטגיית שמות מרומזת

Hibernate משתמש בשם לוגי כדי למפות ישות או שם תכונה לשם טבלה או עמודה. זה שם ניתן להתאמה אישית בשתי דרכים: ניתן להפיק אותו באופן אוטומטי באמצעות ImplicitNamingStrategy או שניתן להגדיר זאת במפורש באמצעות הערות.

ה ImplicitNamingStrategy קובע כיצד ה- Hibernate מפיק שם הגיוני משמות ה- Java ושמות המאפיינים שלנו. אנו יכולים לבחור מתוך ארבע אסטרטגיות מובנות, או שנוכל ליצור משלנו.

לדוגמא זו נשתמש באסטרטגיית ברירת המחדל, ImplicitNamingStrategyJpaCompliantImpl. באמצעות אסטרטגיה זו, השמות הלוגיים יהיו זהים לשמות מחלקת Java ושמות המאפיינים שלנו.

אם אנו רוצים לסטות מאסטרטגיה זו עבור ישות ספציפית, אנו יכולים להשתמש בהערות כדי לבצע התאמות אישיות אלה. אנחנו יכולים להשתמש ב- @שולחן ביאור להתאמה אישית של שם ה- @יֵשׁוּת. עבור נכס, אנו יכולים להשתמש ב- @טור ביאור:

@Entity @Table (name = "לקוחות") לקוח בכיתה ציבורית {@Id @GeneratedValue פרטי מזהה ארוך; פרטי מחרוזת firstName; שם משפחה פרטי מחרוזת; @Column (name = "email") כתובת דוא"ל מחרוזת פרטית; // גטרים וקובעים}

באמצעות תצורה זו, השמות הלוגיים עבור ה- צרכן הישות ותכונותיה יהיו:

לקוח -> שם פרטי לקוחות -> שם משפחה שם משפחה -> שם משפחה דוא"ל כתובת -> דוא"ל

4. אסטרטגיית שמות גופניים

כעת, לאחר שקבענו את שמותינו הלוגיים, בואו נסתכל על השמות הפיזיים שלנו.

Hibernate משתמש באסטרטגיית השמות הפיזיים כדי למפות את השמות הלוגיים שלנו לטבלת SQL ועמודותיה.

כברירת מחדל, השם הפיזי יהיה זהה לשם הלוגי שציינו בסעיף הקודם. אם אנו רוצים להתאים אישית את השמות הפיזיים, אנו יכולים ליצור מותאם אישית פיזי-שמות-אסטרטגיה מעמד.

לדוגמה, ייתכן שנרצה להשתמש בשמות מקרי גמלים בקוד ה- Java שלנו, אך אנו רוצים להשתמש בשמות מופרדים תחתונים עבור שמות הטבלה והעמודות בפועל במסד הנתונים.

כעת נוכל להשתמש בשילוב של ביאורים ומנהג אישי ImplicitNamingStrategy כדי למפות את השמות האלה בצורה נכונה, אבל Hibernate 5 מספק את פיזי-שמות-אסטרטגיה כדרך לפשט את התהליך הזה. זה לוקח את השמות הלוגיים שלנו מהסעיף הקודם ומאפשר לנו להתאים את כולם במקום אחד.

בואו נראה איך זה נעשה.

ראשית, ניצור אסטרטגיה הממירה את שמות מארזי הגמלים שלנו לשימוש בפורמט SQL הסטנדרטי יותר שלנו:

מחלקה ציבורית CustomPhysicalNamingStrategy מיישמת את PhysicalNamingStrategy {@Override Public Identifier toPhysicalCatalogName (מזהה סופי של מזהה, JdbcEnvironment jdbcEnv סופי) {return convertToSnakeCase (מזהה); } @Override מזהה ציבורי ל-PhysicalColumnName (מזהה סופי של מזהה, JdbcEnvironment סופי jdbcEnv) {להחזיר convertToSnakeCase (מזהה); } @Override מזהה ציבורי ל-PhysicalSchemaName (מזהה סופי של מזהה, JdbcEnvironment jdbcEnv סופי) {return convertToSnakeCase (מזהה); } @Override מזהה ציבורי ל-PhysicalSequenceName (מזהה סופי של מזהה, JdbcEnvironment סופי jdbcEnv) {להחזיר convertToSnakeCase (מזהה); } @Override מזהה ציבורי ל-PhysicalTableName (מזהה סופי של מזהה, JdbcEnvironment jdbcEnv סופי) {return convertToSnakeCase (מזהה); } מזהה פרטי convertToSnakeCase (מזהה סופי של מזהה) {final String regex = "([a-z]) ([A-Z])"; החלפת מחרוזת סופית = "$ 1_ $ 2"; מחרוזת סופית newName = identifier.getText () .replaceAll (regex, החלפה) .toLowerCase (); להחזיר את Identifier.toIdentifier (newName); }}

לבסוף, אנו יכולים לומר ל- Hibernate להשתמש באסטרטגיה החדשה שלנו:

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

באמצעות האסטרטגיה החדשה שלנו נגד צרכן הישות, השמות הפיזיים יהיו:

לקוח -> שם פרטי לקוחות -> שם פרטי שם משפחה -> שם משפחה דוא"ל כתובת -> דוא"ל

5. מסקנה

במאמר מהיר זה למדנו את הקשר בין האסטרטגיות למתן שמות פיזיים.

ראינו גם כיצד להתאים אישית את השמות המשתמעים והפיזיים של ישות ותכונותיה.

אתה יכול להציג את קוד המקור של הדרכה זו ב- Github.


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