LatJUG. JPA2 Done Right

Preview:

DESCRIPTION

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

Citation preview

JPA2 Done Right

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

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

Create projectmvn archetype:generate …

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

Create projectmvn archetype:generate …

Edit pom.xmlAdd repository jboss

Add dependency

hibernate-core

hibernate-entitymanager

hsqldb

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

Ready to import into IDE

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>

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>

Easy JPA2CustomerEntity

Easy JPA2И всe

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

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

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

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

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

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

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

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

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

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

Edit pom.xmlAdd dependency

org.synyx.hades

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

Easy JPA2И всe

Easy JPA2И всe

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

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