מאגר חיבורי אורקל עם אביב

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

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

במדריך זה נדבר כיצד נוכל לבצע אינטגרציה זו.

2. המאגר

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

במקרה זה אנו נשתמש ב- Oracle Database 12c גרסה 2 (12.2.0.2) תמונת דוקר מהדורה רגילה כתוצאה מכך, הדבר מונע מאיתנו להתקין תוכנה חדשה במחשב שלנו.

3. איגום חיבורים

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

3.1. HikariCP

הדרך הקלה ביותר לאיחוד חיבורים עם Spring היא שימוש בתצורה אוטומטית. ה אביב-אתחול-המתנע-jdbc התלות כוללת את HikariCP כמקור הנתונים המאגר המועדף. לכן, אם נסתכל על שלנו pom.xml נראה:

 org.springframework.boot spring-boot-starter-data-jpa 

ה spring-boot-starter-data-jpa התלות כוללת את אביב-אתחול-המתנע-jdbc תלות מעבר לנו.

עכשיו אנחנו רק צריכים להוסיף את התצורה שלנו לתוך ה- application.properties קוֹבֶץ:

# הגדרות חיבור של OracleDB spring.datasource.url = jdbc: oracle: thin: @ // localhost: 11521 / ORCLPDB1 spring.datasource.username = books spring.datasource.password = books spring.datasource.driver-class-name = oracle. הגדרות jdbc.OracleDriver # HikariCP spring.datasource.hikari.minimumIdle = 5 spring.datasource.hikari.maximumPoolSize = 20 spring.datasource.hikari.idleTimeout = 30000 spring.datasource.hikari.maxLifetime = 2000000 spring.datasource.hikari 30000 spring.datasource.hikari.poolName = HikariPoolBooks # JPA settings spring.jpa.database-platform = org.hibernate.dialect.Oracle12cDialect spring.jpa.hibernate.use-new-id-generator-mappings = false spring.jpa.hibernate .ddl-auto = ליצור

כפי שאתה יכול לראות, יש לנו שלוש הגדרות תצורה של חלקים שונים:

  • ה הגדרות חיבור של OracleDB החלק הזה הוא המקום בו הגדרנו את מאפייני החיבור של JDBC כמו שתמיד עושים
  • ה הגדרות HikariCP החלק הזה הוא המקום בו אנו מגדירים את מאגר החיבורים של HikariCP. במקרה שנזדקק לתצורה מתקדמת עלינו לבדוק את רשימת מאפייני התצורה של HikariCP
  • ה הגדרות JPA סעיף הוא תצורה בסיסית כלשהי לשימוש במצב שינה

זה כל מה שאנחנו צריכים. זה לא יכול להיות קל יותר, נכון?

3.2. מאגר חיבורים DBCP2 של Tomcat ו- Commons

אביב ממליץ על HikariCP על ביצועיו. מצד שני, הוא תומך גם ב- Tomcat ו- Commons DBCP2 ביישומים מוגדרים אוטומטיים של Spring Boot.

הוא מנסה להשתמש ב- HikariCP. אם זה לא זמין, נסה להשתמש באיגוד Tomcat. אם אף אחד מאלה אינו זמין, הוא מנסה להשתמש ב- DBCP2 של Commons.

אנו יכולים גם לציין את מאגר החיבורים לשימוש. במקרה כזה, עלינו רק להוסיף נכס חדש לשטח שלנו application.properties קוֹבֶץ:

spring.datasource.type = org.apache.tomcat.jdbc.pool.DataSource

אם עלינו להגדיר הגדרות ספציפיות, יש לנו קידומות:

  • spring.datasource.hikari. * לתצורת HikariCP
  • spring.datasource.tomcat. * לתצורת בריכת Tomcat
  • spring.datasource.dbcp2. * לתצורת DBC2 של Commons

ובעצם נוכל להגדיר אביב.datasource.type לכל אחר מקור מידע יישום. אין צורך להיות אחד משלושת המוזכרים לעיל.

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

3.3. מאגר חיבורים אוניברסליים של אורקל

אם אנו רוצים להשתמש בתצורות מתקדמות, עלינו להגדיר במפורש את מקור מידע שעועית וקבע את המאפיינים. כנראה הדרך הקלה ביותר לעשות זאת היא באמצעות @תְצוּרָה ו @אפונה ביאורים.

מאגר החיבורים האוניברסלי של אורקל (UCP) עבור JDBC מספק יישום מלא לכל חיבורי JDBC במטמון. זה עושה שימוש חוזר בקשרים במקום ליצור חדשים. זה גם נותן לנו קבוצה של מאפיינים להתאמה אישית של התנהגות הבריכה.

אם אנו רוצים להשתמש ב- UCP, עלינו להוסיף את התלות הבאה של Maven:

 com.oracle.database.jdbc ojdbc8 com.oracle.database.ha ons com.oracle.database.jdbc ucp 

כעת אנו מוכנים להכריז ולהגדיר את תצורת מאגר החיבורים של UCP:

@Configuration @Profile ("oracle-ucp") מחלקה ציבורית OracleUCPConfiguration {@Bean DataSource publicSource () זורק SQLException {PoolDataSource dataSource = PoolDataSourceFactory.getPoolDataSource (); dataSource.setUser ("ספרים"); dataSource.setPassword ("ספרים"); dataSource.setConnectionFactoryClassName ("oracle.jdbc.pool.OracleDataSource"); dataSource.setURL ("jdbc: אורקל: דק: @ // localhost: 11521 / ORCLPDB1"); dataSource.setFastConnectionFailoverEnabled (true); dataSource.setInitialPoolSize (5); dataSource.setMinPoolSize (5); dataSource.setMaxPoolSize (10); להחזיר dataSource; }}

בדוגמה שלעיל התאמנו כמה מאפייני בריכה:

  • setInitialPoolSize מציין את מספר החיבורים הזמינים שנוצרו לאחר תחילת הבריכה
  • setMinPoolSize מציין את המספר המינימלי של חיבורים זמינים ומושאלים שהבריכה שלנו מקיימת, וכן
  • setMaxPoolSize מציין את המספר המרבי של חיבורים זמינים ומושאלים שמקיימת הבריכה שלנו

אם עלינו להוסיף מאפייני תצורה נוספים, עלינו לבדוק את PoolDataSource JavaDoc או המדריך למפתחים.

4. גרסאות אורקל ישנות יותר

לגרסאות לפני 11.2, כמו Oracle 9i או 10g, עלינו ליצור OracleDataSource במקום להשתמש במאגר החיבורים האוניברסלי של אורקל.

בשלנו OracleDataSource למשל, אנו מפעילים מטמון חיבורים באמצעות setConnectionCachingEnabled:

@Configuration @Profile ("אורקל") מחלקה ציבורית OracleConfiguration {@Bean DataSource publicSource () זורק SQLException {OracleDataSource dataSource = OracleDataSource חדש (); dataSource.setUser ("ספרים"); dataSource.setPassword ("ספרים"); dataSource.setURL ("jdbc: אורקל: דק: @ // localhost: 11521 / ORCLPDB1"); dataSource.setFastConnectionFailoverEnabled (true); dataSource.setImplicitCachingEnabled (נכון); dataSource.setConnectionCachingEnabled (נכון); להחזיר dataSource; }}

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

5. מסקנה

כיום, הגדרת תצורה של חיבור מסדי נתונים של Oracle באמצעות Spring היא חתיכת עוגה.

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

וכמו תמיד, ניתן למצוא את הדוגמה המלאה ב- GitHub.


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