21
JPA2 Done Right

LatJUG. JPA2 Done Right

Embed Size (px)

DESCRIPTION

Java User Group Latvia February 2011 JPA2 Done Right Denis Udod http://goo.gl/rzD0q

Citation preview

Page 1: LatJUG. JPA2 Done Right

JPA2 Done Right

Page 2: LatJUG. JPA2 Done Right

Easy JPA2JPA2.0 + Hibernate3.6 + HSQLDB2.0 + Maven3

Page 3: LatJUG. JPA2 Done Right

Easy JPA2JPA2.0 + Hibernate3.6 + HSQLDB2.0 + Maven3

Create projectmvn archetype:generate …

Page 4: LatJUG. JPA2 Done Right

Easy JPA2JPA2.0 + Hibernate3.6 + HSQLDB2.0 + Maven3

Create projectmvn archetype:generate …

Edit pom.xmlAdd repository jboss

Add dependency

hibernate-core

hibernate-entitymanager

hsqldb

Page 5: LatJUG. JPA2 Done Right

Easy JPA2JPA2.0 + Hibernate3.6 + HSQLDB2.0 + Maven3

Ready to import into IDE

Page 6: LatJUG. JPA2 Done Right

Easy JPA2persistence.xml

<?xml version="1.0" encoding="UTF-8"?><persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd" version="2.0">

<persistence-unit name="org.hibernate.jpa"> <provider>org.hibernate.ejb.HibernatePersistence</provider> <class>lv.jug.jpa.CustomerEntity</class> <properties> <property name="hibernate.connection.url" value="jdbc:hsqldb:./.db/testfiles"/> <property name="hibernate.connection.driver_class" value="org.hsqldb.jdbc.JDBCDriver"/> <property name="hibernate.connection.username" value="SA"/> <property name="hibernate.connection.password" value=""/> <property name="hibernate.archive.autodetection" value="class"/> <property name="hibernate.show_sql" value="true"/> <property name="hibernate.format_sql" value="true"/> <property name="hbm2ddl.auto" value="update"/> </properties> </persistence-unit></persistence>

Page 7: LatJUG. JPA2 Done Right

Easy JPA2persistence.xml

<?xml version="1.0" encoding="UTF-8"?><persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd" version="2.0">

<persistence-unit name="org.hibernate.jpa"> <provider>org.hibernate.ejb.HibernatePersistence</provider> <class>lv.jug.jpa.CustomerEntity</class> <properties> <property name="hibernate.connection.url" value="jdbc:hsqldb:./.db/testfiles"/> <property name="hibernate.connection.driver_class" value="org.hsqldb.jdbc.JDBCDriver"/> <property name="hibernate.connection.username" value="SA"/> <property name="hibernate.connection.password" value=""/> <property name="hibernate.archive.autodetection" value="class"/> <property name="hibernate.show_sql" value="true"/> <property name="hibernate.format_sql" value="true"/> <property name="hbm2ddl.auto" value="update"/> </properties> </persistence-unit></persistence>

Page 8: LatJUG. JPA2 Done Right

Easy JPA2CustomerEntity

Page 9: LatJUG. JPA2 Done Right

Easy JPA2И всe

Page 10: LatJUG. JPA2 Done Right

Easy JPA2 ?И все же не все ?

Page 11: LatJUG. JPA2 Done Right

Easy JPA2?Попробуем что нас получилось...

Page 12: LatJUG. JPA2 Done Right

Easy JPA2Идея: Для каждого Entity надо DAO

Page 13: LatJUG. JPA2 Done Right

Easy JPA2 ?Идея: Для каждого Entity надо DAO

Page 14: LatJUG. JPA2 Done Right

Not Easy JPA2 ?Не хватит и 2-х экранов

Page 15: LatJUG. JPA2 Done Right

Not Easy JPA2 ?Опять много кода

Page 16: LatJUG. JPA2 Done Right

Done RightJPA2.0 + Hiernate3.6 + HSQLDB2.0 + Maven3

+ Hades http://redmine.synyx.org/projects/hades

Page 17: LatJUG. JPA2 Done Right

Done RightJPA2.0 + Hiernate3.6 + HSQLDB2.0 + Maven3

+ Hades http://redmine.synyx.org/projects/hades

Edit pom.xmlAdd dependency

org.synyx.hades

Page 18: LatJUG. JPA2 Done Right

Done RightСоздадим новое “hades-style” DAO

Page 19: LatJUG. JPA2 Done Right

Easy JPA2И всe

Page 20: LatJUG. JPA2 Done Right

Easy JPA2И всe

не нужно больше плодить «одинаковый код»Все DAO стало декларативным

Page 21: LatJUG. JPA2 Done Right

Easy JPA2Hades http://hades.synys.orgApache license 2.0