Fejlett Programozási Technikák 2.

Fejlett Programozási Technikák 2.

Programrendszerek Fejlesztse 14/4 1 A mai elads tartalma Perzisztencia Object serialization API ORM Hibernate

Bevezets Architektra Hello world 2 Java File Mapping file Mveletek Konfigurci

Interfaces Mappels (Kollekcik,Asszocicik,Leszrmazsok) Lekrdezsek Optimalizls(fetching and caching) Tesztels Perzisztencia Perzisztens objektum: a ltrehoz program llapottl fggetlenl is ltezik Az objektumhierarchia egy rsznek kimentse/betltse transzparens mdon Fjlba (Object Serialization API)

Objektum orientlt adatbzisba Nem kellene tkonvertlni(objektumrelcik) Mg nem elg hatkony az adatkezels Nem npszerek, kiforratlanok, nincs komplett implementci Relcis adatbzisba 3 Kevsb tpusos (bjtsorozat) Objektum referencik?Keressek?Biztonsg? Nagyon macers a lekpezs/tkonvertls

Perzisztencia megvalstsa Kzs bzisosztly Kzs tulajdonsgok egybegyjtse Magunknak kell megrni a mveleteket Adatmanipulcis nyelv Kiterjeszti a nyelv szintaxist Knnyen megvalsthat

Srl a hordozhatsg Hibrid megolds (gy a leghatkonyabb) A Java felptse tmogatja 4 konkurens hozzfrs tranzakcik Wrapper osztlyok, interfszek, adatfolyamok Object serialization API

Sokszor ez is megfelel lehet, felesleges a Hibernate Java 1.1 java.io csomag rsze volt Bzisosztly alap megolds (Serializable interface) A referencikat, kapcsolatokat is megrzi Hierarchik is menthetek vele (fa,grf, krkrs hivatkozsok) Elments: Visszaolvass: 5 Egy sszetettebb plda 6 Obektum Relcis Lekpezs (ORM)

Objektumok automatikus s transzparens perzisztlsa Java applikcibl relcis adatbzisba Metadata segtsgvel rja le a kapcsolatot Konverzi 2 reprezentci kztt A Metadata hasznlata kevesebb id mint kzzel megrni Egy ORM megolds 4 rsze: 7 API az objektumok CRUD (create/read/update/delete)

mveleteire Lekrdez nyelv/API az osztlyokra s azok adattagjaira vonatkozan A lekpezsek definilsra egy keretrendszer Piszkos adatok ellenrzse,laza kapcsolatok feldertse, egyb optimalizl funkcik megvalstsa ORM megoldsok Relcis minden relcis modell szerint kszl el Knnysly objektum lekpezs

Portabilits? Karbantarthatsg? Trolt eljrsok? Manulis lekpezs Ismert tervezsi mintk rejtik el az SQL kdot Kzpsly objektum lekpezs 8 Java alap tervezs Az SQL fordts idben generldik Az objektumok gyorstrazva vannak ORM megoldsok Teljes objektum lekpezs

Fejlett objektum modellezs 9 Kompozci rklds Laza, Buzg betlts Gyorsttrazsi stratgik ORM krdsek

Hogyan nzzen ki a lementet objektum? Hogyan definiljuk a lekpezst ler metaadatot? Hogyan kpezzk le a szrmazsi hierarchikat? Hogyan kezeljk az objektumok egyezsgt? Hogyan mkdik egytt az ORM az zelti logikval futsi idben? Mi az objektum letciklusa? Milyen aggregl s rendez megoldsokat biztost? Hogyan kezeljk az asszocicikat? Tranzakcik, prhuzamossg? Gyorsttrazs? 10 ORM elnyk

Fejlesztsi ciklus Karbantarthatsg Sebessg Gyrt fggetlensg 11 Hibernate

ORMF (Object-Relational Mapping Frameworks) javahoz Hd az objektumorientlt s a relcis szemllet kztt Rteg a DB s az alkalmazs kztt A JEMS (JBoss Enterprise Middleware System) rsze Nylt forrskd A lekpezssel kapcsolatos munka 95% t megsprolja Tmogatja: 12 OO perzisztens osztlyok kezelse, asszocicit, rkldst, polimorfizmust, kompozcit, kollekcit Hibernate Adat perzisztencia

Relcis adatbzis Objektum vs. Rekord Trolt eljrsok Object Relational Mapping ORM

Csak egytt kezelhet EJB 2.1 Objektum orientlt adatbzisok 13 Adatbzis kezels zleti logika Serializci Kzzel elksztett CRUD (create/read/update/delete)? SQL dialektusok (DDL/DML)? Objektum orientlt adatbzisok? ODMG - Nem npszerek, kiforratlanok, nincs komplett implementci

Paradigma tkzs/Granularits 14 Paradigma tkzs/Granularits Cm mint Kln tbla Kln oszlopok Kln tpus 15 User Defined Type SQL kiterjeszts Oszlopknt

rklds/Polimorfizmus Hogyan troljuk le? Polimorfikus lekrdezs? 16 Azonosts Java Referencia szerint (==) rtk szerint (Equals())

SQL Elsdleges kulcs 17 Mi legyen az? Nv? Fggetlen kulcs? Viszonyok Java M:M SQL

18 1:M 1:1 Navigci Navigci? Java egzakt Obejktum grf bejrs x.d.g.getZ(); SQL tetszleges:

N+1 select problmja Minimalizlni kell a krsek szmt join Elre kell tudnunk mit akarunk lekrni 19 User User join Billing details Az eltrs ra 30% a programoz idejbl Bonyolult adatbzis absztrakcis rteg

Az objektum rteg talaktsa, hogy megfeleljen a relcis rtegnek JDBC Projekt buks lehet Strukturlis knyszereket legalbb hromszor meg kell adni (insert/update/delete) DAO 20 Architektra

21 Architektra 22 Architektra 23 Fogalmak: SessionFactory (net.sf.hibernate.SessionFactory): Egy trolhely a lefordtott mappingek rszre. Innen rhet el a Session s a ConectionProvider. Tartalmazhat egy msod-szint trolt, ami a tranzakcik kztt hasznlhatk fel processz vagy klaszterszinten. Session (net.sf.hibernate.Session): Ez egy rvid let objektum, ami egy kapcsolatot reprezentl a trol s az applikci kztt, Magba

foglal egy JDBC kapcsolatot. Innen krhetek el a tranzakci objetumok. Egy elsszint trol tartozik hozz a perzisztens objektumok szmra. Amikor lpkednk az objektum grfban, vagy azonost alapjn keresnk, akkor van r szksg. Perzisztens Objektumok: Szintn rvid let objektumok, amelyek pontosan 1 session-el vannak kapcsolatban. Amikor a session bezrul, akkor szabadd vlnak s ms applikcis szintek is hasznlhatjk. Tranziens Objektumok: Akkor beszlnk tranziens objektumokrl amikor mg sohasem voltak elmentve (teht mg nem voltak perzisztensek), gy pldul ezeknek ltalban mg nincs azonostjuk. 24 Fogalmak:

Tranzakci (net.sf.hibernate.Transaction): Rvid let objektum ami egy atomi egysget valst meg (teht vagy teljesl az sszes mvelet vagy egyik sem, ha valamilyen hiba folytn nem teljesl akkor vissza kell tudni vonni a mr bekvetkezett mdostsokat). Egy session-ben tbb tranzakci is megvalsulhat. ConnectionProvider (net.sf.hibernate.connection.ConnectionProvider): Innen krhetjk el a JDBC kapcsolatokat (itt a kapcsolatok troldnak is). Levlasztja az alkalmazst az alsbb rtegektl (DataSource, DriverManager). A fejleszt ltal implementlhat. TransactionFactory (net.sf.hibernate.TransactionFactory): Itt krhetjk el a tranzakci objektumokat. A fejleszt ltal implementlhat. 25

Hibernate- felpts 3 rsz: Java osztly Relcis adatbzisbeli tblk Ler (descriptor) 26 Definilja a konverzis szablyokat A nyelvezete inkbb java-centrikus 2 fajtja van:

Xml file (*.xml.hbm kiterjeszts) Annotci Sokan kzzel szerkesztik pedig XDoclet, Middlegen, AndroMDA. Hello World Java osztly Id Elsdleges kulcs az adatbzisban (hibernate automatikusan generlja) Getter-Setter minden adattaghoz (JavaBean) A java kdban nem kell Hibernate specifikus dolgokat hasznlni! (nem erszakos) Ugyanugy hasznljuk az osztlyt ahogyan eddig: Message message = new Message("Hello World"); System.out.println( message.getText() ); Nem kell kln kontner ahogyan EJB-ben 27 Hello World - Ler 28

Hello World f applikci 29 Hello World f applikci 30 Hello World hibernate.cfg.xml 31 Hello World hibernate.cfg.xml 32 A hibernate konfigurlsa

Mivel sok a vltoz azrt szles a config paramterlista A hibernate.propertiesbl sok tletet merthetnk. 2 lehetsgnk van konfigurlsra: 33 Progarambl lltjuk be a dolgokat A hibernate.cfg.xml A keressi tvonal gykerbe kell tenni Egyben ki vannak gyjtve a belltsok A hbm.xml ek helyt is meg lehet adni benne A SessionFactory elkrse : SessionFactory sf = new Configuration().configure().buildSessionFactory(); Tbb konfig file-t is ltrehozhatunk, majd ksbb dinamikusan vlogathatunk kztk: SessionFactory sf = new Configuration().configure("/my/package/catdb.cfg.xml") .buil dSessionFactory(); Pldk programbl trtn

konfigurcira: Egy mappinf file regisztrlsa: Alternatv md (az osztly regisztrlsa) 34 Configuration cfg = new Configuration().addResource("Message.hbm.xml"); Configuration cfg = new Configuration() .addClass(helloWorld.Message.class); A Properties objektum hasznlata: Properties props = new Properties();

... Configuration cfg = new Configuration() .addClass(org.hibernate.auction.Item.class) .addClass(org.hibernate.auction.Bid.class) .setProperties(props); Nhny egyb config property: A legfontosabb JDBC kapcsolatrt felels property-k: Property name Purpose hibernate.connection.driver_ classjdbc driver class hibernate.connection.url jdbcURL hibernate.connection.username

database user hibernate.connection.password database user password hibernate.connection.pool_size maximum number of pooled connections A Hibernate a kapcsolatokat olykor a Jndi bl kri el : Property name Purpose hibernate.connection.datasource datasource JNDI name hibernate.jndi.url URL of the JNDI provider (optional)

hibernate.jndi.class class of the JNDI InitialContextFactory (optional) hibernate.connection.username database user (optional) hibernate.connection.password database user password (optional) 35 Interfszek I. Session

SessionFactory Nem knnysly Szlak kztt megosztva hasznlhat Egy adatbzis/egy SessionFactory A msodik szint gyorstr itt tallhat Configuration interface Knnysly

A Hibernate viszonyok nem szlbiztosak ! Konfigfjlok helye, . Transaction interface 36 Nem ktelez hasznlni az adatbzis tranzakciit hasznlja Interfszek II. Query, Criteria Callback interfaces

HQL/SQL lekrdezsek futtatsa Knnysly Lifecycle, Validate CRUD mveletek Extension 37 Primary key generator Sql dialect Alap konfigurci

Menedzselt krnyezet Gyjtemnyez (adatbzis kapcsolat, ) Jboss/GlassFish, Nem menedzselt krnyezet 38 Alap prhuzamossg kezels (szl gyjtemnyekkel) Tomcat/Jetty Types

Egy java tpus egy vagy tbb oszlophoz rendel Currency Calendar Byte[] Sajt tpus 39 UserType CompositeUserType

Alkalmazsfejleszts Gazdag domain model Csak a domainra vonatkoz kdot tartalmazza Aggodalom/Gond csorgs EJB interceptor Transzparens perzisztencia A kd fggetlen a perzisztencia tpustl Kollekcik az interfszbl szrmazzanak ne az

implementcibl Argumentum nlkli konstruktor POJO zleti metdusok Tulajdonsgok Automatizlt perzisztencia 40 Kvetelmnyek Transzparens perzisztencia

Nincs sosztly, interfsz kvetelmny Brhol felhasznlhat POJO Kollekci tpusok zleti logika Tulajdonsgok A kollekci interfsz szerint legyenek ltrehozva (HashSet -> Set) Ktelez az res konstruktor Java Bean elnevezsi konvencik

41 Alap tulajdonsg s osztly lekpezs Sok default megolds Leszrmaztatott rtkek (csak select):

Tulajdonsg kezel stratgik Hozzfr fggvnyen keresztl Kzvetlenl

Inster/Update kezels 43

column="NAME" type="string" insert="false" update="false"/> Elnevezsi konvencik

44 public class CENamingStrategy implements NamingStrategy { public String classToTableName(String className) { return tableName( StringHelper.unqualify(className).toUpperCase() ); } public String propertyToColumnName(String propertyName) { return propertyName.toUpperCase(); } public String tableName(String tableName) { return "CE_" + tableName; } public String columnName(String columnName) { return columnName; } public String propertyToTableName(String className,

String propertyName) { return classToTableName(className) + '_' + propertyToColumnName(propertyName); } } Hasznlata Configuration cfg = new Configuration(); cfg.setNamingStrategy( new CENamingStrategy() ); SessionFactory sessionFactory = cfg.configure().buildSessionFactory(); 45 Objektum identits

Objektum azonossg Objektum egyenlsg Adatbzis egyenlsg ...

Sok kulcs generl megolds Sajtot is lehet rni 46 Objektum modellek Tbb objektum mint tbla Entits rtk Komponensek 47

Szrmazs lekpezse Minden osztlynak egy tbla Egy tbla osztly hierarchiaknt Alosztlyonknt tbla 48 Asszocicik Asszocici Egyirny

Ktirny Szl gyermek viszony 49 Lncolt mveletek Perzisztencia 50 Perzisztencia menedzser CRUD Lekrdezs Tranzakci

Gyorstr 51 Objektumok betltse Azonost alapjn HQL Kritrium alapjn Minta alapjn 52

Betlts Azonnali Laza/Lusta Moh Ktegelt 53 Optimalizls - Gyorstrak 54 Tranzakci

Adatbzis szint Alkalmazs szint 55 A kvetkez elads tartalma Alkalmazs keretrendszerek J2EE 56 JNDI RMI EJB

Recently Viewed Presentations

  • The Lighthouse Keeper's Lunch

    The Lighthouse Keeper's Lunch

    Mr Grinling was a most industrious lighthouse keeper. Come rain or shine he tended his light. Mrs Grinling worked in the kitchen of the little white cottage on the cliffs concocting a delicious lunch for him. But the lunch did...
  • ASE 2020 Focus on AO2 - store.aqa.org.uk

    ASE 2020 Focus on AO2 - store.aqa.org.uk

    ASE Annual Conference:Focus on AO2. Spring 2020. Elise Reece. Welcome. Copyright © AQA and its licensors. All rights reserved. This meeting will be recorded ...
  • Web Services - Computer Science

    Web Services - Computer Science

    How Do I Post an RU Alert? What is a Web Service? What is a Web Service? A Web Service transaction Service Oriented Architecture What tools do we use? Now we know what Web Services are, how do we use...
  • RTRA - University of Ottawa

    RTRA - University of Ottawa

    RTRA - University of Ottawa ... data service
  • Monday  April 27, 2015 Entry Task Grab a

    Monday April 27, 2015 Entry Task Grab a

    Animal Farm explains: How humanity allows evil leaders to gain power What must be done to end it and prevent it Connecting Animal Farm themes to your life: We are going to look at 6 claims about humanity. These truths...
  • 8 MIKE MAZZALONGO Divorce and the Gospel of

    8 MIKE MAZZALONGO Divorce and the Gospel of

    For day and night Your hand was heavy upon me; My vitality was drained away as with the fever heat of summer. Selah. I acknowledged my sin to You,
  • Accounts Payable Part 2 (1099)

    Accounts Payable Part 2 (1099)

    This data is included in the 'Correction' file due to the IRS by August 1st. After the January and August files have been sent to the IRS - Manual 1099's are prepared and the data is sent electronically to the...
  • Fish  Vertebrates (Subphylum Vertebrata)  Backbone enclosing a nerve

    Fish Vertebrates (Subphylum Vertebrata) Backbone enclosing a nerve

    Fish Vertebrates (Subphylum Vertebrata) Backbone enclosing a nerve cord, or spinal cord Phylum Chordata Notochord Pharyngeal pouches Postanal tail Dorsal Nerve Chord Phylum Chordata Subphylum Vertebrata Class Agnatha, Jawless fishes, (Hagfishes and Lampreys) Class Chondrichthyes, Cartilaginous fishes, (Sharks, Sharks and...