אביב, שינה ומקור נתונים של JNDI

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

במאמר זה ניצור אפליקציית אביב באמצעות Hibernate / JPA עם מקור נתונים JNDI.

אם ברצונך לגלות מחדש את יסודות האביב והירדמות, עיין במאמר זה.

2. הכרזת מקור הנתונים

2.1. מערכת

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

בדוגמה זו נשתמש בגרסת 8.5.x של Tomcat ובגרסת 9.5.x של מסד הנתונים PostgreSQL.

אתה אמור להיות מסוגל לשכפל את אותם השלבים באמצעות כל מיכל יישומי Java אחר ובסיס נתונים לבחירתך (כל עוד יש לך צנצנות JDBC מתאימות לכך!).

2.2. הכרזת מקור הנתונים על מיכל היישומים

נכריז על מקור הנתונים שלנו ב- / conf /server.xml קובץ בתוך אֵלֵמֶנט.

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

שים לב שקראנו למשאב שלנו jdbc / BaeldungDatabase. זה יהיה השם לשימוש כאשר מתייחסים למקור נתונים זה.

היינו צריכים גם לציין את סוג המחלקה ואת שם מנהל ההתקן של מסד הנתונים. כדי שזה יעבוד, עליך למקם גם את הצנצנת המתאימה / lib / (במקרה זה, צנצנת JDBC של PostgreSQL).

פרמטרי התצורה הנותרים הם:

  • auth = "מיכל" - פירושו שהמכולה ייכנס למנהל המשאבים מטעם היישום
  • maxTotal, maxIdle, ו maxWaitMillis - הם פרמטרי התצורה של חיבור הבריכה

עלינו להגדיר גם א ResourceLink בתוך ה אלמנט ב / conf / context.xml, שייראה כמו:

שים לב שאנחנו משתמשים בשם שהגדרנו בזה שלנו מַשׁאָב ב server.xml.

3. שימוש במשאב

3.1. הגדרת היישום

אנו נגדיר יישום פשוט של Spring + JPA + Hibernate באמצעות תצורת Java טהורה כעת.

נתחיל בהגדרת תצורת ההקשר של האביב (זכור כי אנו מתמקדים ב- JNDI כאן ובהנחה שאתה כבר מכיר את יסודות התצורה של אביב):

@Configuration @EnableTransactionManagement @PropertySource ("classpath: persistence-jndi.properties") @ComponentScan ("com.baeldung.hibernate.cache") @EnableJpaRepositories (basePackages = "com.baeldung.hibernate.cacheDono. {@ סביבה פרטית בסביבה פרטית; @Bean LocalContainerEntityManagerFactory ציבורי LocalMontagerFactory () זורק NamingException {LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean (); em.setDataSource (dataSource ()); // שאר תצורת מנהל הישויות מחזירים אותם; } @Bean DataSource הציבורי dataSource () זורק את NamingException {return (DataSource) JndiTemplate חדש (). Lookup (env.getProperty ("jdbc.url")); } @Bean פלטפורמת TransactionManager פלטפורמה ציבורית (EntityManagerFactory emf) {JpaTransactionManager transactionManager = JpaTransactionManager חדש (); transactionManager.setEntityManagerFactory (emf); TransactionManager החזר; } // שאר תצורת ההתמדה}

שים לב שיש לנו דוגמה מלאה לתצורה במאמר Spring 4 ו- JPA with Hibernate.

על מנת ליצור את שלנו מקור מידע שעועית, עלינו לחפש את משאב JNDI שהגדרנו במיכל היישומים שלנו. נאחסן את זה התמדה- jndi. נכסים מפתח (בין שאר המאפיינים):

jdbc.url = java: comp / env / jdbc / BaeldungDatabase

שים לב שב- נכס jdbc.url אנו מגדירים שם שורש לחיפוש: java: comp / env / (אלה ברירות מחדל ותואמות רכיב וסביבה) ואז אותו שם שהשתמשנו בו server.xml: jdbc / BaeldungDatabase.

3.2. תצורת JPA - דגם, DAO ושירות

אנו נשתמש במודל פשוט עם ה- @יֵשׁוּת ביאור עם נוצר תְעוּדַת זֶהוּת ו שֵׁם:

@Entity בכיתה ציבורית Foo {@Id @GeneratedValue (אסטרטגיה = GenerationType.AUTO) @Column (name = "ID") מזהה ארוך פרטי; @Column (name = "NAME") שם מחרוזת פרטי; // ברירת מחדל וקובעים}

בואו נגדיר מאגר פשוט:

@ מאגר בכיתה ציבורית FooDao {@PersistenceContext פרטי EntityManager entityManager; רשימה ציבורית findAll () {return entityManager .createQuery ("מ-" + Foo.class.getName ()). getResultList (); }}

ולבסוף, בואו ניצור שירות פשוט:

@Service @ כיתה ציבורית Transactional FooService {@ FooDao פרטית מאושרת; רשימה ציבורית findAll () {return dao.findAll (); }}

עם זאת, יש לך את כל מה שאתה צריך על מנת להשתמש במקור הנתונים JNDI שלך ביישום האביב שלך.

4. מסקנה

במאמר זה, יצרנו יישום Spring לדוגמה עם הגדרת JPA + Hibernate העובדת עם מקור נתונים של JNDI.

שים לב שהחלקים החשובים ביותר הם הגדרת המשאב במיכל היישום וחיפוש המשאב JNDI בתצורה.

וכמו תמיד, ניתן למצוא את הפרויקט המלא ב- GitHub.


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