טוען מנהלי התקנים של JDBC

ג'אווה טופ

רק הכרזתי על החדש למד אביב קורס, המתמקד ביסודות האביב 5 ומגף האביב 2:

>> בדוק את הקורס

1. הקדמה

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

במדריך זה, נבחן כמה מהשלבים הבסיסיים הדרושים לטעינת מנהלי התקנים של JDBC.

2. נהגי JDBC

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

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

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

חיבור con = DriverManager.getConnection ("jdbc: postgresql: // localhost: 21500 / test? User = fred & password = secret & ssl = true"); 

כיצד מנהל הנהג יודע באיזה מנהל התקן להשתמש אם האינדיקציה היחידה היא כתובת ה- URL שצוינה?

יתכן וישנם נהגי JDBC רבים בשביל הכיתה, כך שחייבת להיות דרך להבחין בין כל נהג באופן ייחודי.

3. גישה מורשת

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

Class.forName ("oracle.jdbc.driver.OracleDriver");

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

לאחר השלמת ההרשמה נוכל להשתמש במזהה זה בתוך כתובת ה- JDBC כ- jdbc: אורקל.

שגרת רישום נהגים טיפוסית תביא לאינסטינציה של מופע הנהג ותעביר אותה לידי DriverManager.registerDriver שיטה:

רישום חלל סטטי ציבורי () זורק SQLException {if (isRegistered ()) {זרוק IllegalStateException חדש ("הנהג כבר רשום. ניתן לרשום אותו רק פעם אחת."); } אחר {Driver registeredDriver = מנהל התקן חדש (); DriverManager.registerDriver (registeredDriver); Driver.registeredDriver = registeredDriver; }}

הדוגמה שלמעלה מראה את רישום הנהג של Postgres JDBC עם DriverManager. זה מופעל על ידי JVM כחלק מהאתחול הסטטי.

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

java -Djdbc.drivers = oracle.jdbc.driver.OracleDriver

כאשר צוין מאפיין זה, מנהל הנהג ינסה לטעון אוטומטית את מנהל ההתקן JDBC שצוין.

4. גישה JDBC 4

הבעיה של גילוי שירותים אוטומטי נפתר באמצעות Java 1.6 ומנגנון נותני השירותים. זה מאפשר לספקי שירות להכריז על שירותיהם על ידי הצבתם תחת META-INF / שירותים בתוך קובץ ה- JAR המכיל את השירותים.

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

המפרט של נותן השירות פשוט מחליף טעינה ידנית של מחלקות בגישה הצהרתית. לדוגמה, מנהל ההתקן של PostgreSQL JDBC מכיל קובץ יחיד META-INF / שירותים /. שם הקובץ הוא java.sql.Driver (שהיא אמנה מבוססת היטב עבור נהגי JDBC). הוא מכיל את שם המחלקה המוסמך במלואו של מנהל ההתקן JDBC, שהוא, במקרה זה org.postgresql.Driver.

5. מסקנה

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

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

תחתית Java

רק הכרזתי על החדש למד אביב קורס, המתמקד ביסודות האביב 5 ומגף האביב 2:

>> בדוק את הקורס