Side 1 Hibernate utvikling i praksis JavaZone 2004 Eivind Waaler, Bekk – 15.09.2004 Versjon 1.0.

Slides:



Advertisements
Liknende presentasjoner
Webbasert administrasjonssystem for fondsforvaltere Martin Lie 20. april 2006.
Advertisements

Repetisjon innkapsling static tabell av primitiv datatype LC191D Videregående programmering Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring.
Hans Olav Norheim
Fremtidens IKT-løsninger i plan og byggeprosessen en demonstrasjon.
Avhengigheter og installering
© 2006 IFS AB. All rights reserved.
Programmering i ActionScript - hva er det, og hvordan undervise?
Høgskolen i Oslo Webprogrammering SQL og databaser del 3.
Java database persistence framework.  SELECT by FROM postnr AS p WHERE ( SELECT DISTINCT postnr FROM addr AS a WHERE user.adrId = a.Id ) = p.postnr;
Java Teknologi Teknikker Økosystem Johannes Brodwall
Uke 10 - Sortering, og hvordan lage en klasse for et klassebibliotek 21 okt. 2003, Arne Maus Inst. for informatikk, UiO.
LC238D Datamodellering og databaser Introduksjon til fagfeltet Else Lervik, august 2012Forelesning 1, uke 34 Datafilerside.
Testene koster mer enn de smaker? Ole Morten Amundsen
JavaOne 2006 Markus Bjartveit Krüger
SOA & Business Process Track Driv konsistens og best practices inn i ditt tjenestedesign : Web Service Software Factory Det er klare fordeler.
Tjenestebasert design med dynamiske proxyer og Spring Bjørn Vidar Bøe, JavaZone 2005.
Programmering i Java versjon januar 2005 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon januar 2005 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Objektorientert programmering i PHP del 2
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Inge Os Sales Consulting Manager Oracle 10 g Server.
IS-102 Klassedefinisjoner
Java Server Faces (JSF) en introduksjon Frode Eika Sandnes.
Databasehåndtering med MySQL
© Lars-Erik Kindblad.  Et platformuavhengig verktøy for å automatisere build prosesser.  Støttes og drives av Apache Software Foundation.  Kommer ferdig.
Tema: Introduksjon Hvorfor Velocity? Installasjon Velocity VS. JSF / JSP Eksempler Oppsumering.
C# for javaprogrammerere
Apache POI.
Web-applikasjoner Prosjekt3 Logging Gruppe 9 Malik Muhammad Naeem Kevan Qureshi.
XMLBeans av Vegard Skipnes (s141721). Agenda Hva er XMLBeans? Historie Eksempel  XML Schema  XML fil  Bruk i java Innstallering Min mening Sammendrag.
PayEx Logistics Hovedprosjekt - Gruppe 16 Thomas Siavash Glenn Viktorija.
Entity Framework Andreas Knudsen, Bekk Consulting AS 31/
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Tilstede Hakon gruppen Systek Ragnvald Blindheim, CTO for ICA Ahold
Farvel til applikasjonsserveren Fra kompleksitet til kontroll.
Copyright © 2003 Systek Java versus.NET The Heavyweight Championship Showdown En subjektiv sammenligning Johannes Brodwall.
Copyright © 2003 Systek J2EE Teknologier Java Workshop CBA Johannes Brodwall, Systek as.
Copyright © 2003 Systek Java versus.NET The Heavyweight Championship Showdown En subjektiv sammenligning Johannes Brodwall.
1 Organisering av kode (Kapittel 5). 2 Mål ● Forstå inkludering er og hvilken gevinst det gir ● Lære å utvikle egne funksjoner ● Forstå variablenes virkemåte.
Høgskolen i Oslo Webprogrammering Ajax og PHP. I dag l Hvordan få en bedre brukeropplevelse via Ajax- script l Gjennomgang av kode l Oppgaveløsning på.
Implementering av caching ved hjelp av Spring Christian Vestøl
Fitnesse i PDMT 05. mai 2008 Finn-Robert Kristensen Systemarkitekt.
Figur 1 Behov. Figur 2 Behov Figur 3 Prioritering/ressursinnsats.
Andre funksjoner. Her kommer en beskrivelse av søkefunksjoner, knapper og annen funksjonalitet. 2.
OOT Seminar H-97 CORBA Praktisk del. Valg av ORB implementasjon n Har valgt å bruke Visigenic sin ORB implementsjon n ORB’en er 100% Java kodet n Bygger.
Linq To SQL Fagdag 20. November DataContext  DataContexten er mappingen mot databasen –Generer objekter for alle entiteter (tabeller), med properties.
1 Kap 06 Ordnede / Sorterte lister Oppgave nr 06_02 Polynomer Klassehierarki Javadokumentasjon.
Å lese tall fra en fil, klassen Scanner 1.Et Scanner-objekt kan knyttes til et strømobjekt eller til en streng. 2.Kan skanne teksten etter data av ulike.
CORBA Noen hull som må fylles: ORB Object Adapters CORBA services IDL Factory Objects.
Eziz Annagurban Veiledere: Sven-Olai Høyland Carsten Helgesen
Praktiske erfaringer med Objektorientert Progress og.NET Jan Kolstad PUG Norway, Lillehammer 2005.
Innsamling av ekstremt sensitive data til forskning
Tabeller Dette er en tabell, eller array. Den kan defineres sånn som dette: public int[] heltallsTabell = new int[11]; //Her er 11 tabellens lengde for.
Inflation og produktion 11. Makroøkonomi Teori og beskrivelse 4.udg. © Limedesign
1 Java Database Connectivity (JDBC) Norvald H. Ryeng
Main metoden n public static void main(String[] args){ } n Inni denne metoden skjer alt! n Det kan bare finnes en main metode per program. n Den kan ligge.
1 GeoPortal – Rammeverk Introduksjon. 2 Teknisk rammeverk - Interoperabilitet Interoperabilitet evne til å kommunisere, kjøre programmer, eller overføre.
Telenors satsing på fri programvare Paul Skrede - GoOpen 2009.
Struktur FE2: Interface Controller Session Bean Session Beans Query BeanConverter Bean Data transfer objectsEJB entities Database.
J2ME- og Web-basert Instant Messaging System. Oppgavebeskrivelse Selvstendig system J2ME- og Web-basert Internasjonalisering.
Object  Klassen i java  Alle klasser arver fra denne om ikke noe annet blir spesifisert  ArrayList.add(Object instans)  Alle elementer formes til Object.
Befolkning og arbejdsmarked 7. Mikroøkonomi Teori og beskrivelse © Limedesign
VirusLab Utvikling av en profesjonell applikasjon.
Byggeklosser i java  Klassedefinisjon  Variabel deklarasjon  Metodedeklarasjoner  En ordentlig klasse  Spesielle/kryptiske skrivemåter  løkker og.
Copyright © 2003 Systek Java Safari Java Workshop CBA Johannes Brodwall, Systek as.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Upload av bildefiler Utdrag fra ImageIn Ved Kirsten Klæbo Tirsdag 25/11-03.
XML og JDOM Helge Furuseth XML  XML = Extensible Markup Language Basert på SGML – Standard Generalized Markup Language  HTML =
Having a crack at a new stack
Utskrift av presentasjonen:

Side 1 Hibernate utvikling i praksis JavaZone 2004 Eivind Waaler, Bekk – Versjon 1.0

Hibernate utvikling i praksisJavaZone 2004 Side 2 Agenda  Introduksjon til Hibernate  Utviklingsteknikker  Deployment  Noen erfaringer  Fremtidsutsikter

Hibernate utvikling i praksisJavaZone 2004 Side 3 Introduksjon  ORM rammeverk  Javaobjekter (POJO)  Databasetabeller  VO/DTO ut – Domenemodellen returnerer!  Svært populært – ”standard” i OS miljøer  Versjon 1.0 – september 2002  Versjon 2.0 – juli 2003  Versjon 2.1 – desember 2003  Versjon – august 2004  Versjon 3.0 – 2004/2005  XML mappingfiler  Klasse mot tabell  Felter mot kolonner  Relasjoner mot fremmednøkler  ++ all mapping informasjon DB XML POJO Hibernate

Hibernate utvikling i praksisJavaZone 2004 Side 4 Introduksjon  Sesjoner  CRUD operasjoner  Spørringer  Objekter – transient/persistent  Ikke trådsikker!  SessionFactory  Spørringer  HQL – Hibernate Query Language  Criteria API  Native SQL  Transaksjoner – TransactionFactory

Hibernate utvikling i praksisJavaZone 2004 Side 5 Utviklingsteknikker/Verktøy  Skrive alt selv  middle-out – XML  top-down – Javakode  bottom-up – Database  Verktøy  hbm2java  SchemaExport  SchemaUpdate  XDoclet  Middlegen POJO XML DDL XML POJO

Hibernate utvikling i praksisJavaZone 2004 Side 6 Utviklingsteknikker – middle-out  ”Vanligste” teknikken  XML mapping  Verktøy  hbm2java – Java filer (POJO)  SchemaExport/SchemaUpdate – SQL DDL (fil eller db oppdatering)  Fordeler  Kun Hibernate verktøy  DTD  Ulemper  Skrive XML  Utvide klasser POJO XML DDL

Hibernate utvikling i praksisJavaZone 2004 Side 7 Utviklingsteknikker – middle-out <property name="name" type="java.lang.String" column="NAME"... <set name="documents" lazy="false" inverse="true" cascade="all-delete-orphan" sort="unsorted" >...

Hibernate utvikling i praksisJavaZone 2004 Side 8 Utviklingsteknikker – top-down  Arbeide med kode  Java klassefiler  Verktøy  XDoclet – XML mappingfiler  SchemaExport/SchemaUpdate – SQL DDL  Fordeler  Skrive Javakode!  Utvide klasser  Ulemper  XDoclet – ekstra verktøy  Min favoritt! POJO XML DDL

Hibernate utvikling i praksisJavaZone 2004 Side 9 Utviklingsteknikker – top-down /** table="REPORTS" * name="ReportByPerson" * query="select report from Report report where report.person.id = ?" */ public class Report extends HibernateDomainObject { /** * Get the documents for this report. Returns the documents. lazy="false" inverse="true" cascade="all-delete-orphan" column="REPORT_ID_FK" class="domain.Document" */ public Set getDocuments() { return _documents; }...

Hibernate utvikling i praksisJavaZone 2004 Side 10 Utviklingsteknikker – bottom-up  Databasemodell m/relasjoner  Verktøy  Middlegen – XML mapping filer  hbm2java – Java filer  Fordeler  Eksisterende database  Lite feil!  Mye bra DB-verktøy  Ulemper  Middlegen – ekstra verktøy  Erfaringer prosjekt  Kompleks dbmodell m. >100 tabeller  ~ halv dag  komplett Hibernate lag POJO XML DB

Hibernate utvikling i praksisJavaZone 2004 Side 11 Utviklingsteknikker – bottom-up

Hibernate utvikling i praksisJavaZone 2004 Side 12 Deployment  Standard  JBoss SAR/JMX MBean  Spring (NASA Art)

Hibernate utvikling i praksisJavaZone 2004 Side 13 Deployment – Standard config  Standard  hibernate.properties  Config i kode:  Alternativt – XML config  hibernate.cfg.xml  Databaseinnstillinger  Liste mappingfiler Configuration cfg = new Configuration(); cfg.addClass(airline.hibernate.Person.class); cfg.addClass(airline.hibernate.Flight.class); cfg.addClass(airline.hibernate.Reservation.class); SessionFactory factory = cfg.buildSessionFactory(); SessionFactory sf = new Configuration().configure().buildSessionFactory();

Hibernate utvikling i praksisJavaZone 2004 Side 14 Deployment – MBean/JBoss SAR  Hibernate  JBoss  MBean – SessionFactory oppretting  Alt pakkes i en SAR fil (Service Archive)  Hibernate mappings  POJO klasser  DD – jboss-service.xml  jboss-service.xml  DataSource JNDI navn  Factory JNDI navn  Dialect settings  Liste av mappings  XDoclet støtte  JMX  Runtime config

Hibernate utvikling i praksisJavaZone 2004 Side 15 Deployment – MBean/JBoss SAR  SessionFactory tilgjengelig via JNDI:  Fordeler med MBean  Støtter CMT (Stateless Session Bean – façade)  Appserver styrer Connection Pooling  Runtime config  Middlegen/XDoclet  Eksisterende database  komplett SAR fil  JBoss  HAR (Hibernate Archive)  HAR Deployer – multiple MBean  hibernate-service.xml  Sesjonshåndtering – SessionContext.getSession(…) InitialContext ctx = new InitialContext(); SessionFactory factory = (SessionFactory)ctx.lookup("java:/hibernate/SessionFactory"); Session session = factory.getSession(); SAR DB EJB facade J2SE client WebApp JBoss

Hibernate utvikling i praksisJavaZone 2004 Side 16 Deployment – Spring  Springframework  Lettvektsrammeverk  Dependency Injection – Avhengighetsinnsprøytning  AOP  Fordeler  Unchecked exceptions  Declarative transactions  Logisk lagdeling  Enhetstesting  HibernateTemplate/HibernateDAOSupport  Forhold til MBean/SAR  Ingen container påkrevd  Kan benyttes fra alle Java applikasjoner  Trond Arve Wasskog – Open Source Agile Architecture

Hibernate utvikling i praksisJavaZone 2004 Side 17 Deployment – Spring  Konfigurasjon SessionFactory  DataSource + mapping filer  DAO  refererer til mySessionFactory product.hbm.xml net.sf.hibernate.dialect.MySQLDialect

Hibernate utvikling i praksisJavaZone 2004 Side 18 Deployment – Spring  Transaksjoner i Spring  AOP  Transaction Interceptor  Proxy for façade  Konfigurasjon per metode sessionFactory dataSource DB txManager txInterceptor productDAO serviceFacadeTarget serviceFacadeProxy ”serviceFacade” client bekk.serviceFacade.getFoo=PROPAGATION_REQUIRED,readOnly bekk.serviceFacade.*=PROPAGATION_REQUIRED

Hibernate utvikling i praksisJavaZone 2004 Side 19 Erfaringer  Utvalgte prosjekter  SQL kode  Sjekk generert SQL!  Criteria API  HQL  Muligheter for egen SQL  Connection Pooling  Hibernate innebygd – ikke prod. klar!  Bruk container evt. ekstern (C3PO e.l.) AppserverDBConfigTeknikk WebSphereDB2 – OS390Standard”Skrive alt” JBossOracleSAR/MBeanbottom-up TomcatOracleStandardmiddle-out TomcatMySQL + OracleSpringtop-down

Hibernate utvikling i praksisJavaZone 2004 Side 20 Erfaringer  DB Støtte  Enkelt å skrive egen Dialect  DB2390Dialect  Hibernate   Lær O/R modellering  Generelle prinsipper  Generert kode/SQL – lær å finn feil  Lazy loading  Bra (selvfølge?) for ytelse  ObjectNotFoundException v/multiple sesjoner  Applikasjonstransaksjoner  persistent/transient objekt  Optimistisk låsing default  saveOrUpdateCopy()  Sesjonshåndtering  ThreadLocal  Spring

Hibernate utvikling i praksisJavaZone 2004 Side 21 Fremtidsutsikter – Hibernate 3  net.sf.hibernate  org.hibernate  Checked exceptions  Runtime exceptions  Filter API  Full Event Driven Design  Statistics API + JMX Mbean  lazy=”true” for properties  Fikset ytelses problem m/one-to-one properties  Støtte lagrede prosedyrer  SchemaUpdate fikset  HQL forbedringer  bedre syntakssjekking mm.  +++

Hibernate utvikling i praksisJavaZone 2004 Side 22 Fremtidsutsikter – JDO 2.0  Tidligere  skal støtte JDO 2.0 spec.  Sentrale hendelser  Hibernate  JBoss  Gavin King  JBoss group + EJB 3.0 spec. team  Stor diskusjon/uenighet JDO/EJB spec. teams  Nå  Ingen interesse i JDO 2.0  Mer relevant med EJB 3.0

Hibernate utvikling i praksisJavaZone 2004 Side 23 Fremtidsutsikter – EJB 3.0  Gavin King  EJB 3.0 spec. team  Entity beans  POJO  Slutt på CMR  Slutt på home interface  Veldig likt Hibernate  EntityManager  Hibernate Session  Lignende Query grensesnitt  EJB QL forbedringer, inspirert av HQL  create() + merge()/saveOrUpdateCopy()  Stor bruk av Metadata

Hibernate utvikling i praksisJavaZone 2004 Side 24 Fremtidsutsikter – EJB 3.0  Eksempel  POJO  public class Customer implements Serializable { private Long id; private String name; private Set phones = new HashSet(); public void setId(Long id) { this.id = id; }... public void addPhoneNumber(PhoneNumber number) { this.phones.add(number); number.setCustomer(this); // ? INGEN CMR! }

Hibernate utvikling i praksisJavaZone 2004 Side 25 Fremtidsutsikter – EJB public class OrderEntryBean { EntityManager public void setEntityManager(EntityManager em) { this.em = em; } public void enterOrder(Long custId, Order newOrder) { Customer cust = (Customer)em.find(”Customer”, custId); cust.getOrders().add(newOrder); newOrder.setCustomer(cust); }  EntityManager vs. Hibernate m/Spring /** id=“orderEntryDAO" name="sessionFactory" ref="sessionFactory“ */ public class OrderEntryDAO extends HibernateDAOSupport { public void enterOrder(Long custId, Order newOrder) { Customer cust = (Customer)getHibernateTemplate().load(Customer.class, custId); cust.getOrders().add(newOrder); newOrder.setCustomer(cust); } /** id=“orderEntryDAO" name="sessionFactory" ref="sessionFactory“ */ public class OrderEntryDAO extends HibernateDAOSupport { public void enterOrder(Long custId, Order newOrder) { Customer cust = (Customer)getHibernateTemplate().load(Customer.class, custId); cust.getOrders().add(newOrder); newOrder.setCustomer(cust); }

Hibernate utvikling i praksisJavaZone 2004 Side 26 Fremtidsutsikter – Videre...  J2SE 5.0  Metadata erstatter XDoclet o.l.  Generics – angi type i relasjoner  Enumerated Types  EJB 3.0 – Hibernate implementasjon?  Støtte etc.  Kjøre EJB’er uten container?  NHibernate –

Hibernate utvikling i praksisJavaZone 2004 Side 27 Konklusjon  Hibernate suksess!  Domenemodellen er tilbake!  Sterk driver bak EJB 3.0  God verktøystøtte  Skriv Javakode!  J2EE eller alene  Spring  JBoss støtte

Hibernate utvikling i praksisJavaZone 2004 Side 28 Q & A Spørsmål? Ta gjerne kontakt: Eller besøk BEKK stand for demoer/spørsmål  Takk for meg!

Hibernate utvikling i praksisJavaZone 2004 Side 29 Demonstrasjon – XDoclet/SchemaExport  Skisse/eksempel –  Vise Java klasse fil (IDEA)  ‘maven xdoclet:hibernatedoclet’ – vise XML mapping (IDEA)  ‘maven schemaexport’ – vise Database (MySQL CC) Demonstrasjon