jdbc batch processing
Αυτό το σεμινάριο παρέχει μια πλήρη κατανόηση της επεξεργασίας παρτίδας JDBC και της διαδικασίας αποθήκευσης Java με δείγματα παραδειγμάτων Java:
Στο Χειρισμός εξαίρεσης JDBC φροντιστήριο του Εκμάθηση σειράς JDBC , μάθαμε τρόπους χειρισμού εξαιρέσεων SQL με τη βοήθεια παραδειγμάτων προγραμματισμού.
Σε αυτό το σεμινάριο, θα συζητήσουμε μεθόδους για την επεξεργασία παρτίδας σε Java χρησιμοποιώντας πρόγραμμα οδήγησης JDBC. Θα μάθουμε επίσης πώς να δημιουργούμε αποθηκευμένες διαδικασίες και να το καλούμε από ένα πρόγραμμα Java.
Ας ξεκινήσουμε με την κατανόηση της παρτίδας επεξεργασίας και των πλεονεκτημάτων της.
Τι θα μάθετε:
Επεξεργασία παρτίδας JDBC
Είναι η διαδικασία εκτέλεσης πολλών δηλώσεων SQL σε μία συναλλαγή. Αυτή η διαδικασία μειώνει το χρόνο επικοινωνίας και αυξάνει την απόδοση. Διευκολύνει την επεξεργασία μεγάλου όγκου δεδομένων.
Πλεονεκτήματα της επεξεργασίας παρτίδων
Η Batch Processing στοχεύει στη βελτίωση της απόδοσης και της συνοχής των δεδομένων.
Εκτέλεση
Εξετάστε το σενάριο όπου θα πρέπει να προστεθούν πολλαπλές καταχωρήσεις (ας πούμε 5) σε έναν πίνακα από ένα πρόγραμμα JAVA. Η απλή προσέγγιση θα ανοίξει μια σύνδεση με τη βάση δεδομένων, θα γράψει INSERT ερωτήματα και θα εκτελέσει κάθε ερώτημα χρησιμοποιώντας το Statement ή το PreparedStatement.
Αυτή η προσέγγιση θα αυξήσει τα ταξίδια δικτύου στη βάση δεδομένων και, ως εκ τούτου, θα οδηγήσει σε κακή απόδοση. Χρησιμοποιώντας Batch processing, μπορούμε να εκτελέσουμε αυτήν τη λειτουργία με μία κλήση.
Συνοχή δεδομένων
Σε ορισμένες περιπτώσεις, πρέπει να εισαγάγουμε / ενημερώσουμε δεδομένα σε πολλούς πίνακες. Αυτό θα οδηγήσει σε μια αλληλένδετη συναλλαγή όπου η ακολουθία των ερωτημάτων που εισάγονται ή ενημερώνονται είναι σημαντική. Τυχόν σφάλματα που προκύπτουν κατά την εκτέλεση θα έχουν ως αποτέλεσμα την επαναφορά των δεδομένων που έχουν εισαχθεί από προηγούμενα ερωτήματα εάν υπάρχουν.
Παράδειγμα:
# 1) Ο πίνακας 'EMPLOYEE_DETAILS' έχει 3 στήλες: ταυτότητα , Ονομα , και Ο ρόλος του υπαλλήλου.
statement.execute('INSERT INTO EMPLOYEE_DETAILS(ID, NAME, ROLE) ' + 'VALUES ('1','EMPLOYEE_NAME1','ROLE1')');
#δύο) Ο πίνακας «EMPLOYEE_ADDRESS» έχει 2 στήλες: Αναγνωριστικό EMP και Διεύθυνση
statement.execute('INSERT INTO EMPLOYEE_ADDRESS( EMP_ID, ADDRESS) ' + 'VALUES ('1','ADDRESS1')');
Ένα πρόβλημα μπορεί να προκύψει στο παραπάνω παράδειγμα όταν η πρώτη δήλωση εκτελείται με επιτυχία, αλλά η δεύτερη δήλωση αποτυγχάνει. Σε αυτήν την περίπτωση, δεν υπάρχει επαναφορά των δεδομένων που εισήχθησαν από την πρώτη δήλωση. Αυτό οδηγεί σε ασυνέπεια δεδομένων.
Μπορούμε να επιτύχουμε συνέπεια δεδομένων με τη δέσμευση της συναλλαγής στο τέλος ή με την επαναφορά σε περίπτωση εξαιρέσεων. Αλλά, για να επιτευχθεί αυτό, το DB πρέπει να χτυπιέται επανειλημμένα για κάθε δήλωση.
Από την άλλη πλευρά, κατά την επεξεργασία παρτίδας, μόνο όταν όλα τα ερωτήματα μέσα σε μια παρτίδα εκτελούνται με επιτυχία, τα δεδομένα θα πραγματοποιηθούν. Διαφορετικά, δεν θα.
Πώς να εκτελέσετε μαζική επεξεργασία
Μπορούμε να εκτελέσουμε επεξεργασία παρτίδας χρησιμοποιώντας τις μεθόδους addbatch () και executeBatch () που είναι διαθέσιμες τόσο στις κατηγορίες Statement όσο και PreparedStatement.
Σε αυτό το σεμινάριο, όλα τα προγράμματα είναι γραμμένα σε Java. Έχουμε χρησιμοποιήσει την έκδοση Java 8 και το Oracle DB.
=> Κάντε κλικ εδώ για να κατεβάσετε το λογισμικό της Oracle
=> Κάντε κλικ εδώ για να κάνετε λήψη της έκδοσης Java 8
Στο ακόλουθο παράδειγμα, θα δούμε πώς να κάνουμε επεξεργασία παρτίδας πολύπλοκα. Έχει τη διαδικασία εγκατάστασης Java βήμα προς βήμα.
Δεδομένα στον πίνακα EMPLOYEE πριν από την εισαγωγή δεδομένων:
ποιο είναι το καλύτερο πρόγραμμα αποκλεισμού διαφημίσεων για το chrome
Πρόγραμμα Java
package com.STH.JDBC; import java.sql.BatchUpdateException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class ExecuteBatch_Example { public static void main(String() args) throws ClassNotFoundException, SQLException { //Inserting the data in EMPLOYEE Table using the following query String insert_query1 = 'insert into employee values(?,?,?)'; Class.forName('oracle.jdbc.driver.OracleDriver'); Try(Connection conn = DriverManager.getConnection('jdbc:oracle:thin:system/pass123@localhost:1521:XE')) { PreparedStatement pstatemnt1 = conn.prepareStatement(insert_query1); //Setting values for the 1st person in EMPLOYEE Table pstatemnt1.setInt(1,10001); pstatemnt1.setString(2, 'Bush'); pstatemnt1.setString(3, 'William '); //Adding the 1st insert query into batch pstatemnt1.addBatch(); //Setting values for the 2nd person in EMPLOYEE Table pstatemnt1.setInt(1,10002); pstatemnt1.setString(2, “Bush'); pstatemnt1.setString(3, 'George'); //Adding the 2nd insert query into batch pstatemnt1.addBatch(); //Setting values for the 3rd person in EMPLOYEE Table pstatemnt1.setInt(1,10003); pstatemnt1.setString(2, 'Bond'); pstatemnt1.setString(3, 'James'); //Adding the 3rd insert query into batch pstatemnt1.addBatch(); //Executing the executeBatch method int No_of_Afffected_Rows()= pstatemnt1.executeBatch(); //After inserting the data, displaying no. of rows affected System.out.println('No of rows affected = ' +No_of_Afffected_Rows.length);} catch (SQLException e) { e.printStackTrace();} } }
ΠΑΡΑΓΩΓΗ:
Δεδομένα στον πίνακα ΕΡΓΑΖΟΜΕΝΩΝ μετά την εισαγωγή των δεδομένων:
Εξήγηση:
Στο παραπάνω πρόγραμμα, έχουμε εισαγάγει δεδομένα 3 υπαλλήλων σε μία κλήση χρησιμοποιώντας παρτίδα.
- Δημιουργήστε ένα ερώτημα εισαγωγής για να περάσετε τις τιμές της στήλης.
- Ανοίξτε τη σύνδεση και δημιουργήστε ένα αντικείμενο readyStatement χρησιμοποιώντας το αντικείμενο σύνδεσης και καλέστε τη μέθοδο προετοιμασίας.
- Στη συνέχεια, ορίστε τις τιμές για το 1αγυπάλληλος που χρησιμοποιεί μεθόδους setXXX και καλέστε τη μέθοδο addBatch () για να προσθέσετε τη νέα σειρά στη δέσμη.
- Έτσι, προσθέστε τις τιμές για 2αρκαι 3rdυπαλλήλους. Μετά την προσθήκη των ερωτημάτων στη μέθοδο addBatch (), θα πρέπει να καλέσουμε τη μέθοδο executeBatch () χρησιμοποιώντας το αντικείμενο readyStatement.
- Η μέθοδος executeBatch () εισάγει τα δεδομένα των 3 υπαλλήλων σε μία κλήση.
- Ελέγξτε τον πίνακα EMPLOYEE εάν τα δεδομένα έχουν εισαχθεί σωστά ή όχι.
Διαδικασίες αποθήκευσης Java
Μια Αποθηκευμένη Διαδικασία είναι μια ομάδα δηλώσεων SQL που σχηματίζουν μια μεμονωμένη μονάδα και εκτελούν μια συγκεκριμένη εργασία. Θα χρησιμοποιηθούν για την εκτέλεση ενός συνόλου λειτουργιών ή ερωτήσεων για εκτέλεση σε διακομιστή βάσης δεδομένων. Μπορεί να μεταγλωττιστεί και να εκτελεστεί με διαφορετικές παραμέτρους και αποτελέσματα.
Κάθε διαδικασία έχει το μοναδικό της όνομα για αναφορά. Αυτή η μονάδα υποπρογράμματος αποθηκεύεται ως αντικείμενο βάσης δεδομένων στο DB.
Ένα υποπρόγραμμα δεν είναι τίποτα άλλο από μια διαδικασία, και θα πρέπει να δημιουργηθεί χειροκίνητα όπως θέλουμε και να το αποθηκεύσουμε ως αντικείμενο DB.
Οι Αποθηκευμένες Διαδικασίες είναι αυτόνομα μπλοκ ενός προγράμματος που μπορούμε να αποθηκεύσουμε στο DB. Χρησιμοποιώντας το όνομα της αποθηκευμένης διαδικασίας, μπορούμε να το καλέσουμε και να το εκτελέσουμε. Χρησιμοποιείται κυρίως για την εκτέλεση μιας διαδικασίας σε PL / SQL. Η διαδικασία μπορεί να έχει ένθετα μπλοκ ή μπορεί να είναι ένθετη μέσα στα άλλα μπλοκ.
Η αποθηκευμένη διαδικασία έχει 3 μέρη:
- Μέρος δήλωσης (προαιρετικό): Σε αυτό το μέρος, μπορούμε να δηλώσουμε τις μεταβλητές, τις σταθερές, τους δρομείς κ.λπ., Είναι ένα προαιρετικό μέρος. Με βάση τις απαιτήσεις, μπορούμε να το χρησιμοποιήσουμε.
- Μέρος εκτέλεσης: Αυτό το μέρος περιέχει την κύρια επιχειρηματική λογική της διαδικασίας. Κανονικά θα έχει ένα μπλοκ δηλώσεων SQL.
- Εξαιρετικό μέρος χειρισμού (προαιρετικό): Σε αυτό το μέρος, μπορούμε να χειριστούμε την εξαίρεση που μπορεί να προκύψει λόγω του κώδικα τμήματος εκτέλεσης. Είναι επίσης προαιρετικό.
Με βάση τις απαιτήσεις, μπορούμε να δημιουργήσουμε μια διαδικασία. Μπορούμε να περάσουμε ή να ανακτήσουμε τις τιμές από τις παραμέτρους.
Υπάρχουν τρεις τύποι παραμέτρων διαθέσιμες στις Αποθηκευμένες Διαδικασίες. Αυτοί είναι:
- ΣΕ: Χρησιμοποιείται για τη μετάδοση της τιμής εισόδου στην αποθηκευμένη διαδικασία. Η αποθηκευμένη διαδικασία θα χρησιμοποιήσει την παράμετρο εισαγωγής στο πρόγραμμα ως μεταβλητή μόνο για ανάγνωση. Η τιμή δεν μπορεί να αλλάξει μέσα στα υποπρογράμματα. Η Oracle χρησιμοποιεί το IN ως την προεπιλεγμένη λειτουργία της παραμέτρου. Είναι η προεπιλεγμένη παράμετρος.
- ΕΞΩ: Χρησιμοποιείται για την επιστροφή ή τη λήψη της τιμής από την Αποθηκευμένη Διαδικασία μετά την εκτέλεση. Είναι μια μεταβλητή ανάγνωσης-εγγραφής μέσα στα υποπρογράμματα. Η τιμή μπορεί να αλλάξει μέσα στα υποπρογράμματα.
- ΜΕΣΑ ΕΞΩ: Χρησιμοποιείται για τη μετάδοση των τιμών εισαγωγής στην αποθηκευμένη διαδικασία και την επιστροφή ή λήψη των τιμών από τη διαδικασία επίσης. Είναι αναγνώσιμο και εγγράψιμο. Μπορούμε να το διαβάσουμε και να το τροποποιήσουμε.
ΕΠΙΣΤΡΟΦΗ
Θα χρησιμοποιήσουμε τη λέξη-κλειδί επιστροφής για να δώσουμε τον έλεγχο πίσω στο κύριο πρόγραμμα, όπως το πρόγραμμα Java. Όταν η διαδικασία εντοπίσει τη λέξη-κλειδί ΕΠΙΣΤΡΟΦΗ, θα βγεί από την εκτέλεση και θα παραλείψει τον κωδικό ή τη δήλωση μετά από αυτήν.
Τρόπος κλήσης αποθηκευμένης διαδικασίας από Java
Έχουμε μια διεπαφή CallableStatement στην Java για να καλέσουμε την Αποθηκευμένη διαδικασία. Το αντικείμενο διασύνδεσης CallableStatement μπορεί να δημιουργηθεί χρησιμοποιώντας τη μέθοδο προετοιμασίας () της διασύνδεσης σύνδεσης και μετά από αυτό, θα πρέπει να καλέσουμε τη μέθοδο executeQuery () για να εκτελέσουμε τη διαδικασία αποθήκευσης στο πρόγραμμα Java.
Πριν γράψουμε το πρόγραμμα Java για να το εφαρμόσουμε, πρέπει να δημιουργήσουμε αποθηκευμένες διαδικασίες για να το χρησιμοποιήσουμε στο πρόγραμμα.
Ακολουθεί η σύνταξη για την κλήση αποθηκευμένων διαδικασιών στο πρόγραμμα Java:
Σύνταξη | Αριθμός παραμέτρων |
---|---|
{κλήση PROCEDURE_NAME ()} | Χωρίς παράμετροι εισόδου και παραμέτρους εξόδου |
{κλήση PROCEDURE_NAME (?,?,?)} | Τρεις παράμετροι εισόδου και καμία παράμετρος εξόδου |
{? = κλήση PROCEDURE_NAME ()} | Χωρίς παράμετροι εισόδου και μία παράμετρο εξόδου (RETURN Value) |
{? = κλήση PROCEDURE_NAME (?,?)} | Δύο παράμετροι εισόδου και μία παράμετρος εξόδου (RETURN Value) |
Βήματα για τη δημιουργία αποθηκευμένων διαδικασιών
# 1) Δημιουργήστε τη διαδικασία στο διακομιστή DB. Εδώ χρησιμοποιούμε το Oracle DB.
# 2) Σύνταξη για τη δημιουργία πλήρους διαδικασίας:
Μπορούμε επίσης να γράψουμε την αποθηκευμένη διαδικασία σε κώδικα Java.
# 3) Περάστε τις παραμέτρους IN και OUT για να τις χρησιμοποιήσετε στη διαδικασία.
# 4) Πρέπει να αναφέρεται η λέξη-κλειδί AS / IS. Εάν προσθέτουμε μια άλλη διαδικασία στη νέα διαδικασία, χρησιμοποιήστε τη λέξη-κλειδί IS ή άλλη λέξη-κλειδί AS εάν η διαδικασία είναι αυτόνομη.
# 5) Δηλώστε τις μεταβλητές, δεν είναι υποχρεωτικό, με βάση την απαίτηση που μπορούμε να δημιουργήσουμε.
# 6) Στη συνέχεια, ξεκινήστε τη διαδικασία χρησιμοποιώντας τη λέξη-κλειδί BEGIN και μετά γράψτε τις δηλώσεις SQL ή ερωτήματα που θα εκτελεστούν στη διαδικασία.
# 7) Στη συνέχεια, μπορούμε να χειριστούμε την εξαίρεση στο τμήμα Εξαίρεσης. Δεν είναι επίσης υποχρεωτικό να αναφερθεί.
# 8) Τερματίστε τη διαδικασία αναφέροντας τη λέξη-κλειδί ΤΕΛΟΣ και το όνομα της διαδικασίας.
Μπορούμε να δημιουργήσουμε τη διαδικασία στο Oracle και να την αποθηκεύσουμε με ένα μοναδικό όνομα και να καλέσουμε αυτήν τη διαδικασία από το πρόγραμμα Java. Μπορούμε να δημιουργήσουμε τη διαδικασία και να καλέσουμε αυτήν τη διαδικασία και στην Java.
Δημιουργήστε μια διαδικασία στο Oracle, αποθηκεύστε το και καλέστε τη διαδικασία στο πρόγραμμα Java.
# 1) Ανοίξτε το διακομιστή βάσης δεδομένων. Εδώ χρησιμοποιούμε τον διακομιστή Oracle DB.
#δύο) Κάντε δεξί κλικ στο φάκελο Διαδικασία και κάντε κλικ στην επιλογή Νέα διαδικασία.
# 3) Θα ζητήσει το όνομα της διαδικασίας και τις λεπτομέρειες της παραμέτρου.
Σημείωση: Μπορούμε να δώσουμε τις λεπτομέρειες της παραμέτρου ενώ γράφουμε τη διαδικασία.
# 4) Γράψτε τη διαδικασία χρησιμοποιώντας τα βήματα που έχουμε ήδη συζητήσει σε αυτό το σεμινάριο και αποθηκεύστε τη διαδικασία με το μοναδικό όνομα.
Η διαδικασία στο στιγμιότυπο οθόνης θα εμφανίσει την έξοδο σε DB. Μπορούμε να το αλλάξουμε για να το εμφανίσουμε και στο πρόγραμμα Java. Για αυτό, πρέπει να χρησιμοποιήσουμε τις παραμέτρους OUT.
# 5) Εκτελέστε τη διαδικασία κάνοντας κλικ στο κουμπί εκτέλεσης
# 6) Εισαγάγετε την τιμή στη στήλη Τιμή εισαγωγής. Θα εμφανίσει τα δεδομένα για τη δεδομένη τιμή.
Μέχρι τώρα, έχουμε δει πώς να δημιουργήσουμε και να εκτελέσουμε τη διαδικασία στην ίδια την κονσόλα DB.
Δημιουργήστε τη διαδικασία στο DB. Καλέστε το και εμφανίστε τα δεδομένα στην κονσόλα Java .
Δημιουργήστε την ακόλουθη διαδικασία χρησιμοποιώντας τα παραπάνω βήματα και αποθηκεύστε την με το όνομα 'DISPLAY_EMPLOYEE_DETAILS'.
Παράδειγμα προγράμματος αποθήκευσης Java
package com.STH.JDBC; import java.sql.CallableStatement; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; public class StoredProcedureExample { public static void main(String() args) throws ClassNotFoundException { Class.forName('oracle.jdbc.driver.OracleDriver'); //Connecting to Oracle DB Try (Connection conn = DriverManager.getConnection('jdbc:oracle:thin:system/pass123@localhost:1521:XE')) { // Creating prepared Statement CallableStatementCallStmt = conn.prepareCall('{call DISPLAY_EMPLOYEE_DETAILS(?,?,?,?)}'); //Passing Input Parameter CallStmt.setInt(1,1001); //Retrieving the Output Parameters values CallStmt.registerOutParameter(2, java.sql.Types.VARCHAR); CallStmt.registerOutParameter(3, java.sql.Types.VARCHAR); CallStmt.registerOutParameter(4, java.sql.Types.VARCHAR); //Calling the execute to execute the procedure and retrieve the data CallStmt.execute(); System.out.println('First Name: '+ CallStmt.getString(2)+'
Last Name: '+ CallStmt.getString(3) + '
Email: ' + CallStmt.getString(4)); }catch (SQLException e) { e.printStackTrace(); } } }
ΠΑΡΑΓΩΓΗ:
Εξήγηση:
Στο παραπάνω πρόγραμμα, αυτό που κάναμε είναι ότι δημιουργήσαμε μια διαδικασία και την αποθηκεύσαμε στο Oracle DB. Στη συνέχεια κάλεσε αυτήν τη διαδικασία χρησιμοποιώντας το CallableStatement και εμφάνισε τα δεδομένα στην Κονσόλα Java.
- Δημιουργήστε τη διαδικασία και αποθηκεύστε την στο Oracle DB.
- Στο πρόγραμμα Java, ανοίξτε τη σύνδεση DB και καλέστε τη μέθοδο προετοιμασίας κλήσης χρησιμοποιώντας τα αντικείμενα σύνδεσης και CallableStatement.
- Περάστε την τιμή της παραμέτρου εισαγωγής χρησιμοποιώντας τη μέθοδο setXXX.
- Ανακτήστε τις τιμές παραμέτρων εξόδου χρησιμοποιώντας τη μέθοδο registerOutParameter. Σε αυτήν τη μέθοδο, πρέπει να περάσουμε την τιμή ευρετηρίου παραμέτρων και τον τύπο δεδομένων της παραμέτρου. Θα αποθηκεύσει τις τιμές στο ευρετήριο παραμέτρων.
- Χρησιμοποιώντας τις μεθόδους getXXX, μπορούμε να ανακτήσουμε τα δεδομένα και να τα εμφανίσουμε στην κονσόλα Java.
Δημιουργήστε τη διαδικασία και εκτελέστε την στο ίδιο το πρόγραμμα Java.
Πρόγραμμα Java
package com.STH.JDBC; import java.sql.CallableStatement; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; import java.sql.Statement; public class StoredProcedureExample1 { public static void main(String() args) throws ClassNotFoundException { String Stored_Procedure = 'CREATE OR REPLACE PROCEDURE UPD_EMPLOYEE_DETAILS
' +'(
' + ' PARAM1 IN NUMBER,
' + ' PARAM2 IN NUMBER
'+ ') IS
'+ ' BEGIN
'+ 'UPDATE EMPLOYEE_DETAILS SET EMPNUM= PARAM2 WHERE EMPNUM = PARAM1;
'+ 'COMMIT;
'+ 'END UPD_EMPLOYEE_DETAILS;
'; Class.forName('oracle.jdbc.driver.OracleDriver'); //Connecting to Oracle DB try(Connection conn = DriverManager.getConnection('jdbc:oracle:thin:system/pass123@localhost:1521:XE')) {// Creating prepared Statement Statement stmt = conn.createStatement(); CallableStatementCallStmt = conn.prepareCall('{call UPD_EMPLOYEE_DETAILS(?,?)}'); stmt.execute(Stored_Procedure); //Setting the values to pass the procedure CallStmt.setInt(1,1010); CallStmt.setInt(2, 10010); //Calling executeUpdate method to update the values using Procedure CallStmt.executeUpdate(); System.out.println(' Successfully Updated ' ); } catch (SQLException e) { e.printStackTrace(); } } }
ΠΑΡΑΓΩΓΗ:
Δεδομένα στον πίνακα Employee_details πριν από την εκτέλεση του προγράμματος:
Δεδομένα στον πίνακα Employee_details μετά την εκτέλεση του προγράμματος:
Εξήγηση:
Στο παραπάνω πρόγραμμα, αποθηκεύουμε τον κωδικό διαδικασίας ως συμβολοσειρά.
String Stored_Procedure = 'CREATE OR REPLACE PROCEDURE UPD_EMPLOYEE_DETAILS
' +'(
' +' PARAM1 IN NUMBER,
' +' PARAM2 IN NUMBER
'+ ') IS
'+' BEGIN
'+'UPDATE EMPLOYEE_DETAILS SET EMPNUM= PARAM2 WHERE EMPNUM = PARAM1;
'+'COMMIT;
'+'END UPD_EMPLOYEE_DETAILS;
';
- Ανοίξτε το Oracle DB Connection και δημιουργήστε το αντικείμενο δήλωσης χρησιμοποιώντας το αντικείμενο σύνδεσης.
- Καλέστε τη μέθοδο createStatement χρησιμοποιώντας το αντικείμενο δήλωσης, επειδή δημιουργούμε τη διαδικασία σε κώδικα Java.
- Καλέστε τη διαδικασία χρησιμοποιώντας τη σύνταξη {κλήση UPD_EMPLOYEE_DETAILS (?,?) για να προετοιμάσετε τη μέθοδο Call του CallableStatement.
- Δεδομένου ότι δημιουργούμε τη διαδικασία σε κώδικα Java, πρέπει να εκτελέσουμε αυτόν τον «Δημιουργία κώδικα διαδικασίας».
- Για να εκτελέσετε αυτήν τη διαδικασία, καλέστε τη μέθοδο εκτέλεσης χρησιμοποιώντας το αντικείμενο Statement ' stmt.execute (Stored_Procedure) '. Αυτό θα δημιουργήσει τη διαδικασία προσωρινά στο DB.
- Το πεδίο εφαρμογής της διαδικασίας είναι το τέλος της εκτέλεσης του προγράμματος. Μετά από αυτό, δεν θα είναι διαθέσιμο. Χρησιμοποιώντας τις μεθόδους setXXX, ορίστε τις τιμές για ενημέρωση στον πίνακα Employee_Details.
- Καλέστε τη μέθοδο executeUpdate χρησιμοποιώντας αντικείμενο callableStatement. Αυτή η μέθοδος θα ενημερώσει τις τιμές στην ιστορία Empoyee_Details.
- Ελέγξτε τον πίνακα Employee_details αν τα δεδομένα έχουν ενημερωθεί σωστά.
Σημεία που πρέπει να θυμάστε:
- Η μαζική επεξεργασία βελτιώνει την απόδοση και διατηρεί τη συνοχή των δεδομένων.
- Η εκτέλεση πολλών δηλώσεων SQL σε μία συναλλαγή είναι γνωστή ως Batch processing.
- Η Αποθηκευμένη Διαδικασία είναι το μπλοκ των δηλώσεων SQL που χρησιμοποιούνται για την εκτέλεση επιχειρηματικής λογικής.
- Μπορούμε να περάσουμε την παράμετρο εισαγωγής χρησιμοποιώντας τη λέξη-κλειδί IN στη διαδικασία και τη λέξη-κλειδί OUT για την παράμετρο εξόδου.
- Μπορούμε να δημιουργήσουμε μια διαδικασία στον ίδιο τον διακομιστή DB και προσωρινά χρησιμοποιώντας τον κώδικα Java.
Συχνές Ερωτήσεις
Q # 1) Ποια διεπαφή πρέπει να χρησιμοποιηθεί για την εκτέλεση παρτίδας στο JDBC;
Απάντηση: Το πακέτο Java έχει διασυνδέσεις Statement και PreparedStatement, οι οποίες παρέχουν τις μεθόδους για την επεξεργασία παρτίδας.
Ε # 2) Πώς λειτουργούν οι μαζικές ενημερώσεις στο JDBC;
Απάντηση: Μια ενημέρωση δέσμης JDBC είναι μια δέσμη ενημερώσεων που ομαδοποιούνται και αποστέλλονται στη Βάση δεδομένων με μία κίνηση αντί να στέλνουν τις ενημερώσεις μία προς μία. Έτσι, μειώνει την κυκλοφορία δικτύου στη βάση δεδομένων.
Q # 3) Πώς αυξάνεται η απόδοση της Batch processing;
Απάντηση: Η μαζική επεξεργασία στέλνει τα δεδομένα στη Βάση Δεδομένων ταυτόχρονα (μόνο 1 μετ 'επιστροφής) αντί να στέλνει ένα προς ένα και η Βάση Δεδομένων ενδέχεται να μπορεί να εκτελεί παράλληλα κάποιες δηλώσεις. Έτσι, αυξάνει την απόδοση της εφαρμογής και εξοικονομεί χρόνο.
πώς να κάνετε δέσμες ενεργειών μεταξύ ιστότοπων
Q # 4) Ποιες είναι οι παράμετροι που γίνονται αποδεκτές σε αποθηκευμένες διαδικασίες στο JDBC;
Απάντηση: Υπάρχουν τρεις τύποι παραμέτρων - παράμετροι IN, OUT και INOUT. Η παράμετρος IN είναι να πάρει την τιμή εισόδου. Η παράμετρος OUT είναι για την ανάκτηση της τιμής εξόδου. Η παράμετρος INOUT χρησιμοποιείται τόσο για είσοδο όσο και για έξοδο.
Ε # 5) Ποιες είναι οι διαθέσιμες μέθοδοι για την εκτέλεση μιας αποθηκευμένης διαδικασίας στο JDBC;
Απάντηση: Χρησιμοποιώντας το CallableStatement Interface, μπορούμε να καλέσουμε τη διαδικασία. Η διεπαφή CallableStatement παρέχει τρεις μεθόδους για την εκτέλεση των αποθηκευμένων διαδικασιών.
Οι τρεις μέθοδοι είναι:
- executeUpdate (): Χρησιμοποιήστε αυτήν τη μέθοδο εάν η διαδικασία δεν επιστρέφει τιμές επιστροφής.
- executeQuery (): Χρησιμοποιήστε αυτήν τη μέθοδο εάν η διαδικασία επιστρέφει μόνο ένα σύνολο αποτελεσμάτων.
- εκτέλεση(): Χρησιμοποιήστε αυτήν τη μέθοδο εάν η διαδικασία επιστρέφει πολλά σύνολα αποτελεσμάτων ή άγνωστο αριθμό συνόλων αποτελεσμάτων.
συμπέρασμα
Σε αυτό το σεμινάριο έχουμε καλύψει την επεξεργασία παρτίδων και αποθηκεύσαμε τις διαδικασίες. Στον σύγχρονο κόσμο, η υψηλή απόδοση, η συνέπεια των δεδομένων και η επαναχρησιμοποίηση είναι οι λέξεις-κλειδιά για οποιαδήποτε δημοφιλή εφαρμογή. Τόσο η επεξεργασία παρτίδας όσο και οι αποθηκευμένες διαδικασίες παίζουν πολύ σημαντικό ρόλο στην εφαρμογή αυτών των δυνατοτήτων. Η γνώση αυτών είναι αναπόφευκτη για κάθε μηχανικό λογισμικού.
Συνιστώμενη ανάγνωση
- Εκμάθηση Java JDBC: Τι είναι το JDBC (Συνδεσιμότητα βάσης δεδομένων Java)
- Εκμάθηση σύνδεσης Java JDBC με παράδειγμα προγραμματισμού
- Διαχείριση συναλλαγών Java JDBC με παράδειγμα
- JDBC ResultSet: Τρόπος χρήσης Java ResultSet για ανάκτηση δεδομένων
- Χειρισμός εξαιρέσεων JDBC - Τρόπος χειρισμού εξαιρέσεων SQL
- JDBC DriverManager, JDBC PreparedStatement And Statement
- Εκπαιδευτικό πρόγραμμα JAVA για αρχάριους: 100+ πρακτικά εκπαιδευτικά βίντεο Java