Presentasjon lastes. Vennligst vent

Presentasjon lastes. Vennligst vent

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

Liknende presentasjoner


Presentasjon om: "Side 1 Hibernate utvikling i praksis JavaZone 2004 Eivind Waaler, Bekk – 15.09.2004 Versjon 1.0."— Utskrift av presentasjonen:

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

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

3 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 2.1.6 – 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

4 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

5 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

6 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

7 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" >...

8 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

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

10 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

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

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

13 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();

14 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

15 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 3.2.6  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

16 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

17 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

18 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

19 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

20 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

21 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.  +++

22 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

23 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

24 Hibernate utvikling i praksisJavaZone 2004 Side 24 Fremtidsutsikter – EJB 3.0  Eksempel  POJO  Metadata @Entity 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! }

25 Hibernate utvikling i praksisJavaZone 2004 Side 25 Fremtidsutsikter – EJB 3.0 @Stateless public class OrderEntryBean { EntityManager em; @Inject 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 /** * @spring.bean id=“orderEntryDAO" * @spring.property 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); } /** * @spring.bean id=“orderEntryDAO" * @spring.property 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); }

26 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 for @Entity etc.  Kjøre EJB’er uten container?  NHibernate – http://nhibernate.sourceforge.nethttp://nhibernate.sourceforge.net

27 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

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

29 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


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

Liknende presentasjoner


Annonser fra Google