• Nenhum resultado encontrado

Ανάπυξη client εφαρμογών προσπέλασης βάσεων δεδομένων MySQL από γραφικά Interfaces βασισμένα στο swing της Java

N/A
N/A
Protected

Academic year: 2023

Share "Ανάπυξη client εφαρμογών προσπέλασης βάσεων δεδομένων MySQL από γραφικά Interfaces βασισμένα στο swing της Java"

Copied!
205
0
0

Texto

(1)

ΤΕΙ ΚΑΒΑΛΑΣ

ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜ ΙΑΣ ΤΜ ΗΜ Α ΔΙΑΧΕΙΡΙΣΗΣ ΠΛΗΡΟΦΟΡΙΩΝ

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ

Ιωσηφίδου Ανατολή

Επιβλέπων: Παπαδημητρίου Αστέριος

Κ Α Β Α Λ Α

Ο Κ Τ Ω Β Ρ ΙΟ Σ 2008

(2)

Περιεχόμενα

Κεφάλαιο 1 Μια ανασκόπηση της MySQL 1

Κεφάλαιο 2 JDBC και Connector/J 7

Κεφάλαιο 3 Πώς εργαζόμαστε με τη MySQL 21

Κεφάλαιο 4 Εγκατάσταση MySQL, Java και Connector/J 48 Χρησιμοποιώντας JDBC με την εφαρμογή της

Κεφάλαιο 5 Java applets 54

Επιτυχία προχωρημένης λειτουργικότητας του

Κεφάλαιο 6 Connector/J με τα Servlets 92

Κεφάλαιο 7 Τύπος κατάστρωσης χάρτη MySQL 124 Συναλλαγές και κλείδωμα των πινάκων με τον

Κεφάλαιο 8 Connector/J 135

Κεφάλαιο 9 Η χρήση του Metadata 146

Κεφάλαιο 10 Σύνδεση κοινού ταμείου με τον Connector/ J 157

Κεφάλαιο 11 EJBS (Enterprise Java Beans) με MySQL 165

Κεφάλαιο 12 Οικοδόμηση μιας γενικής διεπαφής για MySQL 182

Κεφάλαιο 13 Διοίκηση βάσεων δεδομένων 206

Κεφάλαιο 14 Επίδοση και ρύθμιση 220

Βιβλιογραφία 230

(3)

Μια ανασκόπηση της MySQL

Σε αυτό το κεφάλαιο, εξηγούμε γιατί θα πρέπει να διαλέξετε την χρήση του συστήματος της βάσης δεδομένων με το δικό σας λογισμικό (software). Επίσης σας παρέχουμε μια ανασκόπηση του εξυπηρετητή (server) της βάσης δεδομένων MySQL και του οδηγού Connector/J JDBC.

Επί πολλά χρόνια, μεγάλες εταιρίες απολάμβαναν την ικανότητα να αναπτύσσουν σχετικά συστήματα που διαχειρίζονταν τις βάσεις δεδομένων (RDBM) σε όλες τις επιχειρήσεις τους.

Εταιρίες έχουν χρησιμοποιήσει αυτά τα συστήματα, για να συγκεντρώνουν τεράστια ποσότητα πληροφοριών τα οποία χρησιμοποιούνται ως «τροφοδότες» για τις αμέτρητες εφαρμογές, που δημιουργούν χρήσιμες πληροφορίες για τις επιχειρήσεις.

Μέχρι πρόσφατα, η τεχνολογία του RDBMS είναι άπιαστη για τις μικρές επιχειρήσεις και για ιδιώτες. Ευρύτερα χρησιμοποιούνται συστήματα του RDBMS, όπως το Oracle και το DΒ2 που χρειάζονται πολύπλοκα και ακριβά hardware. Τα τέλη αδείας αυτών των συστημάτων κυμαίνονται σε δεκάδες, εκατοντάδες χιλιάδες δολάρια, για κάθε εγκατάσταση. Οι επιχειρήσεις πρέπει επίσης να μισθώσουν και να προσλάβουν ειδικευμένο προσωπικό για να καταπιαστεί με την συντήρηση και την ανάπτυξη αυτών των συστημάτων. Μικρότερες επιχειρήσεις βασίζονται σε συστήματα όπως το Microsoft Access και το FoxPro, για να συντηρούν τα στοιχεία της εταιρίας τους.

Νωρίτερα, κατά την περίοδο της εκρηκτικής αύξησης του Internet, συστήματα με open source της βάσης δεδομένων, όπως το mSQL το Ροstgres (τώρα ΡοstgreSQL), και η ΜySQL, έγιναν διαθέσιμα για χρήση. Επάνω σε σχετικά σύντομο χρονικό διάστημα, οι developers αυτών των συστημάτων παρείχαν ένα μεγάλο subset της λειτουργικής που έχει προμηθευτεί από τα ακριβά εμπορικά συστήματα της βάσης δεδομένων. Αυτά τα συστήματα βάσεων δεδομένων με open source, λειτουργούν επίσης με φθηνότερα προϊόντα βάσης δεδομένων, και έχουν αποδείξει σε πολλές περιπτώσεις ότι, είναι ευκολότερο να αναπτυχθούν και να συντηρηθούν από τους εμπορικούς ομόλογούς τους.

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

Γιατί να χρησιμοποιείτε ένα RDBMS?

Σχεδόν κάθε κομμάτι του λογισμικού που έχει αναπτυχθεί, χρειάζεται να μένει σταθερό ή να αποθηκεύει στοιχεία (data). Άπαξ και τα στοιχεία μένουν σταθερά, είναι φυσικό να θεωρηθεί ότι αυτά τα στοιχεία χρειάζεται να ξαναβρεθούν, να αλλαχτούν, να ερευνηθούν και να αναλυθούν.

Έχετε πολλές επιλογές για την σταθεροποίηση των στοιχείων στο λογισμικό, από το να περάσετε τον δικό σας κώδικα, να δημιουργήσετε βιβλιοθήκες που έχουν πρόσβαση σε flat files, να χρησιμοποιήσετε τα σε πλήρη άνθηση συστήματα του RDBMS. Παράγοντες που θα μελετήσετε όταν θα διαλέξετε μια επίμονη στρατηγική, που συμπεριλαμβάνει οτιδήποτε χρειάζεστε για την πρόσβαση πολλών χρηστών, το πώς θα διαχειριστείτε τις απαιτούμενες αποθηκεύσεις, οτιδήποτε χρειάζεστε για την συναλλακτική ακεραιότητα, και αν οι χρήστες του λογισμικού σας χρειάζονται προς τούτο ικανότητα για ερωτηματικά. Το RDBMS προσφέρει όλη αυτή την λειτουργικότητα.

Πρόσβαση πολλών χρηστών

Πολλά συστήματα χρησιμοποιούν flat files για να αποθηκεύουν στοιχεία. Οι flat files είναι απλοί για να τους δημιουργήσετε, και να τους αλλάξετε. Οι φάκελοι μπορεί να χρησιμοποιηθούν από πολλά εργαλεία, ειδικά εάν είναι σε comma- ή tab, οροθετημένα σχήματα. Μια μεγάλη συλλογή των built-in και third-party βιβλιοθήκες είναι διαθέσιμες για να έχετε συναλλαγές με τους flat files μέσα στη Java. Η τάξη του java.util.Properties συμπεριλαμβάνεται με το Java Development Kit, που είναι ένα παράδειγμα.

Τα συστήματα των flat files μπορούν πολύ γρήγορα να γίνουν αβάσιμα, όταν οι πολλαπλοί χρήστες

ζητούν ταυτόχρονη πρόσβαση στα στοιχεία. Για να αποφθεχθεί η διαφθορά των στοιχείων στους

φακέλους, πρέπει να κλειδώσετε τον φάκελο κατά την διάρκεια ανάγνωσης. Όταν ο φάκελος είναι

κλειδωμένος, δεν μπορεί να γίνει πρόσβαση από άλλους χρήστες. Όταν ο φάκελος μεγαλώσει και ο

αριθμός των χρηστών αυξηθεί, τότε αυτό οδηγεί σε ένα μεγάλο μποτιλιάρισμα, επειδή ο φάκελος

(4)

παραμένει κλειστός το περισσότερο διάστημα, οι χρήστες σας είναι αναγκασμένοι να περιμένουν μέχρι που να μπορούν να έχουν αποκλειστική πρόσβαση στα στοιχεία.

Το RDBMS, αποφεύγει αυτήν την κατάσταση, με το να χρησιμοποιεί έναν αριθμό από στρατηγικές κλειδώσεων ποικίλων κανονισμών. Αντί να χρησιμοποιήσει μια μοναδική κλείδωση, το σύστημα της βάσης δεδομένων μπορεί να κλειδώσει έναν ξεχωριστό πίνακα, μια ξεχωριστή σελίδα (μια μονάδα αποθήκευσης μέσα στη βάση δεδομένων), που συνήθως σκεπάζει παραπάνω από μια σειρά ή μια μοναδική σειρά. Αυτό αυξάνει την κατ’ ευθείαν σύνδεση, όταν οι πολλαπλοί χρήστες, προσπαθούν να έχουν πρόσβαση στα στοιχεία σας, τα οποία είναι μια κοινή ζήτηση μέσα στο βασισμένο στις εφαρμογές Web-based της όλης επιχείρησης (enterprise-wide).

Διαφάνεια αποθήκευσης

Εάν χρησιμοποιείτε flat files στο λογισμικό σας, είστε επίσης υπεύθυνοι για την διαχείριση της αποθήκευσης σε δίσκο. Πρέπει να υπολογίσετε για το πού και πώς να αποθηκεύσετε τα στοιχεία και, κάθε φορά που θα αλλάξει η τοποθεσία ή η σελιδοποίηση των φακέλων, θα χρειαστεί να αλλάξετε το λογισμικό σας. Άπαξ και η αποθήκευση σειρών των στοιχείων του λογισμικού, γίνεται πολυάριθμη ή μεγάλη, η διαχειριστική διαδικασία αποθήκευσης γίνεται δυσμετακίνητη. Όταν χρησιμοποιείτε ένα σύστημα της βάσης δεδομένων, σας δίνει την «διαφάνεια αποθήκευσης». Το δικό σας λογισμικό δεν ενδιαφέρεται για το πού και το πώς αποθηκεύτηκαν τα στοιχεία σας. Τα στοιχεία μπορούν ακόμη να αποθηκευτούν σε κάποιον άλλον υπολογιστή, και να γίνει η πρόσβαση μέσω πρωτοκόλλων του δικτύου.

Συναλλαγές

Όταν έχετε παραπάνω από έναν χρήστη που κάνει πρόσβαση και αλλάζει τα στοιχεία σας, θέλετε να κάνετε αυτές τις αλλαγές συναλλακτικές. Ομάδα λειτουργίας συναλλαγών μέσα στα στοιχεία σας, μέσα σε μονάδες εργασίας οι οποίες ικανοποιούν το τεστ του ACID. Η ιδέα του τεστ του ACID εικονίζεται καλύτερα σε ένα κοινώς χρησιμοποιούμενο παράδειγμα, από την τραπεζική βιομηχανία.

Ο Τζακ και η Τζιλ μοιράζονται έναν κοινό λογαριασμό επιταγών, με ένα ισοζύγιο των 1.000 δολ.

και οι δυο εκτελούν διάφορες ενέργειες, όπως καταθέσεις, αποσύρσεις και μεταφορές, στον λογαριασμό. Για να δούμε πώς οι τέσσερις απόψεις του τεστ του ACID παίζονται:

Ατομικότητα: Όλες οι αλλαγές που έγιναν κατά την διάρκεια της συναλλαγής είναι επιτυχείς, ή σε περίπτωση αποτυχίας, δεν έγινε καμία. Εάν οποιαδήποτε λειτουργία αποτύχει κατά την διάρκεια της συναλλαγής, τότε ολόκληρη η συναλλαγή γυρίζει πίσω, αφήνοντας τα στοιχεία στην κατάσταση που ήταν πριν να αρχίσει η συναλλαγή. Παραδείγματος χάριν, ας υποθέσουμε ότι ο Τζακ κάνει μια μεταφορά των 500 δολ. από τον λογαριασμό των επιταγών στον λογαριασμό των καταθέσεων. Μερικές φορές μεταξύ της ανάληψης των 500 δολ. από τον λογαριασμό των επιταγών και η κατάθεση των 500 δολ. στον λογαριασμό αποταμιεύσεως, το λογισμικό που διακινεί το τραπεζικό σύστημα συντρίβεται, τα 500 δολ. του Τζακ έχουν εξαφανιστεί! Με την ατομικότητα, ούτε η ολοκληρωτική μεταφορά θα γίνονταν, ούτε τίποτε από αυτό θα γίνονταν, αφήνοντας τον Τζακ πολύ πιο χαρούμενο πελάτη, από ότι είναι τώρα.

Συνέπεια: Όλες οι λειτουργίες μεταμορφώνουν τη βάση δεδομένων από μια συνεπή κατάσταση σε μια άλλη συνεπή κατάσταση. Η συνέπεια διακρίνεται από το πως το σχήμα της βάσης δεδομένων είναι σχεδιασμένο και κατά πόσο η ακεραιότητα εξαναγκάζει πως να χρησιμοποιούνται ξένα κλειδιά. Η διαχείριση του συστήματος της βάσης δεδομένων είναι υπεύθυνη για να διασφαλίσει το ότι οι συναλλαγές δεν παραβιάζουν το σχήμα της ή την ακεραιότητα των εξαναγκασμών. Παραδείγματος χάριν, αυτοί που ανέπτυξαν τις τραπεζικές βάσεις δεδομένων έχουν δηλώσει ότι στο σχήμα τους, το ισοζύγιο ενός λογαριασμού δεν μπορεί να είναι άδειο, ή άκυρο.

Εάν κάποια συναλλαγή προσπαθεί να ορίσει το ισοζύγιο σε μια άδεια αξία, η συναλλαγή θα αποβληθεί και οποιαδήποτε αλλαγή θα γυρίσει πίσω.

Απομόνωση: Οι αλλαγές της συναλλαγής δεν γίνονται ορατές στις άλλες συναλλαγές μέχρι να

δεσμευθούν κάτω από τον κανόνα της απομόνωσης προηγουμένως. Αυτό επιδεικνύεται καλύτερα

από το τι συμβαίνει όταν παράγονται οι εκθέσεις, στα τέλη του μηνός. Ας πούμε ότι ο Τζακ εκτελεί

μια μεταφορά συναλλαγής που δέχτηκε στο παράδειγμα της ατομικότητας και ταυτοχρόνως εσείς

παράγετε την μηνιαία αναφορά. Χωρίς την απομόνωση, η μηνιαία αναφορά μπορεί να δείξει την

ανάληψη από τον λογαριασμό επιταγών αλλά όχι την κατάθεση μέσα στον λογαριασμό

(5)

αποταμίευσης. Αυτή η ασυμφωνία μπορεί να το καταστήσει αδύνατον για τον Τζακ ή την τράπεζα, να ισοζυγίσουν τα βιβλιάρια τους.

Ανθεκτικότητα: Άπαξ και ολοκληρώθηκαν οι αλλαγές μιας συναλλαγής, ποτέ δεν χάνονται μέσω του συστήματος ή τις συντριβές του hardware. Εάν η Τζιλ πλήρωσε για είδη παντοπωλείου αξίας 50 δολ. με την πιστωτική της κάρτα και η συναλλαγή επέτυχε, ακόμη και εάν η βάση δεδομένων του λογισμικού συντριβεί αμέσως μετά την ολοκλήρωση της συναλλαγής, δεν θα ξεχάσει το ισοζύγιο του λογαριασμού της επιταγής που είναι 50 δολ. χαμηλότερο.

Μέχρι πρόσφατα, η MySQL δεν συμμορφώνονταν με όλα τα συστατικά μέρη του τεστ ACID.

Ωστόσο, με τα καινούργια BDB και InnoDB είδη πινάκων (υποστηρίχθηκε στη MySQL 3.23 και τη MySQL 4.0), η MySQL τώρα μπορεί να περάσει το τεστ του ACID.

Όχι όλα τα λογισμικά χρειάζονται την ανθηρότητα (ή την σχέση με τον γενικό) την σημασιολογία της συναλλαγής. Η MySQL είναι μία από τις μοναδικές βάσεις δεδομένων, οι οποίες σας επιτρέπουν να αποφασίσετε ποιο επίπεδο ανθηρότητας χρειάζεστε, βάσει πίνακα με πίνακα. Αυτό γίνεται απαραίτητο όταν προσπαθείτε να μεγαλοποιήσετε την απόδοση, ειδικά όταν τα περισσότερα στοιχεία είναι μόνο γραμμένα (όπως μέσα σε έναν κατάλογο προϊόντος).

Αναζήτηση, τροποποίηση και ανάλυση στοιχείων.

Κάθε φορά που αποθηκεύετε ένα σημαντικό ποσό στοιχείων με το λογισμικό σας, οι χρήστες σας θα θέλουν να ερευνούν, να τροποποιούν και να αναλύουν τα στοιχεία που αποθηκεύσατε. Εάν χρησιμοποιείτε flat files, πολύ πιθανόν να αναπτύξατε αυτήν την λειτουργικότητα μόνοι σας.

Όπως τα στοιχεία σας αποθηκεύτηκαν σε flat files πιάνουν πολύ περισσότερο χώρο και χρειάζεται περισσότερος χρόνος για να γίνει η έρευνα. Μια κοινή λύση για αυτό το πρόβλημα είναι να δημιουργηθεί ένας δείκτης για τα στοιχεία σας. Οι κατάλογοι βασικά είναι γραμμένοι εν συντομία, για να βρείτε ένα συγκεκριμένο κομμάτι στοιχείων, που συνήθως χρησιμοποιείται ένα είδος κλειδιού. Εάν χρειάζεστε να αναπτύξετε την λειτουργικότητα του δείκτη μόνοι σας, πρέπει να μάθετε για τις δομές των στοιχείων, όπως (hashes και B-trees), και πώς να αποθηκεύσετε τους δείκτες δίπλα στα στοιχεία σας. Επιπλέον, πρέπει να μάθετε πως να εφαρμόζετε τον δείκτη με το λογισμικό σας. Εάν χρησιμοποιείτε ένα RDBMS μπορείτε να πείτε στο σύστημα της βάσης δεδομένων ποια στοιχεία νομίζετε ότι τα άτομα θα ερευνούν και αυτό είναι που κάνει όλο το ευρετήριο φανταχτερό, για σας.

Οι χρήστες του λογισμικού σας θα θέλουν επίσης να ξαναβρούν, να τροποποιήσουν και να αναλύσουν τα στοιχεία που εσείς έχετε αποθηκεύσει. Αυτοί υποθέτουν ότι το σύστημα σας γνωρίζει πως να υπολογίσει τέτοιες τιμές όπως αθροίσματα, αναλογίες, κατώτερο ή ανώτατο όριο για να χρησιμοποιηθούν για την εκσυγχρόνιση συγγενικών στοιχείων ή την ανάλυση των υπαρχόντων στοιχείων. Αυτοί υποθέτουν ότι το λογισμικό σας θα είναι ικανό να τακτοποιεί τα στοιχεία ή να χωρίζει σε ομάδες τα στοιχεία με παρόμοιους χαρακτήρες. Όλη αυτή η λειτουργικότητα ζητά να εφαρμόσετε αριθμητικές και αλγοριθμικές λειτουργίες. Εάν χρησιμοποιήσετε ένα RDMBS, όλα αυτά τα χαρακτηριστικά στοιχεία είναι ενσωματωμένα.

Ειδικές ερωτήσεις

Είναι πιθανόν το λογισμικό σας, να χρειαστεί να ξαναβρεί αποθηκευμένα στοιχεία χρησιμοποιώντας αυθαίρετες παραμέτρους, αλλιώς ως ειδικές ερωτήσεις. Αυτό γίνεται δύσκολο με τους flat files, επειδή αυτοί δεν είναι αυτο-περιγραφικοί, και κάθε σελιδοποίηση του φακέλου είναι διαφορετική. Επίσης χρειάζεται να λάβετε υπόψη σας πως θα διαβάζετε τα στοιχεία αυτών των αποριών από τον επίμονο μηχανισμό αποθήκευσης.

Πολλοί RDBMS χρησιμοποιούν την SQL (Structured Query Language) για τον χειρισμό στοιχείων.

Η SQL είναι μια αναφορική γλώσσα στην οποία δηλώνετε ποια στοιχεία θέλετε, κι όχι για την διαδικασία για το πώς θα τα πάρετε. Η SQL είναι επίσης ένας αποδεχόμενος και ευρύτερα χρησιμοποιούμενος κανόνας, έτσι ένα μεγάλο σύνολο εργαλείων είναι διαθέσιμο (JDBC και Enterprise Java Beans, ανάμεσα σε αυτά) για να βοηθήσουν να εργαστείτε με αυτό.

Μετά την περίληψη όλων των ωφελειών του RDBMS, ελπίζω να είσθε έτοιμοι να σκεφτείτε να το

χρησιμοποιήσετε σε ένα από τα λογισμικά έργα σας. Η επόμενη ερώτηση που πρέπει να ερωτηθεί

είναι «γιατί να διαλέξουμε τη MySQL;»

(6)

Γιατί να διαλέξετε τη MySQL;

Όπως ήταν η περίπτωση με πολλά άλλα open source projects, η MySQL έχει δημιουργηθεί από κάποιον που χρειάζονταν ένα καλύτερο εργαλείο για να κάνει μια συγκεκριμένη εργασία. Ο Μόντι Γκιντένιους (Monty Widenius ) και ο Ντέιβιντ Άξμαρκ (David Axmark) άρχισαν πρώτα με άλλο ένα open source project (MSQL), αλλά ανακάλυψαν ότι τους έλειπαν μερικά χαρακτηριστικά στοιχεία τα οποία χρειάζονταν. Αποφάσισαν να αναπτύξουν ένα δικό τους σύστημα βάσης δεδομένων το οποίο να καλύπτει τις συγκεκριμένες απαιτήσεις. Άρχισαν να χτίζουν τη MySQL, χρησιμοποιώντας μερικούς χαμηλού επιπέδου αποθήκευσης κώδικες της βάσης δεδομένων, τους οποίους είχαν ήδη αναπτύξει για άλλα έργα και σελιδοποίησαν έναν multithreaded εξυπηρετητή, SQL parser, και ένα πρωτόκολλο πελάτη-εξυπηρετητή από επάνω. Επίσης αυτοί κατασκεύασαν το API για τη MySQL να φαίνεται σχεδόν ίδιο με την MSQL, με σκοπό να το κάνει πιο εύκολο γι’ αυτούς που το ανέπτυξαν, να παρουσιάσουν τη δική τους MSQL στη MySQL.

Η MySQL τύπου source-code, τελικά κυκλοφόρησε κάτω από μια άδεια ιδιοκτησίας. Τελικά, αυτή η άδεια άλλαξε στο GNU General Public Licence (GPL) άδεια του γενικού κοινού, η οποία στις πιο πολλές περιπτώσεις επιτρέπει το λογισμικό να χρησιμοποιηθεί χωρίς τα τέλη της άδειας. Ωστόσο, σε ορισμένες περιπτώσεις πρέπει να αγοράσετε μια εμπορική άδεια. Οι ακριβείς όροι της άδειας είναι διαθέσιμοι μέσα στην τεκμηρίωση που μεταφέρεται μαζί με τη MySQL ή στο Web:

www.mysql.com. Η εμπορική υποστήριξη είναι επίσης διαθέσιμη για αυτούς που την χρειάζονται από το MySQL-AB, η εταιρία που δημιουργήθηκε από τον Μόντι και τον Ντέιβιντ για να υποστηρίξουν την συνεχόμενη ανάπτυξη του λογισμικού της MySQL.

Οι απαιτήσεις που ο Μόντι και ο Ντέιβιντ αρχικά είχαν για τη MySQL ήταν να το κάνουν να είναι όσο πιο γρήγορο ήταν δυνατόν να γίνει, ενώ ακόμη να ήταν σταθερό, εύχρηστο και ικανό να καλύψει τις ανάγκες ενός μεγάλου αριθμού developers της «βάσης δεδομένων». Ακόμη και σήμερα, χρειάζονται χαρακτηριστικά στοιχεία για την μελλοντική ανάπτυξη της MySQL, ζυγίζονται προσεκτικά έναντι αυτών των αρχικών απαιτήσεων, και εφαρμόζονται μόνο όταν και εάν οι αρχικές απαιτήσεις μπορούν να καλύψουν όσο πιο πολύ είναι δυνατόν.

Μέσα σε αυτά τα χρόνια, η MySQL έχει τα ακόλουθα βασικά χαρακτηριστικά στοιχεία:

Φορητότητα: Η MySQL λειτουργεί σε σχεδόν κάθε προτίμηση των Unix όπως επίσης των Windows και των MacOS X. Μπορείς να αποκτήσεις δυαδικούς ή source code για τη MySQL, επίσης τα εργαλεία τα οποία κάνουν την πρόσβαση. Και άλλα σημεία του λογισμικού γίνονται διαθέσιμα κάθε μέρα. Είναι σχεδόν δεδομένο ότι η MySQL, θα λειτουργήσει με οποιοδήποτε λειτουργικό σύστημα έχετε διαθέσιμο.

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

Ικανότητα του πίνακα: Εξ αιτίας της τροποποίησης και της ελαστικότητας στην διαμόρφωση, η MySQL μπορεί να λειτουργεί σε συστήματα που ποικίλουν σε μέγεθος, από τα εμπεδωμένα συστήματα με τους μεγάλους multiprocessor Unix εξυπηρετητές που φιλοξενούν βάσεις δεδομένων με δεκάδες εκατομμυρίων εγγραφές. Αυτή η ικανότητα του κλίμακα επίσης σας επιτρέπει να χρησιμοποιήσετε ένα αντίγραφο της MySQL της αναπτυξιακής-τάξης μηχανή, και αργότερα να χρησιμοποιήσετε το ίδιο σύστημα βάσης δεδομένων με μεγαλύτερη μηχανή σε παραγωγή. Επειδή είναι multithreaded, η MySQL αποδοτικά αξιοποιεί πόρους για πολλαπλούς χρήστες, συγκρίνεται με των άλλων λογισμικών τις βάσεις δεδομένων, όπου άρχισαν πολυτελείς διαδικασίες για έναν χρήστη. Δεν είναι ασυνήθιστο να ακούγεται ότι οι εγκαταστάσεις της MySQL υποστηρίζουν χιλιάδες χρήστες ταυτοχρόνως.

Ευελιξία: Η MySQL σας επιτρέπει να διαλέξετε τους τύπους πίνακα που χρειάζεστε να καλύψετε

τις απαιτήσεις του λογισμικού σας, που κατέχεται από MySQL πίνακες μνήμης, πίνακες του

MyISAM που είναι γρήγοροι, σε δίσκο, συγχωνευόμενοι πίνακες οι οποίοι γίνονται ομάδα σειρών

πινάκων για να διαμορφώσουν μεγαλύτερους «εικονικούς πίνακες», και πίνακες για την ασφάλεια

συναλλαγών, όπως το InnoDB. Η MySQL είναι επίσης πολύ συντονιστική και συμπεριλαμβάνει

πολλούς παραμέτρους, οι οποίοι μπορούν να αλλαχθούν για να αυξήσουν την απόδοση, για μια

δεδομένη λύση. Ωστόσο, η ΜySQL προσφέρεται σε λογικές προεπιλεγμένες τιμές για αυτούς τους

παραμέτρους, και πολλοί χρήστες ποτέ δεν χρειάζεται να συντονισθούν στη MySQL για να

φθάσουν σε μια απόδοση, που θα είναι ευχαριστημένοι από αυτήν.

(7)

Ευκολία χρήσης: Η MySQL είναι εύκολο να εγκατασταθεί και να διαχειριστεί. Ενώ άλλα συστήματα της βάσης δεδομένων απαιτούν ειδική γνώση και εκπαίδευση, χωρίς να αναφέρουμε τις διαμορφώσεις των λειτουργικών συστημάτων, η MySQL μπορεί να εγκατασταθεί σε λιγότερο από 10 λεπτά, εάν το έχετε ξανακάνει. Ακόμη και εάν είστε καινούργιοι, θα πρέπει να μπορέσετε να εγκαταστήσετε τη MySQL σε λιγότερο από μια ώρα. Άπαξ και έγινε η εγκατάσταση, η MySQL απαιτεί λίγη συντήρηση και διαχείριση, εκτός αν προσθέτετε ή αλλάζετε την άδεια του χρήστη και δημιουργείτε ή μετακινείτε βάσεις δεδομένων.

Καλοπερασμένα ασφαλιστικά πρότυπα: Μπορείτε να περιορίσετε τα δικαιώματα των χρηστών από ένα ολόκληρη βάση δεδομένων κάτω από το επίπεδο της στήλης, βασιζόμενο στην σύνδεση, το όνομα, τον κωδικό και το όνομα του επισκέπτη που είναι συνδεμένοι οι χρήστες σας.

Αυτό σας επιτρέπει να δημιουργήσετε ασφαλή συστήματα με διαμελισμό, υπευθυνότητες και ικανότητες των διαφορετικών χρηστών και εφαρμογών για την πρόληψη τροποποίησης χωρίς την έγκριση ή την ανάκτηση των στοιχείων.

Πρόσβαση από άλλες γλώσσες/συστήματα: Αυτές είναι βιβλιοθήκες και API για την σύνδεση με τη MySQL από τη Java (ο σκοπός αυτού του βιβλίου), C/C++,Perl, και PHP, ODBC(

Microsoft Windows applications), TCL, Eiffel, και Lisp. Για αυτό, μια ολόκληρη σειρά εργαλείων εμφανίζονται, τα οποία περιστοιχίζουν την χρήση της MySQL, από αυτές τις γλώσσες και τα συστήματα.

Όπως βλέπετε, η MySQL είναι ένα ελαστικό και ικανό RDBMS, το οποίο έχει μια πλούσια σειρά από χαρακτηριστικά στοιχεία, αποδίδει καλώς στην πλειοψηφία των ερωτήσεων, και έχει μια μεγάλη βασική υποστήριξη πρόσβασης από πολλές διαφορετικές γλώσσες. Αυτό το βιβλίο θέτει την προσοχή του στο πώς να χρησιμοποιούμε τη MySQL με JDBC, το οποίο είναι το θέμα που θα μιλήσουμε, παρακάτω.

Η MySQL και το JDBC

Πολλοί developers(υπεύθυνοι για την ανάπτυξη) διάλεξαν να εφαρμόσουν το λογισμικό χρησιμοποιώντας την τεχνολογία της Sun Java, εξ αιτίας της υποστήριξης που παρέχει για τις προδιαγραφές απόψεων του Internet, όπως Web-sites, e-mails και networking. Αυτή είναι η αυτή καθεαυτή αιτία που άρχισα να διερευνώ την χρήση της Java με τη MySQL το 1994.

Η Sun δημιούργησε ένα τυποποιημένο interface στις βάσεις δεδομένων από τη Java που ονομάζεται Java Database Connectivity (JDBC). Στις αρχές του 1994, ενδιαφερόμουν για την σύνδεση μιας εφαρμογής της Java, ήμουν έτοιμος να αναπτύξω με το τότε νέο σύστημα της βάσης δεδομένων της MySQL, χρησιμοποιώντας το JDBC.

Τότε, ένας στοιχειώδης οδηγός το JDBC αναπτύχθηκε από τις GWE τεχνολογίες που υπήρχαν για τη MySQL. Ωστόσο, του έλειπαν πολλά χαρακτηριστικά στοιχεία, που με χρειάζονταν για το έργο μου. Επειδή πολλά από τα χαρακτηριστικά στοιχεία που χρειαζόμουν θα ήταν δύσκολο να εφαρμόσω στον πρωτότυπο οδηγό της MySQL, αποφάσισα να δω εάν θα μπορούσα να εφαρμόσω ένα μόνος μου, παραπάνω ως μάθημα, από οτιδήποτε άλλο.

Μετά από μερικές εβδομάδες εργασίας, είχα κάτι που κάλυπτε τις περισσότερές μου ανάγκες. Δια μέσου αλληλογραφίας με άλλους developers της Java στον ταχυδρομικό κατάλογο της MySQL, βρήκα ότι και άλλοι είχαν την ανάγκη να χρησιμοποιούν τον οδηγό JDBC με τη MySQL, και ότι χρειάζονταν πολλά από τα χαρακτηριστικά στοιχεία, που μόλις είχα εφαρμόσει. Χωρίς να ξέρω τι θα γίνει, έγραψα γύρω από τον οδηγό που είχα αναπτύξει και επέτρεψα το κοινό να τον χρησιμοποιεί. Από αυτό το μικρό έργο, ο οδηγός του JDBC που είναι γνωστός ως MM.MySQL, έχει δημιουργηθεί.

Μέσα σε αυτά τα χρόνια , δια μέσου πολλών χιλιάδων e-mails από χρήστες σε ολόκληρο τον κόσμο, για χρόνια σφάλματα και ζητήματα με εργαλεία ανάπτυξης και εφαρμογής του εξυπηρετητή, η MySQL κανονίστηκε και συντονίστηκε και τελικά σταθεροποιήθηκε, έγινε ένα επιτυχημένο open-source έργο με δική του ζωή. Διαβιβάζονται από developers από όλον τον κόσμο, κατά μέσον όρο, κοντά στις χίλιες φορές την ημέρα, είναι ένας από τους πιο δημοφιλείς οδηγούς το JDBC, εμπορικά ή open-source .

Ο Μόντι και ο Ντέιβιντ της MySQL AB, τελικά άρχισαν να αντιλαμβάνονται το μέγεθος του

developer της Java, που η κοινότητα θέλει να χρησιμοποιεί τη MySQL και επέκτειναν μια

προσφορά σε μένα, για να γίνω μέλος της ομάδας τους. Τον Ιούνιο του 2002 το έκανα αυτό, και το

MM.MySQL έγινε επισήμως ο οδηγός JDBC για τη MySQL. Έχει μετά ταύτα μετονομαστεί

Connector/J.

(8)

JDBC και Connector/J

Στο προηγούμενο κεφάλαιο, συζητήσαμε το πώς μία βάση δεδομένων μπορεί να βοηθήσει στην ανάπτυξη των δυο Web sites, και τις εφαρμογές. Μία από τις πιο δημοφιλής βάσεις δεδομένων είναι η MySQL. Βεβαίως, χρειάζεται επίσης μια γλώσσα, και η επιλογή μας για αυτό το βιβλίο είναι η Java. Μόνο που η Java δεν έχει κανένα τρόπο για την άμεση πρόσβαση σε μια βάση δεδομένων. Για να μας επιτρέψει να πετύχει η απαραίτητη διεπαφή μεταξύ της Java και μιας βάσης δεδομένων, οι developers στο Sun, δημιούργησαν ένα χαρακτηριστικό που ονομάζεται JDBC. Σε αυτό το κεφάλαιο, θα ρίξουμε μια περιεκτική ματιά στα ακόλουθα:

-Στην ιστορία του JDBC

-Στους τύπους οδηγών του JDBC

-Στους κανόνες και πώς επηρεάζουν το JDBC -Στην τάξη του JDBC

-Στον οδηγό του JDBC

Τι είναι το JDBC;

Σε αυτό το τμήμα, παρέχουμε μια περιληπτική ανασκόπηση του τι είναι το JDBC, και πώς αναπτύχθηκε. Εάν και πολλοί πιστεύουν ότι το JDBC, είναι τα αρχικά για το Java Database Connectivity, το ίδιο το JDBC δηλώνει ότι η τεκμηρίωση του JDBC δεν είναι το αρκτικόλεξο, αλλά πραγματικά ένα όνομα εμπορικού σήματος( μπορείτε να βρείτε περισσότερες πληροφορίες γύρω από το JDBC στο Sun’s Web site: http: //java.sun.com/products/idbc/).

Όπως είπαν, το JDBC είναι απλά μια εφαρμογή διεπαφής προγραμματισμού (API) για την χειρισμό μιας βάσης δεδομένων. Ο χειρισμός περιλαμβάνει τα πάντα, από την σύνδεση στη βάση δεδομένων, την εκτέλεση αναφορών της SQL, την επιστροφή αποτελεσμάτων. Το JDBC είναι μεσαίο κύμα ή ένας μεσάζων μεταξύ της γλώσσας της Java και μιας βάσης δεδομένων. Βασικά, το JDBC είναι ένα χαρακτηριστικό το οποίο παρέχει μια πλήρη σειρά από Java που επιτρέπουν την κινητή πρόσβαση, σε ένα βαθύτερο μέρος της βάσης δεδομένων. Το ζήτημα της κινητικότητας είναι ένα από τις απόψεις, κλειδί του JDBC. Μπορείτε να φανταστείτε χρησιμοποιώντας μια γλώσσα σαν την Java -η οποία παρέχει το αναμφισβητήτως καλύτερο μηχανισμό, για να γράψετε μια εφαρμογή μια φορά και να την εκτελείτε σε μεγάλο αριθμό πλατφόρμων και μετά μπορεί να αλλάξει τον κώδικα , όταν ο οργανισμός σας αλλάξει από την Microsoft SQL server στη MySQL;

Δεν θα είναι πολύ κινητή γλώσσα στον χώρο χειρισμού της βάσης δεδομένων..

Ευτυχώς, αυτό σημαίνει ότι η Oracle, η MySQL, η Microsoft, και πολλοί άλλοι πωλητές της βάσης δεδομένων, άργησαν να γράψουν άλλους κώδικες πίσω στα παρασκήνια. Από τότε όλοι οι πωλητές γράφουν έναν κοινό API, που μπορείτε να είστε σχετικά βέβαιοι, ότι η ιδέα να γράψετε μια φορά, να εκτελείτε συχνά και παντού, είναι ακόμη άθικτη. Επειδή οι περισσότεροι από του πωλητές οδηγών του JDBC είναι επίσης γραμμένοι στη Java (περισσότερα για αυτό στην επόμενο τμήμα), οι οδηγοί μπορούν επίσης να χρησιμοποιηθούν σε διαφορετικές πλατφόρμες. Όχι μόνο μπορείτε να αλλάξετε την πλατφόρμα στην οποία λειτουργεί η εφαρμογή σας ή όπου η ίδια η βάση δεδομένων κατοικεί, αλλά μπορείτε επίσης να αλλάξετε την πλατφόρμα όπου η βάση δεδομένων εκτελεί. Στην περίπτωση της MySQL, το σύστημα της βάσης δεδομένων, εκτελεί στις περισσότερες προτιμήσεις των Unix, και των Linux, των Windows, και την πλατφόρμα των Macintosh.

Όπως ξέρετε, η Java μπορεί να χρησιμοποιηθεί για να γράψει διαφορετικούς τύπους εκτελέσεων όπως:

• Εφαρμογές

• Applets

• Servlets

• Java ServerPages(JSPs)

• Εnterprise JavaBeans ( EJBs)

(9)

Όλα αυτά τα διαφορετικά εκτελεστικά, είναι ικανά να χρησιμοποιήσουν ένα οδηγό JDBC, για την πρόσβαση σε μια βάση δεδομένων και να εκμεταλλευτούν τα αποθηκευμένα στοιχεία. Μέσα σε αυτό το βιβλίο, χρησιμοποιούμε έναν συνδυασμό αυτών των εφαρμογών για να εικονογραφήσουμε, την χρήση του οδηγού JDBC στη MySQL, για την εξαγωγή στοιχείων από τη βάση δεδομένων. Στο περισσότερο μέρος του βιβλίου, χρησιμοποιούμε τον όρο Java application για την αναφορά του οποιουδήποτε εκτελεστικού τύπου έχουμε καταγράψει, με την πιθανή εξαίρεση του EJBs.

Τι είναι το ODBC;

Είναι μια από τις αιτίες που οι developers σκέφτηκαν το JDBC, που υπερασπίζει η Java Database Connectivity, που σχετίζεται με το αρκτικόλεξο ODBC (που χρησιμοποιείτε από τη Microsoft). Το ODBC, ή Open Database Connectivity, είναι ένα ΑPI που αναπτύχθηκε από την Microsoft για να επιτρέπει πρόσβαση στις βάσεις δεδομένων. Το ΑPI και ο διεπαφής μετά ταύτα κώδικας, επιτρέπουν την πρόσβαση σε μια τεράστια ποικιλία των βάσεων δεδομένων με πάρα πολλές πλατφόρμες, χρησιμοποιώντας μια ποικιλία γλωσσών. Αυτό ακούγεται υπέροχο για ένα μεσαίων κυμάτων προϊόν. Σίγουρα μπορούμε να χρησιμοποιήσουμε το ODBC ως διεπαφή μεταξύ του Java και της MySQL. Γιατί όμως δεν το κάνουμε;

Η απάντηση δεν είναι τόσο απλή, που δεν θέλουμε να χρησιμοποιήσουμε το προϊόν της Microsoft στην ανάπτυξή μας. Είναι πιθανόν να χρησιμοποιηθεί το ODBC από τη Java, χρησιμοποιώντας ένα προϊόν που αποκαλείται JDBC-ODBC (γέφυρα) που παρέχετε από τη Sun. Αυτή η γέφυρα παίρνει τις εντολές τη Java βασισμένη στο JDBC API, και τις στέλνει στον εγκατεστημένο οδηγό του ODBC, ο οποίος μετά ταύτα έχει πρόσβαση στη βάση δεδομένων. Ότι αποτελέσματα δια μέσου του λογισμικού εργάζονται σε αντίθεση. Η γέφυρα δόθηκε με τη Java 1.2 και 2.0 ως ένα κλείσιμο χάσματος για τους developers, οι οποίοι χρειάζονται γρήγορη πρόσβαση σε μία βάση δεδομένων από τον κώδικα τους τη Java. Τότε, το JDBC χαρακτηριστικό δεν ήταν ώριμο-δεν υπήρχαν πολλοί πωλητές οδηγών που χρησιμοποιούσαν το JDBC, αλλά πολλοί ήταν διαθέσιμοι για το ODBC.

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

Υπάρχουν μειονεκτήματα στην χρήση του ODBC, της διαδικασίας πρόσβασης μιας βάσης δεδομένων μέσω της Java. Το κυριότερο μειονέκτημα είναι το ότι ο κώδικας που εφαρμόζει το ODBC είναι βασισμένος στην γλώσσα T(C), και χρησιμοποιεί έναν μεγάλο αριθμό των γενικών υποδείξεων. Ο αριθμός των προβλημάτων συμβαίνουν με την διεπαφή της Java με τον κώδικα C, χωρίς να αναφέρουμε τα ζητήματα απόδοσης. Είναι καλύτερα να έχετε μια λύση της Java στην διεπαφή της Java με σκοπό να παραχθεί μια καλή λύση.

Πρότυπα εφαρμογών της βάσης δεδομένων με το JDBC.

Πριν να αρχίσουμε να δούμε τα χαρακτηριστικά του JDBC, ας διαθέσουμε ένα λεπτό και να μελετήσουμε πώς χρησιμοποιείται η διεπαφή της εφαρμογής της Java με τη MySQL. Το σχήμα 2.1 δείχνει ένα απλό two-tier αναπτυγμένο πρότυπο.

Σχήμα 2.1 Ένα two-tier αναπτυγμένο μοντέλο

(10)

Ενώ το πρότυπο του two-tier είναι αποτελεσματικό και είναι σε χρήση για πολλά χρόνια, υπάρχουν προβλήματα με αυτό, συμπεριλαμβανόμενος, την έλλειψη ασφαλείας για εκσυγχρονίσεις που συμβαίνουν στη βάση δεδομένων, ζητήματα απόδοσης και η έλλειψη του scalability.

Μοντέρνα συστήματα χρησιμοποιούν ένα ανεπτυγμένο πρότυπο, όπως φαίνεται στο σχεδιάγραμμα 2.2.

Σχήμα 2.2 Ένα three-tier αναπτυγμένο μοντέλο

Όπως φαίνεται στο μοντέλο του three-tier, όταν χρησιμοποιείτε ένα three-tier που έχει πολλά πλεονεκτήματα, το λιγότερο του οποίου είναι η ικανότητα της επιχείρησης του tier να κρατεί ζητήματα ασφάλειας με την εφαρμογή του πελάτη.

Εντός του πεδίου της Java, τα πρότυπα του three-tier έχουν συνήθως δημιουργηθεί. Η μεσαία σειρά three-tier έρχεται σε επαφή με τη βάση δεδομένων, ή με την τρίτη σειρά, είτε άμεσα είτε δια μέσου του EJBs.

Εκδοχές του JDBC

Σε ολόκληρη την ιστορία του JDBC, η Sun έχει παρουσιάσει αρκετά διαφορετικές εκδοχές, αρχίζοντας με την εκδοχή 1.0 μέσα στον Ιανουάριο του 1997. Αυτό το αρχικό χαρακτηριστικό καθορίζει τις διεπαφές, απαραίτητες για να δημιουργηθεί ένα παράδειγμα του οδηγού, σε μια εφαρμογή της Java, κτίζοντας αναφορές της SQL για να εκτελεί κατά του βάθους της βάσης δεδομένων να επιστρέφει αποτελέσματα μέσω ενός αντικειμένου του ResultSet object, και να αποκτήσει ποικιλία τεμαχίων από τα μετά στοιχεία (metadata) γύρω από τη βάση δεδομένων, ως επίσης και τα ομαδικά αποτελέσματα (resultset).

Στην συνέχεια, το χαρακτηριστικό του 2.0/2. είχε δοθεί για χρήση. Η καρδιά του API για το 2.0 δεν πρόσθεσε πολλά στο αρχικό χαρακτηριστικό στοιχείο 1.0, αλλά αντιθέτως είχε συμπυκνώσει την απόδοση, και στους τύπους στοιχείων του SQL99. Η επιπρόσθετη λειτουργικότητα περιλάμβανε και άλλες μικρές ανασυχρονίσεις. Το δεύτερο τμήμα του χαρακτηριστικού του 2.0/2.1 αποκαλείται JDBC 2.0 Optional Package. Αυτό το πακέτο συμπεριλαμβάνει διεπαφές για το data source, κοινού ταμείου, διανεμημένες συναλλαγές, και RowSets.

Πρόσφατα, η εκδοχή 3.0 του χαρακτηριστικού του JDBC έχει κυκλοφορήσει. Υποστηριζόμενο

μέσα στην εκδοχή του Java 1.4.χ, το νέο χαρακτηριστικό συμπεριλαμβάνει πολλές επαυξήσεις για

(11)

τις αποτελεσματικές ομάδες, τύπους στοιχείων, σύνδεση με κοινά ταμεία, και με βασικές αναφορές της SQL. Η νέα λειτουργικότητα περιλαμβάνει την υποστήριξη του savepoint (για να ελέγχει τις ενδιάμεσα συναλλαγές), και να υποστηρίξει το ParameterMetaData.

Μπορείτε να βρείτε μια ολόκληρη συζήτηση του χαρακτηριστικού στοιχείου του 3.0 στο http: //java.sun.com/productw/jdbc/download.html#corespec30.

Σε αυτό το τμήμα του “JDBC”, που υποστηρίζεται από το 3.0.1 "αργότερα σε αυτό το κεφάλαιο, παρέχουμε μια ολοκληρωμένη ανασκόπηση της υποστήριξης της MySQL , για την λειτουργικότητα που βρίσκεται μέσα στο χαρακτηριστικό. Το παράδειγμα 3, του ‘JDBC API and Connection/J’

που επίσης περιέχει μια λεπτομερή ανασκόπηση του όλου υποστηρικτικού χαρακτηριστικού και του Connection/J.

Τύποι του οδηγού JDBC

Σε αυτό το τμήμα θα συζητήσουμε, το βασικό πρότυπο του προγραμματισμού του ιδίου του οδηγού του JDBC. Υπάρχουν τέσσερις διαφορετικοί τρόποι, που ένας οδηγός του JDBC μπορεί να δημιουργηθεί από πωλητές, για να υποστηρίζει τις δικές τους βάσεις δεδομένων..

• Τύπος 1:JDBC-ODBC(γέφυρα)

• Τύπος 2:Native-API party Java

• Τύπος 3:JDBC-Net pure Java

• Τύπος 4:Native-protocol pure Java

Στον οδηγό τύπου 1, χρησιμοποιείται μια γέφυρα JDBC για να έχει πρόσβαση στους οδηγούς του ODBC που είναι εγκατεστημένοι στην μηχανή, κάθε πελάτη. (Αυτή είναι η γέφυρα του JDBC- ODBC που συζητήσαμε νωρίτερα) από την μεριά της Java, αυτή είναι απλώς μια προσωρινή λύση μέχρι που ο οδηγός της Java, που βασίζεται στον JDBC, μπορεί να αποκτηθεί.

Ο οδηγός τύπου 2, χρησιμοποιείται με τον ίδιο τρόπο. Αυτοί οι οδηγοί πάσχουν από τα ίδια προβλήματα που βρίσκονται στην λύση μιας γέφυρας.

Ο οδηγός τύπου 3, ο οποίος περαιτέρω μεταφράζεται σε έναν εξυπηρετητή για το πρωτόκολλο ενός συγκεκριμένου πωλητή.

Ο οδηγός τύπου 4, είναι υψηλής απόδοσης , διαθέσιμος για τη βάση δεδομένων και συνήθως παρέχεται από τον ίδιο τον πωλητή. Ο οδηγός της MySQL Connector/J είναι οδηγός τύπου 4.

Κανόνες της SQL

Ο κανονισμός για την πρόσβαση σε ένα database είναι ένα καυτό θέμα , τα πρόσφατα χρόνια. Ο κανόνας αποκαλείται Structured Query Language ή SQL. Εάν και η ιδέα του κανόνα είναι ελκυστική, όχι όλοι οι πωλητές του database ακολουθούν τον κανόνα και, μερικοί δεν μπορούν εξ αιτίας της σειράς των χαρακτηριστικών στοιχείων του ιδίου του database. Το SQL92 ήταν ένα καθορισμένο χαρακτηριστικό για το SQL, αλλά πρόσφατα ένας καινούργιος κανόνας που αποκαλείται SQL99, έχει υιοθετηθεί.

Όταν δουλεύετε με διαφορετικά συστήματα database μέσω του JDBC, μπορείτε να είστε σχετικά σίγουροι ότι η βασική λειτουργικότητα όπως SELECT, INSERT, UPDATE και DELETE, θα ενεργήσουν χωρίς μεγάλη αλλαγή. Πέρα από τα βασικά όμως, για να κάνετε το SQL να ενεργήσει από ένα database στο άλλο, απαιτείται κάποια προσπάθεια από την πλευρά σας.

Κατά πολύ το πιο σημαντικό ζήτημα που αντιμετωπίζει ο κανονισμός είναι η τυπογράφηση των στοιχείων. Όπως πιθανόν να έχετε ήδη την εμπειρία στην ιστορία της ανάπτυξης, οι τύπου των στοιχείων μεταξύ του C, C++, του Java, του PHP, και άλλους, μπορεί να είναι αρκετά διαφορετικοί, ιδιαιτέρως στον χώρο των στοιχείων και της ώρας.

Συνδυάστε αυτές τις διαφορές μαζί με τους ποικίλους τύπους των στοιχείων , οι οποίοι μπορούν να αποθηκευθούν στο database και να έχετε το εν εξέλιξη πρόβλημα. Στο Κεφάλαιο 7, το “MySQL Type Mapping’ καλύπτουμε τους τύπους του JDBC στοιχείων και το πώς αυτοί αντιπροσωπεύονται μέσα στο MySQL και μετά ταύτα με μια εφαρμογή του Java.

Ένα άλλο ζήτημα που αντιμετωπίζει ο κανονισμός είναι, η χρήση των αποσπασμάτων μέσα στις

αναφορές του SQL. Το JDBC προσπαθεί να χειριστεί αυτό χρησιμοποιώντας το πλήκτρο escape

(12)

και απαιτεί από τους πωλητές να εφαρμόσουν το escaping κατάλληλο για τις δικές τους βάσεις δεδομένων.

Ο developer μπορεί επίσης να δουλέψει με κανονισμό, χρησιμοποιώντας το metadata που παρέχεται από το database, πολλές φορές, ένα database επαναφέρει πληροφορίες με μορφή του metadata, που δείχνει εάν αυτό θα υποστηρίξει, συγκεκριμένα χαρακτηριστικά στοιχεία.

Εξέταση της διεπαφής του JDBC

Τώρα ξέρουμε τι είναι το JDBC, από πού προέρχεται, και την θέση του μέσα στο τυπικό σύστημα, ας στρέψουμε την προσοχή μας στις διεπαφές που χρησιμοποιούνται, για να δημιουργηθεί ο οδηγός. Το σχεδιάγραμμα 2.3 δείχνει πως όλη η καρδιά των διεπαφών είναι μέσα στον χαρακτηρισμό, έχουν σχεδιαστεί να ενεργούν μαζί.

Σχήμα 2.3 Η καρδιά της δομής του JDBC

Όπως έχουμε αναφέρει προηγουμένως , το χαρακτηριστικό στοιχείο έχει κοπεί σε δυο διαφορετικά πακέτα: της καρδιάς του API και του Optional API. Η καρδιά του ΑPI εφαρμόζεται στο πακέτο του Java.sql. Σε αυτό το τμήμα, θα δούμε για τις διαθέσιμες διεπαφές μέσα στα χαρακτηριστικά στοιχεία (εάν και δεν δείχνουμε εδώ εάν το Connector υποστηρίζει την λειτουργικότητα, που μπορεί να βρεθεί στο παράδειγμα C).

Το πακέτο του Java.sql

Μπορείτε να βρείτε αυτήν την πληροφορία μέσα στο τμήμα “Κατανόηση του Connector/J”

αργότερα, μέσα σε αυτό το κεφάλαιο. Οι διεπαφές συγκεκριμένα, καθορίστηκαν στην εκδοχή του 3.0 του χαρακτηριστικού στοιχείου, όπως, φαίνεται σε πλάγια τυπογραμμένα. Ολόκληρο το Javadoc μπορεί να βρεθεί στο : http ://java. sun. com/j2se/1.4/docs/ api/java/sql/package- summary. html.

java.sql.Array: Η διεπαφή σειράς (Array) είναι μια χαρτογράφηση μεταξύ της γλώσσας της Java

και του τύπου SQL ARRAY. Η διεπαφή περιλαμβάνει τις μεθόδους για μια αξία ARRAY σε έναν

πελάτη ως σειρά της Java ή σε ένα ResultSet.

(13)

java.sql.BatchUpdateException: Το BatchUpdateException ρίχνεται όταν αποτύχει μια λειτουργία αναπροσαρμογών batch. Η εξαίρεση περιλαμβάνει όλες τις επιτυχείς εντολές αναπροσαρμογών που εκτέλεσαν πριν από την αποτυχία.

java.sql.Blob: Η διεπαφή της Java σταγόνων είναι μια χαρτογράφηση στην αξία SQL BLOB.

java.sql.CallableStatement: Η διεπαφή CallableStatement χρησιμοποιείται για να εκτελέσει τις αποθηκευμένες διαδικασίες εάν υποστηρίζονται στη βάση δεδομένων. Οι παράμετροι επιτρέπονται με τη σύνταξη διεπαφών καθώς επίσης και διαφυγών.

java.sql.Clob: Το Clob είναι μια χαρτογράφηση από τη γλώσσα προγραμματισμού της Java στον τύπο SQL CLOB. Ένα CLOB είναι ένα μεγάλο αντικείμενο χαρακτήρα.

java.sql.Connection: Η διεπαφή σύνδεσης παρέχει μια μέθοδο για μια σύνδεση σε μια συγκεκριμένη βάση δεδομένων. Όλη η SQL εκτελείται στα πλαίσια ενός αντικειμένου σύνδεσης.

java.sql.DataTrun.catton: Η εξαίρεση DataTruncation ρίχνεται όταν θα περικόβει τα στοιχεία.

Γράψτε, η εξαίρεση είναι ένα λάθος, αλλά διαβασμένη, η εξαίρεση είναι μια προειδοποίηση.

java.sql.DatabaseMetaData: Η διεπαφή DatabaseMetaData σχεδιάζεται για να παρέχει τις πληροφορίες για τη μακρινή βάση δεδομένων στην οποία μια σύνδεση έχει γίνει προηγουμένως. Η διαθέσιμη πληροφορία στο αντικείμενο DatabaseMetaData θα είναι διαφορετική βασισμένη στον προμηθευτή βάσεων δεδομένων και τις πληροφορίες που θέλει να παρέχει.

java.sql.Date: Η κατηγορία ημερομηνίας είναι ένα περιτύλιγμα για JDBC για να χρησιμοποιήσει ως χάρτη στην αξία SQL DATE. Η αξία της ημερομηνίας είναι ο αριθμός χιλιοστών του δευτερολέπτου από την 1η Ιανουαρίου 1970, 00:00: 00.000 GMT. Ένα λεπτό περιτύλιγμα γύρω από μια αξία χιλιοστών του δευτερολέπτου που επιτρέπει σε JDBC για να προσδιορίσει αυτό ως αξία SQL DATE. Μια αξία χιλιοστών του δευτερολέπτου αντιπροσωπεύει τον αριθμό χιλιοστών του δευτερολέπτου που έχουν περάσει από την 1η Ιανουαρίου 1970, 00:00: 00.000 GMT.

java.sql.Driver: Η διεπαφή οδηγών εφαρμόζεται από όλους τους οδηγούς προμηθευτών έτσι ώστε μπορούν να φορτωθούν από μια στατική κατηγορία αποκαλούμενη DriverManager. Το αντικείμενο οδηγών θα δημιουργήσει αυτόματα μια περίπτωση του και καταλόγου με DriverManager.

java.sql.DriverMan.ager: Η κατηγορία DriverManager χρησιμοποιείται για να διαχειριστεί όλα τα αντικείμενα οδηγών.

java.sql.DriverPropertyInfo: Η κατηγορία DriverPropertyInfo παρέχει τις πληροφορίες για τους προηγμένους υπεύθυνους για την ανάπτυξη που πρέπει να θέσουν τις συγκεκριμένες ιδιότητες για τη φόρτωση ενός αντικειμένου οδηγών.

java.sql.ParameterMetaData: Η διεπαφή ParameterMetaData παρέχει τις πληροφορίες για τις παραμέτρους σε ένα αντικείμενο PreparedStatement.

java.sql.PreparedStatement: Η διεπαφή PreparedStatement παρέχει ένα αντικείμενο για την εκτέλεση των προσυνταγμένων δηλώσεων SQL ενάντια στη συνδεδεμένη βάση δεδομένων.

java.sql.Ref: Η διεπαφή REF είναι μια χαρτογράφηση μεταξύ της Java και μιας αξίας SQL REF.

Μια αξία REF είναι μια αναφορά σε μια δομημένη SQL αξία τύπων.

java.sql.ResultSet: Μια διεπαφή ResultSet σχεδιάζεται για να αντιπροσωπεύσει ένα ResultSet που παράγεται από μια ερώτηση της βάσης δεδομένων. Ένας εσωτερικός δρομέας δείχνει την τρέχουσα σειρά των στοιχείων, και μπορεί να δειχτεί πριν και μετά από τα στοιχεία. Οι μέθοδοι χρησιμοποιούνται για να κινήσουν το δρομέα προς τις διαφορετικές σειρές στο ResultSet. Εξ ορισμού, το ResultSet δεν είναι αναθεωρήσιμο, αλλά μπορεί να γίνει και scrollable και αναθεωρήσιμο.

java.sql.ResultSetMetaData: Η διεπαφή ResultSetMetaData χρησιμοποιείται για να επιστρέψει

τις συγκεκριμένες πληροφορίες για τα στοιχεία μέσα σε ένα αντικείμενο ResultSet. Οι

πληροφορίες θα μπορούσαν να περιλάβουν τον αριθμό στηλών, ονομάτων στηλών, ακρίβειας

στηλών επιπλεόντων σωμάτων, και συνολικού μεγέθους στηλών, μεταξύ άλλων στοιχείων.

Imagem

table type possible keys key key_len ref rows Extra

Referências

Documentos relacionados

Αν ήταν δυνατό ένας θεατής να παρακολουθήσει το έργο από το τέλος ως την αρχή, μόνο τότε θα μπορούσαμε να αποδεχτούμε ότι οι θεοί σε μια ανάδρομη πορεία, έχουν το δικό τους σχέδιο για