Πώς να αποκτήσετε πρόσβαση σε βάση δεδομένων χρησιμοποιώντας την άνοιξη JDBC πρότυπο?

Spring JDBC template

πρότυπο άνοιξη JDBC

Επισκόπηση: Όπως όλοι γνωρίζουμε ότι το πλαίσιο άνοιξη έχει γίνει ένα σημαντικό μέρος της σύγχρονης ανάπτυξης εφαρμογών Java με βάση. Το πλαίσιο άνοιξη έχει πραγματικά κατάφερε να πάρει τον έλεγχο του κάθε τμήματος στην παγκόσμια ανάπτυξη Java. Το πρότυπο JDBC της άνοιξης χρησιμοποιείται στις περισσότερες από την άνοιξη εφαρμογές JEE βάση για την επικοινωνία με τη βάση δεδομένων.

Σε αυτό το άρθρο θα μιλήσουμε με το πώς να αποκτήσετε πρόσβαση σε μια σχεσιακή βάση δεδομένων χρησιμοποιώντας το πρότυπο JDBC της άνοιξης.

Εισαγωγή: Όλοι γνωρίζουμε τη σημασία των σχεσιακών βάσεων δεδομένων στην ανάπτυξη εφαρμογών για επιχειρήσεις. Η άνοιξη είναι ένα από τα ευρέως χρησιμοποιούμενα πλαίσια για την ανάπτυξη εφαρμογών για επιχειρήσεις που βασίζεται σε Java. Άνοιξη έχει διαφορετικές ενότητες, όπως ORM, ασφάλεια, συναλλαγή, JPS, JMS κλπ για να στηρίξει την ανάγκη της ανάπτυξης εφαρμογών για επιχειρήσεις. Ως την άνοιξη παρέχει άμεσα διαθέσιμα στοιχεία για το plug-in, η σύγχρονη προσέγγιση για την ανάπτυξη των επιχειρήσεων εφαρμογή Java χρησιμοποιεί τα χαρακτηριστικά εκτενώς. Ως αποτέλεσμα, η ανάπτυξη είναι πολύ ταχύτερη και αποτελεσματική. Spring παρέχει μια απλή προσέγγιση για να χειριστεί τις δραστηριότητες της βάσης δεδομένων γνωστή ως την άνοιξη του JDBC πρότυπο.

Μειονεκτήματα του προτύπου JDBC API: Πρότυπο JDBC API έχει τα ακόλουθα μειονεκτήματα.

  • Εκτός από την εκτέλεση της κύριας ερώτημα, θα πρέπει να γράψετε πολλά κώδικα για να χειριστεί τα θέματα του περιβάλλοντος εκτέλεσης, όπως η δημιουργία σύνδεσης, δήλωση, resultset κ.λπ..
  • Πρέπει να χειριστούν κωδικό χειρισμό εξαίρεση ξεχωριστά.
  • Πρέπει να χειριστεί τα θέματα συναλλαγών.

Πλεονεκτήματα της άνοιξης JDBC πρότυπο: Άνοιξη JDBC πρότυπο έχει τα ακόλουθα πλεονεκτήματα σε σύγκριση με την κανονική προσέγγιση του προτύπου JDBC.

  • Καθαρισμός της χρήσης των πόρων γίνεται αυτόματα από την άνοιξη του JDBC πρότυπο. Έτσι, οι προγραμματιστές δεν χρειάζεται να ασχοληθείτε με την αποδέσμευση των πόρων. Ως εκ τούτου, αποτρέπει τις διαρροές μνήμης.
  • Άνοιξη JDBC πρότυπο χειρίζεται την εξαίρεση και λάθη με πιο αποτελεσματικό τρόπο. Μετατρέπει τις JDBC SQLExceptions σε RuntimeExceptions, έτσι ώστε οι προγραμματιστές μπορούν να το χειριστεί με πιο ευέλικτο τρόπο.
  • Το πρότυπο άνοιξη JDBC μετατρέπει επίσης τα συγκεκριμένα σφάλματα πωλητή σε μια καλύτερη περιεκτικό μήνυμα. Έτσι, οι χειρισμοί των σφαλμάτων αυτών είναι πιο αποτελεσματική.

Ξεκινώντας:

In this document, ας χρησιμοποιήσουμε gradle ως ένα εργαλείο κατασκευής για να χτίσει την εφαρμογή μας. Ας ξεκινήσουμε με μια απλή εφαρμογή που χρησιμοποιείται για την αποθήκευση και ανάκτηση των στοιχείων των εργαζομένων, μαζί με τις υπηρεσίες τους, μιας οργάνωσης. Στο παράδειγμά μας, θα έχουν τα ακόλουθα χαρακτηριστικά του αντικειμένου των εργαζομένων:-

  • Ταυτότητα Υπαλλήλου
  • Υπάλληλος Όνομα
  • Υπάλληλος Πατρώνυμο
  • Υπάλληλος Επώνυμο
  • Τμήμα Id εργαζόμενο

Και το αντικείμενο Τμήμα έχει τις ακόλουθες ιδιότητες:-

  • Τμήμα Id
  • όνομα τμήματος

Τώρα ας δημιουργήσουμε τα αντικείμενα Java, η οποία θα χρησιμοποιηθεί για την επικοινωνία με τη βάση δεδομένων. Τα μαθήματα POJO μας για τις δύο αυτές οντότητες που αναφέρονται ως κάτω:

Listing1: Δείγμα που δείχνει την κλάση Employee

[Code]

package com.home.springjdbc.objects;

δημόσιο κατηγορία Employee {

// Ο εργαζόμενος Id

ιδιωτικός String EmpID;

// Το πρώτο όνομα του υπαλλήλου

ιδιωτικός String empFName;

// Το μεσαίο όνομα του υπαλλήλου

ιδιωτικός String empMName;

// Το τελευταίο όνομα του υπαλλήλου

ιδιωτικός String empLName;

// Το τμήμα των εργαζομένων Id

ιδιωτικός String empDeptId;

δημόσιο Employee ( String EmpID, String empFName, String empMName,

String empLName, String empDeptId ) {

σούπερ();

αυτό.EmpID = EmpID;

αυτό.Rec Rec name = όνομα;

αυτό.empMName = empMName;

αυτό.empLName = empLName;

αυτό.empDeptId = empDeptId;

}

/**

* @απόδοση η EmpID

*/

δημόσιο κορδόνι getEmpId () {

return EmpID;

}

/**

* @param EmpID

* η EmpID για να ρυθμίσετε

*/

δημόσιο ακυρώσει setEmpId ( String EmpID ) {

αυτό.EmpID = EmpID;

}

/**

* @απόδοση η empFName

*/

δημόσιο getEmpFName εγχόρδων () {

return Rec όνομα;

}

/**

* @param Rec όνομα

* η empFName για να ρυθμίσετε

*/

δημόσιο ακυρώσει setEmpFName ( String empFName ) {

αυτό.Rec Rec name = όνομα;

}

/**

* @απόδοση η empMName

*/

δημόσιο getEmpMName εγχόρδων () {

return empMName;

}

/**

* @param empMName

* η empMName για να ρυθμίσετε

*/

δημόσιο ακυρώσει setEmpMName ( String empMName) {

αυτό.empMName = empMName;

}

 

/**

* @απόδοση η empLName

*/

δημόσιο getEmpLName εγχόρδων () {

return empLName;

}

/**

* @param empLName

* η empLName για να ρυθμίσετε

*/

δημόσιο ακυρώσει setEmpLName ( String empLName) {

αυτό.empLName = empLName;

}

/**

* @απόδοση η empDeptId

*/

δημόσιο getEmpDeptId εγχόρδων () {

return empDeptId;

}

/**

* @param empDeptId

* η empDeptId για να ρυθμίσετε

*/

δημόσιο ακυρώσει setEmpDeptId ( String empDeptId ) {

αυτό.empDeptId = empDeptId;

}

/*

* ( μη-javadoc )

*

* @see java.lang.Object # toString ()

*/

@ Παράκαμψη

δημόσιο String toString () {

return “Employee [ EmpID =” + EmpID + “, Rec name =” + Rec όνομα

+ “, empMName =” + empMName + “, empLName =” + empLName

+ “, empDeptId =” + empDeptId + “]”;

}

}

[/Code]

Listing2: Δείγμα που δείχνει το Τμήμα Τάξης

[Code]

package com.home.springjdbc.objects;

δημόσιο κατηγορία Τμήμα {

// Το τμήμα Id

ιδιωτικός String deptId;

// Το τμήμα Όνομα

ιδιωτικός String deptName;

δημόσιο Τμήμα ( String deptId, String deptName) {

σούπερ ();

αυτό.deptId = deptId;

αυτό.deptName = deptName;

}

/**

* @απόδοση η deptId

*/

δημόσιο String getDeptId () {

return deptId;

}

/**

* @param deptId

* η deptId για να ρυθμίσετε

*/

δημόσιο ακυρώσει setDeptId ( String deptId ) {

αυτό.deptId = deptId;

}

/**

* @απόδοση η deptName

*/

δημόσιο String getDeptName () {

return deptName;

}

/**

* @param deptName

* η deptName για να ρυθμίσετε

*/

δημόσιο ακυρώσει setDeptName ( String deptName ) {

αυτό.deptName = deptName;

}

/*

* (μη-javadoc)

*

* @see java.lang.Object # toString()

*/

@ Παράκαμψη

δημόσιο String toString () {

return “Τμήμα [ deptId =” + deptId + “, deptName =” + deptName + “]”;

}

}

[/Code]

Spring παρέχει μια τάξη πρότυπο γνωστό ως JdbcTemplate. Η κατηγορία αυτή είναι υπεύθυνη για την επικοινωνία με τον SQL σχεσιακές βάσεις δεδομένων και JDBC. Στην παραδοσιακή προσέγγιση η μέγιστη ενός κώδικα JDBC καταλαμβάνεται στη διαχείριση σύνδεσης χειρισμό, την απόκτηση των πόρων, χειρισμό εξαίρεση, και ο έλεγχος γενικό σφάλμα που είναι ασεβής στο πλαίσιο του τι προσπαθούμε να επιτύχουμε. Η JdbcTemplate φροντίζει για όλα αυτά τα πράγματα και ως προγραμματιστής θα πρέπει να επικεντρωθούμε μόνο στην επιχειρηματική λογική. Μια εφαρμογή δείγμα της κατηγορίας προτύπου εμφανίζεται ως κάτω -

Listing3: Δείγμα που δείχνει την υλοποίηση του JDBC πρότυπο

[Code]

package com.home.springjdbc.dao;

εισαγωγή java.sql.Driver;

εισαγωγή java.sql.ResultSet;

εισαγωγή java.sql.SQLException;

εισαγωγή java.util.List;

εισαγωγή org.springframework.jdbc.core.JdbcTemplate;

εισαγωγή org.springframework.jdbc.core.RowMapper;

εισαγωγή org.springframework.jdbc.datasource.SimpleDriverDataSource;

εισαγωγή com.home.springjdbc.objects.Employee;

δημόσιο κατηγορία EmployeeDAO {

δημόσιο στατικός ακυρώσει κύριος ( args String[] ) {

// απλό DS για τη δοκιμή (όχι για την παραγωγή!)

SimpleDriverDataSource DataSource = νέος SimpleDriverDataSource();

dataSource.setDriverClass((Τάξη<? εκτείνεται Οδηγός>) org.h2.Driver.κατηγορία);

dataSource.setUsername( “αυτήν” );

dataSource.setUrl( “JDBC:h2:Mem” );

dataSource.setPassword( “” );

JdbcTemplate JdbcTemplate = νέος JdbcTemplate(πηγή δεδομένων);

Σύστημα.έξω.println( “δημιουργία πινάκων” );

jdbcTemplate.execute( “drop τραπέζι των εργαζομένων, εάν υπάρχει” );

jdbcTemplate.execute( “δημιουργία πίνακα των εργαζομένων(”

+ “id varchar(25), first_name varchar(255), middle_name varchar(255), LAST_NAME varchar(255), deptId varchar(25))”);

Κορδόνι[] αρχείων = “E001 Dean Andrew Roberts D25; E002 Jeff Longman Dean D42; E003 Erin Nancy Kirkland D66;”.σπλιτ(“;”);

για ( String singleRecord : records ) {

Κορδόνι [] cols = singleRecord.split(” “);

Σύστημα.έξω.printf( ” Προσθέτοντας ρεκόρ των εργαζομένων για το% s% s% s% s% s n”,cols[0], cols[1], cols[2], cols[3], cols[4]);

jdbcTemplate.update(“εργαζόμενοι INSERT INTO(ταυτότητα, όνομα, μεσαίο όνομα, επίθετο, deptId) αξίες(?,?,?,?,?)”,cols[0], cols[1], cols[2], cols[3], cols[4]);

}

Σύστημα.έξω.println ( ” Querying for customer records where first_name = ‘Erin’:” );

Λίστα<Employee> αποτέλεσμα = jdbcTemplate.query(

“select * από τους υπαλλήλους όπου first_name = ?”,

νέος Αντικείμενο[] { “Erin” }, νέος RowMapper<Employee>() {

@ Παράκαμψη

δημόσιο mapRow των εργαζομένων(ResultSet rs, int ROWNUM)

ρίχνει SQLException {

return νέος Employee(rs.getString(“ταυτότητα”),

rs.getString(“όνομα”), rs.getString(“μεσαίο όνομα”),

rs.getString(“επίθετο”), rs.getString(“deptId”));

}

});

για (υπάλληλος εργαζόμενος : αποτελέσματα) {

Σύστημα.έξω.println(υπάλληλος);

}

}

}

[/Code]

Στο παραπάνω παράδειγμα, έχουμε δημιουργήσει ένα αρχείο προέλευσης δεδομένων JDBC χρησιμοποιώντας το SimpleDriverDataSource από την άνοιξη. Μπορούμε στη συνέχεια να χρησιμοποιήσουν αυτή την πηγή δεδομένων για να κατασκευάσει το παράδειγμα JDBCTemplate. Μόλις η τάξη JDBCTemplate δημιουργείται, μπορούμε εύκολα να ξεκινήσετε καλώντας τη βάση δεδομένων. First, δημιουργούμε τον πίνακα χρησιμοποιώντας τη μέθοδο εκτέλεση του προτύπου. Στη συνέχεια, τοποθετήστε μερικά αρχεία χρησιμοποιώντας τη μέθοδο ενημέρωσης του προτύπου. Τέλος χρησιμοποιούμε τη μέθοδο ερώτημα για να φέρω τα αρχεία της επιλογής μας. Στο παράδειγμά μας, έχουμε χρησιμοποιήσει ένα απλό ερώτημα για να φέρω το ρεκόρ από τον πίνακα των εργαζομένων. Αλλά σύμφωνα με το σχεδιασμό μας, βλέπουμε ότι ο πίνακας εργαζόμενος έχει μια σχέση με τον πίνακα τμήμα μέσω της στήλης - deptId. Έτσι, μπορούμε επίσης να χρησιμοποιήσετε τον ίδιο κωδικό για να φέρω τα αρχεία που συνδέει αυτά τα δύο πίνακες. Απλά πρέπει να αλλάξουμε το ερώτημα να τεθεί ένα σύνδεσμο. Ο παραπάνω κώδικας θα μπορούσε να τροποποιηθεί ως κάτω -

Listing4: Δείγμα που δείχνει το τροποποιημένο ερώτημα

[Code]

Λίστα<Employee> αποτέλεσμα = jdbcTemplate.query(

“Επιλέξτε emp.first_name, emp.middle _name, emp.last _name, dept.dept_Name από τους υπαλλήλους emp, Τμήμα dept όπου emp.first_name = ?”,

νέος Αντικείμενο[] { “Erin” }, νέος RowMapper<Employee>() {

@ Παράκαμψη

δημόσιο EmployeeDtls mapRow(ResultSet rs, int ROWNUM)

ρίχνει SQLException {

return νέος Employee( rs.getString(“όνομα”),

rs.getString(“μεσαίο όνομα”),

rs.getString(“επίθετο”),

rs.getString(“dept_Name “));

}

});

για (EmployeeDtls employeeDtl : αποτελέσματα) {

Σύστημα.έξω.println(employeeDtl);

}

[/Code]

Για να εκτελέσετε αυτό θα πρέπει να έχουμε μια άλλη κατηγορία POJO EmployeeDtls ως κάτω -

Listing5: Δείγμα που δείχνει τα EmployeeDtls τάξη POJO

[Code]

package com.home.springjdbc.objects;

δημόσιο κατηγορία EmployeeDtls {

// Το πρώτο όνομα του υπαλλήλου

ιδιωτικός String empFName;

// Το μεσαίο όνομα του υπαλλήλου

ιδιωτικός String empMName;

// Το τελευταίο όνομα του υπαλλήλου

ιδιωτικός String empLName;

// Το τμήμα Όνομα

ιδιωτικός String deptName;

/**

* @param Rec όνομα

* @param empMName

* @param empLName

* @param deptName

*/

δημόσιο EmployeeDtls(String empFName, String empMName, String empLName,

String deptName) {

σούπερ();

αυτό.Rec Rec name = όνομα;

αυτό.empMName = empMName;

αυτό.empLName = empLName;

αυτό.deptName = deptName;

}

/*

* (μη-javadoc)

*

* @see java.lang.Object # toString()

*/

@ Παράκαμψη

δημόσιο String toString() {

return “EmployeeDtls [Rec name =” + Rec όνομα + “, empMName =” + empMName

+ “, empLName =” + empLName + “, deptName =” + deptName + “]”;

}

/**

* @απόδοση η empFName

*/

δημόσιο getEmpFName εγχόρδων() {

return Rec όνομα;

}

/**

* @param Rec όνομα

* η empFName για να ρυθμίσετε

*/

δημόσιο ακυρώσει setEmpFName(String empFName) {

αυτό.Rec Rec name = όνομα;

}

/**

* @απόδοση η empMName

*/

δημόσιο getEmpMName εγχόρδων() {

return empMName;

}

/**

* @param empMName

* η empMName για να ρυθμίσετε

*/

δημόσιο ακυρώσει setEmpMName(String empMName) {

αυτό.empMName = empMName;

}

/**

* @απόδοση η empLName

*/

δημόσιο getEmpLName εγχόρδων() {

return empLName;

}

/**

* @param empLName

* η empLName για να ρυθμίσετε

*/

δημόσιο ακυρώσει setEmpLName(String empLName) {

αυτό.empLName = empLName;

}

/**

* @απόδοση η deptName

*/

δημόσιο String getDeptName() {

return deptName;

}

/**

* @param deptName

* η deptName για να ρυθμίσετε

*/

δημόσιο ακυρώσει setDeptName(String deptName) {

αυτό.deptName = deptName;

}

}

[/Code]
Summary: Έτσι, σε αυτό το άρθρο έχουμε δει πώς την άνοιξη του JDBC πρότυπο μπορεί να χρησιμοποιηθεί σε Java που βασίζεται Standard και Enterprise εφαρμογές. Έχουμε συζητήσει επίσης τα πλεονεκτήματα αυτής της προσέγγισης και πώς μπορεί να κάνει η ανάπτυξη πολύ πιο γρήγορα σε σύγκριση με το πρότυπο ανάπτυξης JDBC βάση.

Ας συνοψίσουμε τη συζήτησή μας με τη μορφή των παρακάτω κουκκίδες -

  • Άνοιξη έχει γίνει ένα ουσιαστικό μέρος του σύγχρονου περιβάλλοντος ανάπτυξης εφαρμογών για επιχειρήσεις που βασίζεται σε Java.
  • Άνοιξη έχει διαφορετικά τμήματα, εκ των οποίων, το πρότυπο JDBC είναι ένα σημαντικό μέρος.
  • Άνοιξη JDBC πρότυπο διευκολύνει την ανάπτυξη με τη λήψη του φορτίου της απόκτησης πόρων, διαχείριση σύνδεσης, χειρισμό εξαίρεση, και τον έλεγχο γενικό σφάλμα. Εμείς ως προγραμματιστής απλά πρέπει να επικεντρωθεί στο συγκρότημα σενάριο των επιχειρήσεων.
============================================= ============================================== Buy best TechAlpine Books on Amazon
============================================== ---------------------------------------------------------------- electrician ct chestnutelectric
error

Enjoy this blog? Please spread the word :)

Follow by Email
LinkedIn
LinkedIn
Share