עיבוד אצווה ב- JDBC

ג'אווה טופ

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

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

1. הקדמה

קישוריות Java Database (JDBC) היא ממשק API של Java המשמש לאינטראקציה עם מסדי נתונים. עיבוד אצווה מקבץ מספר שאילתות ליחידה אחת ומעביר אותה בטיול רשת יחיד למסד נתונים.

במאמר זה נגלה כיצד ניתן להשתמש ב- JDBC לעיבוד אצווה של שאילתות SQL.

למידע נוסף על JDBC, תוכלו לעיין במאמר ההקדמה שלנו כאן.

2. מדוע עיבוד אצווה?

ביצועים ועקביות נתונים הם המניעים העיקריים לבצע עיבוד אצווה.

2.1. ביצועים משופרים

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

בואו נראה דוגמה לשאילתות עוקבות שנשלחו למסד נתונים:

statement.execute ("הכנס לעובד (מזהה, שם, ייעוד)" + "ערכים ('1', 'עובד עובד 1', 'ייעוד 1')"); statement.execute ("הכנס לעובד (מזהה, שם, ייעוד)" + "ערכים ('2', 'עובד עובד 2', 'ייעוד 2')");

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

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

2.2. עיקביות מידע

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

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

בואו נראה דוגמה להוספת נתונים למספר טבלאות:

statement.execute ("הכנס לעובד (מזהה, שם, ייעוד)" + "ערכים ('1', 'עובד שם 1', 'ייעוד 1')"); statement.execute ("INSERT INTO EMP_ADDRESS (ID, EMP_ID, ADDRESS)" + "VALUES ('10', '1', 'Address')"); 

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

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

3. כיצד לבצע עיבוד אצווה

JDBC מספקת שני שיעורים, הַצהָרָה ו הצהרה מוכנה לביצוע שאילתות במסד הנתונים. לשני הכיתות יש יישום משלהם של addBatch () ו executeBatch () שיטות המספקות לנו את פונקציונליות עיבוד האצווה.

3.1. עיבוד אצווה באמצעות הַצהָרָה

עם JDBC, הדרך הפשוטה ביותר לבצע שאילתות במסד נתונים היא באמצעות הַצהָרָה לְהִתְנַגֵד.

ראשית, באמצעות addBatch () אנו יכולים להוסיף את כל שאילתות ה- SQL לאצווה ואז לבצע שאילתות SQL באמצעות executeBatch ().

סוג ההחזרה של executeBatch () הוא int מערך המציין כמה רשומות הושפעו מהביצוע של כל משפט SQL.

בואו נראה דוגמה ליצירה וביצוע אצווה באמצעות הצהרה:

הצהרת הצהרה = connection.createStatement (); statement.addBatch ("הכנס לעובד (מזהה, שם, ייעוד)" + "ערכים ('1', 'עובד עובד', 'ייעוד')"); statement.addBatch ("INSERT INTO EMP_ADDRESS (ID, EMP_ID, ADDRESS)" + "VALUES ('10', '1', 'Address')"); statement.executeBatch (); 

בדוגמה שלעיל, אנו מנסים להכניס רשומות ל- עוֹבֵד ו EMP_ADDRESS טבלאות באמצעות הַצהָרָה. אנו יכולים לראות כיצד מתווספות שאילתות SQL באצווה שתבוצע.

3.2. עיבוד אצווה באמצעות הצהרה מוכנה

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

בואו נראה דוגמה באמצעות הצהרה מוכנה. ראשית, הגדרנו את המשפט באמצעות שאילתת SQL המקודדת כ- חוּט:

מחרוזת [] EMPLOYEES = מחרוזת חדשה [] {"זאק", "מייק", "לארי", "מאסק", "סטיב"}; מחרוזת [] DESIGNATIONS = מחרוזת חדשה [] {"CFO", "CSO", "CTO", "CEO", "CMO"}; מחרוזת insertEmployeeSQL = "הכנס לעובד (מזהה, שם, ייעוד)" + "ערכים (?,?,?)"; PreparedStatement employeeStmt = connection.prepareStatement (insertEmployeeSQL);

לאחר מכן נעבור במערך של חוּט ולהוסיף שאילתה שהוגדרה לאחרונה לאצווה.

לאחר סיום הלולאה, אנו מבצעים את האצווה:

עבור (int i = 0; i <EMPLOYEES.length; i ++) {מחרוזת עובדId = UUID.randomUUID (). toString (); עובדStmt.setString (1, עובדId); עובדStmt.setString (2, עובדים [i]); עובדStmt.setString (3, ייעודים [i]); workerStmt.addBatch (); } employeeStmt.executeBatch (); 

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

4. מסקנה

במאמר זה ראינו עד כמה עיבוד אצווה של שאילתות SQL חשוב בעת אינטראקציה עם מסדי נתונים באמצעות JDBC.

כמו תמיד, את הקוד הקשור למאמר זה ניתן למצוא באתר Github.

תחתית Java

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

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

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