ממשק ה- API של Bootstrapping ל- Hibernate 5

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

במדריך זה נחקור את המנגנון החדש שבאמצעותו נוכל לאתחל ולהתחיל שינה SessionFactory. אנו נתמקד במיוחד בתהליך האתחול המקורי החדש כפי שהוא עוצב מחדש בגרסה 5.0.

לפני גרסה 5.0, היישומים נאלצו להשתמש ב- תְצוּרָה בכיתה לאתחול ה- SessionFactory. גישה זו הושבתה כעת, מכיוון שתיעוד ה- Hibernate ממליץ להשתמש ב- API החדש המבוסס על ה- שירות רישום.

פשוט שים, בונה SessionFactory כל העניין שיש לו שירות רישום יישום המחזיק את שירותים נחוץ למצב שינה במהלך ההפעלה וגם בזמן הריצה.

2. תלות Maven

לפני שנתחיל לחקור את תהליך האתחול החדש, עלינו להוסיף את ה- ליבת שינה קובץ צנצנת לשביל הכיתה של הפרויקט. בפרויקט מבוסס Maven, עלינו רק להצהיר על תלות זו ב pom.xml קוֹבֶץ:

 org.hibernate hibernate-core 5.4.0.Final 

מכיוון ש- Hibernate היא ספקית JPA, זה יכלול גם את התלות ב- JPA API באופן תדיר.

אנו זקוקים גם למנהל ההתקן JDBC של מסד הנתונים שאיתו אנו עובדים. בדוגמה זו נשתמש במסד נתונים H2 מוטבע:

 com.h2database h2 1.4.197 

אל תהסס לבדוק את הגרסאות העדכניות ביותר של ליבת שינה ו נהג H2 במרכז מייבן.

3. ממשק API של Bootstrapping

Bootstrapping מתייחס לתהליך הבנייה והאתחול של a SessionFactory.

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

בואו לחקור את האובייקטים העיקריים האלה בפירוט רב יותר.

3.1. שֵׁרוּת

לפני שנחפור ב שירות רישום מושג, ראשית עלינו להבין מה א שֵׁרוּת הוא. ב- Hibernate 5.0, א שֵׁרוּת הוא סוג של פונקציונליות המיוצגת על ידי הממשק עם אותו שם:

org.hibernate.service.Service

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

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

3.2. שירות רישום

הצעד הראשון בבניית א SessionFactory זה ליצור שירות רישום. זה מאפשר להחזיק שונים שירותים המספקות פונקציות הדרושות למצב שינה ומבוססות על פונקציונליות Java SPI.

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

ישנם שני סוגים של שירות רישום והם היררכיים.הראשון הוא ה BootstrapServiceRegistry, שאין לה הורה ומחזיקה בשלושת השירותים הנדרשים הללו:

  • ClassLoaderService: מאפשר למצב שינה לנהל אינטראקציה עם ClassLoader מסביבות זמן הריצה השונות
  • IntegratorService: שולט בגילוי ובניהול של אינטגרטור שירות המאפשר ליישומי צד ג 'להשתלב עם מצב שינה
  • אסטרטגיה בורר: פותר יישומים של חוזי אסטרטגיה שונים

לבנות א BootstrapServiceRegistry היישום, אנו משתמשים ב- BootstrapServiceRegistryBuilder כיתת מפעל, המאפשר התאמה אישית של שלושת השירותים הללו בצורה בטיחותית:

BootstrapServiceRegistry bootstrapServiceRegistry = חדש BootstrapServiceRegistryBuilder () .applyClassLoader () .applyIntegrator () .applyStrategySelector () .build ();

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

כמו הרישום הקודם, אנו משתמשים ב- StandardServiceRegistryBuilder כדי ליצור מופע של StandardServiceRegistry:

StandardServiceRegistryBuilder standardServiceRegistry = חדש StandardServiceRegistryBuilder ();

מתחת למכסה המנוע, ה StandardServiceRegistryBuilder יוצר ומשתמש במופע של BootstrapServiceRegistry. אנו יכולים גם להשתמש בבנאי עמוס כדי להעביר מופע שכבר נוצר:

BootstrapServiceRegistry bootstrapServiceRegistry = BootstrapServiceRegistryBuilder חדש (). Build (); StandardServiceRegistryBuilder standardServiceRegistryBuilder = StandardServiceRegistryBuilder חדש (bootstrapServiceRegistry);

אנו משתמשים בבונה זה כדי לטעון תצורה מקובץ משאבים, כגון ברירת המחדל hibernate.cfg.xmlולבסוף, אנו קוראים את לִבנוֹת() שיטה לקבל מופע של StandardServiceRegistry.

StandardServiceRegistry standardServiceRegistry = standardServiceRegistryBuilder .configure () .build ();

3.3. מטא נתונים

לאחר שהגדרתי את כל ה- שירותים נדרש על ידי יצירת a שירות רישום כל אחד מהסוגים BootstrapServiceRegistry או StandardServiceRegistry, כעת עלינו לספק את הייצוג של מודל התחום של היישום ומיפוי מסד הנתונים שלו.

ה מקורות מטא נתונים הכיתה אחראית לכך:

MetadataSources metadataSources = MetadataSources חדש (standardServiceRegistry); metadataSources.addAnnotatedClass (); metadataSources.addResource ()

לאחר מכן, נקבל מופע של מטא נתונים, שבו נשתמש בשלב האחרון:

מטא-נתונים מטא-נתונים = metadataSources.buildMetadata ();

3.4. SessionFactory

השלב האחרון הוא ליצור את SessionFactory מהנוצר בעבר מטא נתונים:

SessionFactory sessionFactory = metadata.buildSessionFactory ();

כעת אנו יכולים לפתוח א מוֹשָׁב והתחל להתמיד ולקרוא ישויות:

מושב מושב = sessionFactory.openSession (); סרט סרט = סרט חדש (100 ליטר); session.persist (סרט); session.createQuery ("FROM Movie"). list ();

4. מסקנה

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

את הקוד המלא לדוגמאות אלה ניתן למצוא באתר Github.


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