Αποτελεί ισχυρό εργαλείο, µε υψηλή απόδοση & αποτελεσµατικότητα.

Σχετικά έγγραφα
Εργαστήριο Ανάπτυξης Εφαρμογών Βάσεων Δεδομένων. Εξάμηνο 7 ο

Προγραμματισμός ΙΙ (Java) 6. Διαχείριση δεδομένων

Lecture 3: Introduction III

Διαδικτυακές Εφαρμογές Ενότητα 1: JPA

Τι είναι η Spring. Η Spring είναι ένα ελεύθερο (open source) περιβάλλον εργασίας για εφαρμογές Java. Μπορεί να περιγραφεί ως:

Διαδικτυακές Εφαρμογές. Ενότητα 2: Enterprise Java Beans και Java Server Faces Μιχάλας Άγγελος Βούρκας Δημήτριος Τμήμα Μηχανικών Πληροφορικής ΤΕ

Αρχιτεκτονική του πληροφοριακού συστήµατος Cardisoft Γραµµατεία 2003 ιαχείριση Προσωπικού

MySQL + Γλώσσα Προγραμματισμού. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Information Technology for Business

CORBA. Αρχιτεκτονική και 3-tier 3. εφαρµογές. Β. Φλώρος. Μαρτάκος. Τµήµα Πληροφορικής και Τηλεπικοινωνιών Εθνικό και Καποδιστιακό Πανεπιστήµιο Αθηνών

2016 IEEE/ACM International Conference on Mobile Software Engineering and Systems

Αρχές Τεχνολογίας Λογισμικού

Database System Concepts and Architecture (Αρχιτεκτονική, οµές, και Μοντέλα)

IT & Networking DEVELOPING Essential Python 3. Κωδικός Σεμιναρίου / Code

Επιτεύγµατα των Λ.Σ.

Σύγχρονα εργαλεία και τεχνολογίες ανάπτυξης I.S. Το Microsoft.NET

Συγκριτικά Πλεονεκτήµατα Γραµµατείας 2003 έναντι Γραµµατείας 2.5

2. Εισαγωγή Δεδομένων σε Σχεσιακή Βάση Δεδομένων

Φορολογική Βιβλιοθήκη. Θανάσης Φώτης Προγραμματιστής Εφαρμογών

Γλωσσική Τεχνολογία. HTML/XML Processing HTTP Services

Κεφάλαιο 1. Βασικά Στοιχεία της Java... 13

Microsoft Visual Studio Γιώργος Καµαρινός Developer Programs Marketing Manager Microsoft Hellas

ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΩΝ Αρχιτεκτονικές Διαχείρισης Δικτύων (ΙI) SNMP MIB - Αντικείμενα & Ορισμοί Πινάκων NETCONF (Network Configuration Protocol)

Bo2 Ένα ελληνικό ανοικτό java development framework

MySQL + Γλώσσα Προγραμματισμού. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Αρχεία και Βάσεις Δεδομένων

Managing Information.! Lecturer: N. Kyritsis, MBA, Ph.D. Candidate Athens University of Economics and Business!!

Διαδικτυακές Εφαρμογές Ενότητα 7: Προσπέλαση ΒΔ με το JDBC

Εργαστήριο Ανάπτυξης Εφαρμογών Βάσεων Δεδομένων. Εξάμηνο 7 ο

Αυτοματοποιημένη χαρτογραφία

Εικονική Μνήμη (Virtual Μemory)

Πανεπιστήµιο Πειραιώς Τµήµα Πληροφορικής

Architecture οf Integrated Ιnformation Systems (ARIS)

Εισαγωγή στα Συστήματα Βάσεων Δεδομένων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

ΠΠΜ 515: Προχωρηµένα Θέµατα Διεύθυνσης Κατασκευαστικών Έργων

ΓΕΩΠΛΗΡΟΦΟΡΙΚΗ. και ΣΥΣΤΗΜΑΤΑ ΓΕΩΓΡΑΦΙΚΩΝ ΠΛΗΡΟΦΟΡΙΩΝ

Αντικειμενοστρεφής Προγραμματισμός

Τι είναι η λογική αρχιτεκτονική

Η Βίβλος σχετικά με το JDBC. Περιέχει τρία βασικά tutorials στα οποία θα βασιστεί το μάθημα και περιγράφει όλες τις τάξεις και τις μεθόδους που

ΤΕΙ ΗΠΕΙΡΟΥ Τμήμα Τηλεπληροφορικής & Διοίκησης

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Βάσεις Δεδομένων (4 ο εξάμηνο) Εργαστήριο MySQL #2

2 η Εργαστηριακή Άσκηση

Διαδικτυακές Εφαρμογές Ενότητα 3: Ανάπτυξη JavaEE 6 εφαρμογής με JSF2, EJB3 και JPA

Αξιολόγηση Υπηρεσιών ιαδικτύου µέσω Περιπτώσεων Μελέτης

Βάσεις Δεδομένων και Ευφυή Πληροφοριακά Συστήματα Επιχειρηματικότητας. 2 ο Μάθημα: Βασικά Θέματα Βάσεων Δεδομένων. Δρ. Κωνσταντίνος Χ.

, Evaluation of a library against injection attacks

ΑΝΩΤΑΤΟ ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΚΡΗΤΗΣ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΠΟΛΥΜΕΣΩΝ. e-library

SEMANTIC DATA CACHING AND REPLACEMENT

Εταιρικές εφαρμογές και αντικείμενο-σχεσιακή χαρτογράφηση με τη χρήση του Spring και Hibernate framework στην Java

10 η Διάλεξη Python Βάσεις δεδομένων στη python

Ταχύτητα, Απλότητα & Αξιοπιστία

Εισαγωγή στην επιστήμη των υπολογιστών

1.1. Βάσεις δεδομένων

ΗΥ 360 Αρχεία και Βάσεις Δεδομένων

class object Database Database Item Item [sub-typing and polymorphism] MusicCD Video MusicCD Video

Αρχές Προγραμματισμού Υπολογιστών

Θέματα Προγραμματισμού Διαδικτύου ~ MySQL & PHP ~

Λογισμικό Open Source στις Υπηρεσίες των Βιβλιοθηκών του Πανεπιστημίου Αθηνών

Εισαγωγή στον Αντικειμενοστρέφή Προγραμματισμό Διάλεξη #12

Μέθοδοι. Υποσυστήµατα και πακέτα. Μοντέλα αντικειµενοστραφούς σχεδίασης. Αντικειµενοστραφής Σχεδίαση. Στα πρώτα στάδια της ανάλυσης

Αρχές Τεχνολογίας Λογισμικού Εργαστήριο

Εγκατάσταση Microsoft SQL Server

Alfresco. CyberStream. διαχείριση εγγράφων χωρίς όρια για την επιχείρηση. Νίκος Λυκουρόπουλος τεχνικός διευθυντής

Test Data Management in Practice

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07

Εργαστήριο Java. Διδάσκουσα: Εργαστηριακοί Συνεργάτες:

Company LOGO. Nazaret Kazarian. 1

Σχεδιασμός Βάσεων Δεδομένων

Εργαστήριο Βάσεων Δεδομένων. Εισαγωγικό Φροντιστήριο Βασικές Έννοιες - Ανάλυση Απαιτήσεων

«Εισαγωγή στις ΒΔ - SQL»

Λευτέρης Κουμάκης ΠΟΛΥΜΕΣΙΚΕΣ ΥΠΗΡΕΣΙΕΣ ΣΤΗΝ ΥΓΕΙΑ

Κεφάλαιο 2.3: Προγραμματισμός. Επιστήμη ΗΥ Κεφ. 2.3 Καραμαούνας Πολύκαρπος

ΠΠΜ 515: Προχωρημένα Θέματα Διεύθυνσης Κατασκευαστικών

TaxiCounter Android App. Περδίκης Ανδρέας ME10069

Κεφάλαιο 5. Δημιουργία φορμών για τη βάση δεδομένων DVDclub

Πύλη Φαρμακευτικών Υπηρεσιών Υπουργείου Υγείας Κύπρου. System Architecture Overview

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ Εαρινό Εξάμηνο

(Διαφάνειες Νίκου Βιδάκη)

PostgreSQL. Oracle. Εαρινό Εξάμηνο

Dynamic Data Type Refinement Methodology

Επιχειρησιακό Πρόγραμμα «Ανταγωνιστικότητα και Επιχειρηματικότητα» Δράση Εθνικής Εμβέλειας «Συνεργασία» «Γεώκλιμα»

Πληροφοριακά Συστήµατα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΤΜΗΥΠ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι

Εισαγωγή. web σελίδα Βάσεις εδοµένων Αντικείµενο: Θεµελιώδες πρόβληµα της επιστήµης µας εδοµένα

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

Κατανεμημένα Συστήματα. Javascript LCR example

Λιόλιου Γεωργία. ιατµηµατικό Πρόγραµµα Μεταπτυχιακών Σπουδών στα Πληροφοριακά Συστήµατα

Ψηφιακή ανάπτυξη. Course Unit #1 : Κατανοώντας τις βασικές σύγχρονες ψηφιακές αρχές Thematic Unit #1 : Τεχνολογίες Web και CMS

Εισαγωγή στην επιστήμη των υπολογιστών. Λογισμικό Υπολογιστών Κεφάλαιο 9ο Γλώσσες Προγραμματισμού

Introduction to JAX-WS. Φοιτητής : ηµόπουλος Κωνσταντίνος


Εισαγωγή. Τι είναι µια βάση δεδοµένων;

Τµήµα Πληροφορικής. Υλοποίηση LRU Cache ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ - ΕΡΓΑΣΙΑ 4. Φθινοπωρινό Εξάµηνο Διδάσκων: E. Μαρκάκης. Γενικά περί Caching

05β Η ιδεατή μηχανή της Java

EPL 660: Lab 4 Introduction to Hadoop

ΑΠΟΔΟΤΙΚΗ ΑΠΟΤΙΜΗΣΗ ΕΡΩΤΗΣΕΩΝ OLAP Η ΜΕΤΑΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΕΞΕΙΔΙΚΕΥΣΗΣ. Υποβάλλεται στην

Βάσεις Δεδομένων. Εισαγωγή για το Εργαστήριο. Δρ. Τιάκας Ελευθέριος. Τμήμα Πληροφορικής ΑΠΘ

Εργαλεία ανάπτυξης εφαρμογών internet Ι

Αντικείµενο: Θεµελιώδες πρόβληµα της επιστήµης µας εδοµένα

Εργαστήριο Ανάπτυξης Εφαρμογών Βάσεων Δεδομένων. Εξάμηνο 7 ο

Transcript:

Κατανεµηµένα Συστήµατα ΙΙ 2008-0909 Hibernate Lecture Κλεοπάτρα Χατζηπρίµου (chatzipr@ceid.upatras.gr)

Τι είναι το Hibernate?(1/3) Ένα τυπικό Java Application αποτελείται από δύο ειδών objects: transient objects:η Η διάρκεια ζωής τους φράσσεται από την διάρκεια ζωής της διεργασίας δηµιουργού τους. persistent objects: outlive την διεργασία δηµιουργό.

Τι είναι το Hibernate?(2/3) Το Hibernate αποτελεί object-relational mapping tool (ORM) που επιτρέπει την ύπαρξη persisting java objects &query services σε relational databases. ΓΕΝΙΚΑ Η συνεκτικότητα των δεδοµένων διαµορφώνεται µε χρήση XML configuration files. Τα database tables αντιστοιχίζονται σε java classes. εναποτελεί SQL/Java code generation tool!

Τι είναι το Hibernate?(3/3) Αποτελεί ισχυρό εργαλείο, µε υψηλή απόδοση & αποτελεσµατικότητα. Επιτρέπει τη δηµιουργία persistent classes µε όλα τα object- oriented χαρακτηριστικά, συµπεριλαµβανοµένων των association, inheritance & polymorphism

Γιατί Hibernate? ιαχειρίζεται όλα τα create-read read-update-delete delete Operations, χρησιµοποιώντας απλό API, όχι SQL ηµιουργεί DDL scripts για τη δηµιουργία DB schema Ευελιξία στην συγγραφή SQL και κλήση αποθηκευµένων διαδικασιών για optimization της απόδοσης Υποστηρίζει πάνω από 20 RDBMS (Relational Database Management System). Η βάση µπορεί να αλλάξει µε απλή αλλαγή στο χρησιµοποιούµενο configuration file. Μειώνει σηµαντικά το χρόνο συγγραφής κώδικα

JDBC (1/2) Η συνηθισµένη λύση για database connectivity σε Java είναι το JDBC API (Java Database Connectivity): Επιτρέπει στους developers σύνδεση, queries, και update στη βάση δεδοµένων χρησιµοποιώντας SQL. Επιτρέπει interaction µε διαφορετικά RDBMS, όπως και πρόσβαση στα tables από Java Applications χωρίς να είναι απαραίτητη η γνώση RDBMS details, µε απλή χρήση των database specific JDBC drivers.

JDBC (2/2) Το interaction του JDBC µε το RDBMS είναι απλό. Για να αποκτήσει πρόσβαση ένα application στη βάση χρειάζονται τα ακόλουθαβήµατα: Open connection to database Use JDBC driver to send SQL queries to database Process the results that are returned Close the connection.

JDBC Architecture (1/2) Το JDBC χρησιµοποιεί 2βασικές αρχιτεκτονικές για επικοινωνία µε τη βάση: A.Ο driver συνδέεται στη βάση και εκτελεί τα SQL statements. Τα αποτελέσµατα στέλνονται από τον driver στον driver manager & τελικά στο application. B. Ο JDBC driver επικοινωνεί µε τον ODBC driver. Ο ODBC driver εκτελεί τα SQL queries, τα αποτελέσµατα στέλνονται στον JDBC driver, στον driver manager και τελικά στο application

JDBC Architecture (2/2)

Interaction with RDBMS (1/2) Steps: Load driver. Open connection with database. Create JDBC Statement Object ( Contains SQL query). Execute statement witch returns resultsets. Process resultset. Close connection.

Παράδειγµα

Hibernate Architecture (1/2) Το Hibernate (σε αντίθεση µε JDBC) : Ανοίγει το ίδιο σύνδεση µε τη βάση. Μετατρέπει HQL (Hibernate Query Language) σε database specific statements. Παραλαµβάνει τα result sets. Εκτελεί mappingτων database specific data σε Java objects τα οποία χρησιµοποιούνται απευθείας από το application.

Hibernate Architecture (2/2) Το Hibernate διαβάζει διαβάζει το database specification από το αρχείο Hibernate properties. Βάσει αυτού, γίνεται αυτόµατο mapping για καθορισµένα Java Objects µε τη βοήθεια των δεδοµένων που δηλώνονται στο.hbm XML file.

Hibernate vs. JDBC (1/4) -Γιατί το Hibernate είναι καλύτερο από το JDBC? ουλεύοντας µε Object-Oriented Oriented software & Relational Database είναι πολύπλοκο taskµε το JDBC,γιατί εµφανίζεται mismatch ανάµεσα στον τρόπο αναπαράστασης των δεδοµένων σε objects και στον τρόπο που τα αντιλαµβάνεται η βάση. Έτσι ο προγραµµατιστής πρέπει να γράψει παραπάνω κώδικα για να αντιστοιχίσει τα δεδοµένα από relational model σε object model. Το πρόβληµα δεν εµφανίζεται στο Hibernate καθώς το mapping γίνεται αυτόµατα µε XML files. Η διαδικασία ονοµάζεται transparent persistence.

Hibernate vs. JDBC (2/4) Το JDBC υποστηρίζει µόνο native SQL. Είναι δουλειά του προγραµµατιστή να επιλέξει το πιο effective query / database access για να εκτελέσει συγκεκριµένο task. Το Hibernate παρέχει την πολύ αποδοτική Hibernate query language (ανεξάρτητη από τον τύπο DB) που έχει την ίδια σύνταξη µε SQL και υποστηρίζει polymorphic queries. Ακόµα παρέχει native SQL queries και επιλέγει τον πιο αποδοτικό τρόπο για τη διαχείριση της βάσης,σύµφωνα σύµφωνα µε το εκάστοτε application.

Hibernate vs. JDBC (3/4) Όταν χρησιµοποιείται JDBC, αλλαγή στη βάση δεδοµένων µεταφράζεται σε αλλαγή στη δοµή του κώδικα. Αντιθέτως, αλλαγές στην βάση, µε χρήση Hibernate µεταφράζονται δυναµικά στον Java κώδικα µε απλή τροποποίηση των XML properties files. Με το JDBC ο προγραµµατιστής αναλαµβάνει να µετατρέψει χειροκίνητα resultsets σε Java Objects. Το Hibernate, γλιτώνει χρόνο, κόστος, και συντοµεύει τον απαιτούµενο κώδικα, διατηρώντας object-table table mapping & επιστρέφοντας τα αποτελέσµατα στο application σε µορφή Java Objects.

Hibernate vs. JDBC (4/4) Το Hibernate είναι open-source. Εµφανίζει καλή κλιµάκωσηµε µε την αύξηση του όγκου των δεδοµένων και υψηλή αξιοπιστία. Υποστηρίζει database versioningδιευκολύνοντας την παράλληλη συγγραφή κώδικα από διαφορετικά άτοµα. Υποστηρίζει cashingµειώνοντας τη χρονοβόρα διαδικασία πρόσβασης στο δίσκο.

Basic Hibernate (1/8) Simple Object Model AuctionItem BId description successfullbid amount datetime type

Basic Hibernate (2/8) Plain Old Java Object Default constructor Identifier property Get/Set Collection property is an interface type

Basic Hibernate (3/8) XML Mapping File Readable Metadata Column/table mappings Key generation Fetching strategies

Mapping relationships Το hibernate προσφέρει ποικίλους τρόπους για την αντιστοίχιση των σχέσεων των mapping objects, ανάλογα µε την πολυπλοκότητά τους:

Mapping Collections Τα mappings µπορούν να κάνουν include <set>, <list>, <map>, <bag>, <array>, <primitive-array> Και να χρησιµοποιήσουν τα interfaces :

Basic Hibernate (4/8) Creating Objects Το mapping και η σύνδεση µε τη βάση χρησιµοποιούνται για τη δηµιουργία SessionFactory αντικειµένου.το SessionFactory αποτελεί thread-safe cache από compiled mappings για µια βάση. ηµιουργείται µόνο µια φορά, στην αρχή του application (expensive). Το session δηλώνει την επικοινωνία βάσης application, και κρατά το πρώτο επίπεδο cache των αντικειµένων.

Basic Hibernate (5/8) Creating Objects (Transaction : atomic unit of work)

Basic Hibernate (6/8) Updating Objects

Basic Hibernate (7/8) Deleting Objects

Basic Hibernate (8/8) Selecting Objects

Hibernate Configuration Το configuration µπορεί να γίνει µε χρήση XML. Υπάρχουν πολλοί τρόποι για να συµπεριληφθούν mapping files στο configuration, όπως XML-based ή API-based.

Hibernate Session (1/2) Εφόσον έχει δηµιουργηθεί το configuration file, το sessionfactory µπορεί πια να γίνει generated:

Hibernate Session (2/2) Τυπικός κώδικας χρήσης του session object:

HQL(1/3) Η σύνταξη της HQL είναι παρόµοια µε της SQL. Αντίθετα µε την SQL, είναι database-agnostic. agnostic. Καταλαβαίνει κληρονοµικότητα, πολυµορφισµό, associations, aggregations, compositions Παρέχει Java-based API για τη δηµιουργία queries. Τα παραγόµενα queries είναι αποτελεσµατικά, διότι χρησιµοποιούν conditional logic, αποφεύγοντας messy string manipulation.

HQL (2/3)

HQL(3/3) HQL Examples

Απαιτούµενα Jars

Spring FrameWork Το Spring προσφέρει την HibernateSupportDao class η οποία παρέχει µεθόδους για exception handling.

Other tool support XDoclet: code generator, ο οποίος χρησιµοποιώντας javadoc tags παράγει hibernate mappings & language definitions από δεδοµένο πηγαίο κώδικα. MiddleGen: : code generator πουδηµιουργεί mappings & objects από δεδοµένη βάση andromda: : code generator framework παρακολουθεί το model driven architecture (MDA) paradigm.

Μειονεκτήµατα Hibernate (1/2) Χαµηλό learning curve Η χρήση Hibernate µπορεί να προκαλέσει overhead σε εφαρµογές που : -είναι απλές & χρησιµοποιούν βάση που δεν πρόκειται να υποστεί αλλαγές - το µόνο που απαιτούν είναι η τοποθέτηση δεδοµένων στα tables, όχι extra SQL. -δεν υπάρχουν objects mapped σε δύο διαφορετικά tables. To Hibernate εισάγει extra layers και πολυπλοκότητα, έτσι για τις απλές εφαρµογές προτείνεται η χρήση JDBC.

Μειονεκτήµατα Hibernate (1/2) Η υποστήριξη του Hibernate στο Internet δεν είναι επαρκής Όποιος χρειάζεται να διατηρήσει applications που χρησιµοποιούν hibernate, θα πρέπει να µάθει hibernate Για πολύπλοκα δεδοµένα, το mapping από objects σε tables και αντίστροφα µειώνει την απόδοση απαιτώντας υψηλό χρόνο εν υποστηρίζει ορισµένα queries που προσφέρει το JDBC. (Για παράδειγµα δεν υποστηρίζει την τοποθέτηση multiple objects στο ίδιο table µε ένα query.)

Ευχαριστώ!