From dcda71cc643a628704b4d5840ed35d6552cbc69b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Zurcher?= Date: Tue, 22 Nov 2011 16:50:58 +0100 Subject: add java-hibernate test --- java-hibernate/META-INF/persistence.xml | 48 ++++++++++ java-hibernate/build.xml | 104 +++++++++++++++++++++ java-hibernate/cfg/annotations/hibernate.cfg.xml | 59 ++++++++++++ java-hibernate/cfg/basic/Event.hbm.xml | 41 ++++++++ java-hibernate/cfg/basic/hibernate.cfg.xml | 58 ++++++++++++ java-hibernate/cfg/logback-test.xml | 14 +++ .../src/ch/asynk/hibernate/annotations/Event.java | 83 ++++++++++++++++ .../annotations/HibernateAnnotationsTest.java | 80 ++++++++++++++++ .../src/ch/asynk/hibernate/basic/Event.java | 67 +++++++++++++ .../asynk/hibernate/basic/HibernateBasicTest.java | 79 ++++++++++++++++ .../src/ch/asynk/hibernate/jpa/EventJPA.java | 83 ++++++++++++++++ .../ch/asynk/hibernate/jpa/HibernateJPATest.java | 73 +++++++++++++++ 12 files changed, 789 insertions(+) create mode 100644 java-hibernate/META-INF/persistence.xml create mode 100644 java-hibernate/build.xml create mode 100644 java-hibernate/cfg/annotations/hibernate.cfg.xml create mode 100644 java-hibernate/cfg/basic/Event.hbm.xml create mode 100644 java-hibernate/cfg/basic/hibernate.cfg.xml create mode 100644 java-hibernate/cfg/logback-test.xml create mode 100644 java-hibernate/src/ch/asynk/hibernate/annotations/Event.java create mode 100644 java-hibernate/src/ch/asynk/hibernate/annotations/HibernateAnnotationsTest.java create mode 100644 java-hibernate/src/ch/asynk/hibernate/basic/Event.java create mode 100644 java-hibernate/src/ch/asynk/hibernate/basic/HibernateBasicTest.java create mode 100644 java-hibernate/src/ch/asynk/hibernate/jpa/EventJPA.java create mode 100644 java-hibernate/src/ch/asynk/hibernate/jpa/HibernateJPATest.java diff --git a/java-hibernate/META-INF/persistence.xml b/java-hibernate/META-INF/persistence.xml new file mode 100644 index 0000000..9f9f1fd --- /dev/null +++ b/java-hibernate/META-INF/persistence.xml @@ -0,0 +1,48 @@ + + + + + + Persistence unit for the JPA tutorial of the Hibernate Getting Started Guide + + + ch.asynk.hibernate.jpa.EventJPA + + + + + + + + + + + + + + diff --git a/java-hibernate/build.xml b/java-hibernate/build.xml new file mode 100644 index 0000000..2a78bef --- /dev/null +++ b/java-hibernate/build.xml @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java-hibernate/cfg/annotations/hibernate.cfg.xml b/java-hibernate/cfg/annotations/hibernate.cfg.xml new file mode 100644 index 0000000..43c0bdd --- /dev/null +++ b/java-hibernate/cfg/annotations/hibernate.cfg.xml @@ -0,0 +1,59 @@ + + + + + + + + + + org.h2.Driver + jdbc:h2:mem:db1;DB_CLOSE_DELAY=-1;MVCC=TRUE + sa + + + + 1 + + + org.hibernate.dialect.H2Dialect + + + org.hibernate.cache.NoCacheProvider + + + true + + + create + + + + + + + diff --git a/java-hibernate/cfg/basic/Event.hbm.xml b/java-hibernate/cfg/basic/Event.hbm.xml new file mode 100644 index 0000000..3e5fbf3 --- /dev/null +++ b/java-hibernate/cfg/basic/Event.hbm.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + diff --git a/java-hibernate/cfg/basic/hibernate.cfg.xml b/java-hibernate/cfg/basic/hibernate.cfg.xml new file mode 100644 index 0000000..b407572 --- /dev/null +++ b/java-hibernate/cfg/basic/hibernate.cfg.xml @@ -0,0 +1,58 @@ + + + + + + + + + + org.h2.Driver + jdbc:h2:mem:db1;DB_CLOSE_DELAY=-1;MVCC=TRUE + sa + + + + 1 + + + org.hibernate.dialect.H2Dialect + + + org.hibernate.cache.NoCacheProvider + + + true + + + create + + + + + + diff --git a/java-hibernate/cfg/logback-test.xml b/java-hibernate/cfg/logback-test.xml new file mode 100644 index 0000000..faa53b9 --- /dev/null +++ b/java-hibernate/cfg/logback-test.xml @@ -0,0 +1,14 @@ + + + + + + %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + + + + + + + + diff --git a/java-hibernate/src/ch/asynk/hibernate/annotations/Event.java b/java-hibernate/src/ch/asynk/hibernate/annotations/Event.java new file mode 100644 index 0000000..ef365f6 --- /dev/null +++ b/java-hibernate/src/ch/asynk/hibernate/annotations/Event.java @@ -0,0 +1,83 @@ +/* + * Hibernate, Relational Persistence for Idiomatic Java + * + * Copyright (c) 2010, Red Hat Inc. or third-party contributors as + * indicated by the @author tags or express copyright attribution + * statements applied by the authors. All third-party contributions are + * distributed under license by Red Hat Inc. + * + * This copyrighted material is made available to anyone wishing to use, modify, + * copy, or redistribute it subject to the terms and conditions of the GNU + * Lesser General Public License, as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License + * for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this distribution; if not, write to: + * Free Software Foundation, Inc. + * 51 Franklin Street, Fifth Floor + * Boston, MA 02110-1301 USA + */ +package ch.asynk.hibernate.annotations; + +import java.util.Date; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; + +import org.hibernate.annotations.GenericGenerator; + +@Entity +@Table( name = "EVENTS" ) +public class Event { + private Long id; + + private String title; + private Date date; + + public Event() { + // this form used by Hibernate + } + + public Event(String title, Date date) { + // for application use, to create new events + this.title = title; + this.date = date; + } + + @Id + @GeneratedValue(generator="increment") + @GenericGenerator(name="increment", strategy = "increment") + public Long getId() { + return id; + } + + private void setId(Long id) { + this.id = id; + } + + @Temporal(TemporalType.TIMESTAMP) + @Column(name = "EVENT_DATE") + public Date getDate() { + return date; + } + + public void setDate(Date date) { + this.date = date; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } +} diff --git a/java-hibernate/src/ch/asynk/hibernate/annotations/HibernateAnnotationsTest.java b/java-hibernate/src/ch/asynk/hibernate/annotations/HibernateAnnotationsTest.java new file mode 100644 index 0000000..46e730a --- /dev/null +++ b/java-hibernate/src/ch/asynk/hibernate/annotations/HibernateAnnotationsTest.java @@ -0,0 +1,80 @@ +/* + * Hibernate, Relational Persistence for Idiomatic Java + * + * Copyright (c) 2010, Red Hat Inc. or third-party contributors as + * indicated by the @author tags or express copyright attribution + * statements applied by the authors. All third-party contributions are + * distributed under license by Red Hat Inc. + * + * This copyrighted material is made available to anyone wishing to use, modify, + * copy, or redistribute it subject to the terms and conditions of the GNU + * Lesser General Public License, as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License + * for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this distribution; if not, write to: + * Free Software Foundation, Inc. + * 51 Franklin Street, Fifth Floor + * Boston, MA 02110-1301 USA + */ +package ch.asynk.hibernate.annotations; + +import java.util.Date; +import java.util.List; + +import junit.framework.TestCase; + +import org.hibernate.Session; +import org.hibernate.SessionFactory; +import org.hibernate.cfg.Configuration; + +/** + * Illustrates the use of Hibernate native APIs. The code here is unchanged from the {@code basic} example, the + * only difference being the use of annotations to supply the metadata instead of Hibernate mapping files. + * + * @author Steve Ebersole + */ +public class HibernateAnnotationsTest extends TestCase { + private SessionFactory sessionFactory; + + @Override + protected void setUp() throws Exception { + // A SessionFactory is set up once for an application + sessionFactory = new Configuration() + .configure() // configures settings from hibernate.cfg.xml + .buildSessionFactory(); + } + + @Override + protected void tearDown() throws Exception { + if ( sessionFactory != null ) { + sessionFactory.close(); + } + } + + @SuppressWarnings({ "unchecked" }) + public void testBasicUsage() { + // create a couple of events... + Session session = sessionFactory.openSession(); + session.beginTransaction(); + session.save( new Event( "Our very first event!", new Date() ) ); + session.save( new Event( "A follow up event", new Date() ) ); + session.getTransaction().commit(); + session.close(); + + // now lets pull events from the database and list them + session = sessionFactory.openSession(); + session.beginTransaction(); + @SuppressWarnings("unchecked") + List result = session.createQuery( "from Event" ).list(); + for ( Event event : result ) { + System.out.println( "Event (" + event.getDate() + ") : " + event.getTitle() ); + } + session.getTransaction().commit(); + session.close(); + } +} diff --git a/java-hibernate/src/ch/asynk/hibernate/basic/Event.java b/java-hibernate/src/ch/asynk/hibernate/basic/Event.java new file mode 100644 index 0000000..8834ee9 --- /dev/null +++ b/java-hibernate/src/ch/asynk/hibernate/basic/Event.java @@ -0,0 +1,67 @@ +/* + * Hibernate, Relational Persistence for Idiomatic Java + * + * Copyright (c) 2010, Red Hat Inc. or third-party contributors as + * indicated by the @author tags or express copyright attribution + * statements applied by the authors. All third-party contributions are + * distributed under license by Red Hat Inc. + * + * This copyrighted material is made available to anyone wishing to use, modify, + * copy, or redistribute it subject to the terms and conditions of the GNU + * Lesser General Public License, as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License + * for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this distribution; if not, write to: + * Free Software Foundation, Inc. + * 51 Franklin Street, Fifth Floor + * Boston, MA 02110-1301 USA + */ +package ch.asynk.hibernate.basic; + +import java.util.Date; + +public class Event { + private Long id; + + private String title; + private Date date; + + public Event() { + // this form used by Hibernate + } + + public Event(String title, Date date) { + // for application use, to create new events + this.title = title; + this.date = date; + } + + public Long getId() { + return id; + } + + private void setId(Long id) { + this.id = id; + } + + public Date getDate() { + return date; + } + + public void setDate(Date date) { + this.date = date; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } +} diff --git a/java-hibernate/src/ch/asynk/hibernate/basic/HibernateBasicTest.java b/java-hibernate/src/ch/asynk/hibernate/basic/HibernateBasicTest.java new file mode 100644 index 0000000..75d3fff --- /dev/null +++ b/java-hibernate/src/ch/asynk/hibernate/basic/HibernateBasicTest.java @@ -0,0 +1,79 @@ +/* + * Hibernate, Relational Persistence for Idiomatic Java + * + * Copyright (c) 2010, Red Hat Inc. or third-party contributors as + * indicated by the @author tags or express copyright attribution + * statements applied by the authors. All third-party contributions are + * distributed under license by Red Hat Inc. + * + * This copyrighted material is made available to anyone wishing to use, modify, + * copy, or redistribute it subject to the terms and conditions of the GNU + * Lesser General Public License, as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License + * for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this distribution; if not, write to: + * Free Software Foundation, Inc. + * 51 Franklin Street, Fifth Floor + * Boston, MA 02110-1301 USA + */ +package ch.asynk.hibernate.basic; + +import java.util.Date; +import java.util.List; + +import junit.framework.TestCase; + +import org.hibernate.Session; +import org.hibernate.SessionFactory; +import org.hibernate.cfg.Configuration; + +/** + * Illustrates use of Hibernate native APIs. + * + * @author Steve Ebersole + */ +public class HibernateBasicTest extends TestCase { + + private SessionFactory sessionFactory; + + @Override + protected void setUp() throws Exception { + // A SessionFactory is set up once for an application + sessionFactory = new Configuration() + .configure() + .buildSessionFactory(); + } + + @Override + protected void tearDown() throws Exception { + if ( sessionFactory != null ) { + sessionFactory.close(); + } + } + + public void testBasicUsage() { + // create a couple of events... + Session session = sessionFactory.openSession(); + session.beginTransaction(); + session.save( new Event( "Our very first event!", new Date() ) ); + session.save( new Event( "A follow up event", new Date() ) ); + session.getTransaction().commit(); + session.close(); + + // now lets pull events from the database and list them + session = sessionFactory.openSession(); + session.beginTransaction(); + @SuppressWarnings("unchecked") + List result = session.createQuery( "from Event" ).list(); + for ( Event event : result ) { + System.out.println( "Event (" + event.getDate() + ") : " + event.getTitle() ); + } + session.getTransaction().commit(); + session.close(); + } +} diff --git a/java-hibernate/src/ch/asynk/hibernate/jpa/EventJPA.java b/java-hibernate/src/ch/asynk/hibernate/jpa/EventJPA.java new file mode 100644 index 0000000..3b9533d --- /dev/null +++ b/java-hibernate/src/ch/asynk/hibernate/jpa/EventJPA.java @@ -0,0 +1,83 @@ +/* + * Hibernate, Relational Persistence for Idiomatic Java + * + * Copyright (c) 2010, Red Hat Inc. or third-party contributors as + * indicated by the @author tags or express copyright attribution + * statements applied by the authors. All third-party contributions are + * distributed under license by Red Hat Inc. + * + * This copyrighted material is made available to anyone wishing to use, modify, + * copy, or redistribute it subject to the terms and conditions of the GNU + * Lesser General Public License, as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License + * for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this distribution; if not, write to: + * Free Software Foundation, Inc. + * 51 Franklin Street, Fifth Floor + * Boston, MA 02110-1301 USA + */ +package ch.asynk.hibernate.jpa; + +import java.util.Date; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; + +import org.hibernate.annotations.GenericGenerator; + +@Entity +@Table( name = "EVENTS" ) +public class EventJPA { + private Long id; + + private String title; + private Date date; + + public EventJPA() { + // this form used by Hibernate + } + + public EventJPA(String title, Date date) { + // for application use, to create new events + this.title = title; + this.date = date; + } + + @Id + @GeneratedValue(generator="increment") + @GenericGenerator(name="increment", strategy = "increment") + public Long getId() { + return id; + } + + private void setId(Long id) { + this.id = id; + } + + @Temporal(TemporalType.TIMESTAMP) + @Column(name = "EVENT_DATE") + public Date getDate() { + return date; + } + + public void setDate(Date date) { + this.date = date; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } +} diff --git a/java-hibernate/src/ch/asynk/hibernate/jpa/HibernateJPATest.java b/java-hibernate/src/ch/asynk/hibernate/jpa/HibernateJPATest.java new file mode 100644 index 0000000..727d706 --- /dev/null +++ b/java-hibernate/src/ch/asynk/hibernate/jpa/HibernateJPATest.java @@ -0,0 +1,73 @@ +/* + * Hibernate, Relational Persistence for Idiomatic Java + * + * Copyright (c) 2010, Red Hat Inc. or third-party contributors as + * indicated by the @author tags or express copyright attribution + * statements applied by the authors. All third-party contributions are + * distributed under license by Red Hat Inc. + * + * This copyrighted material is made available to anyone wishing to use, modify, + * copy, or redistribute it subject to the terms and conditions of the GNU + * Lesser General Public License, as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License + * for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this distribution; if not, write to: + * Free Software Foundation, Inc. + * 51 Franklin Street, Fifth Floor + * Boston, MA 02110-1301 USA + */ +package ch.asynk.hibernate.jpa; + +import java.util.Date; +import java.util.List; +import javax.persistence.EntityManager; +import javax.persistence.EntityManagerFactory; +import javax.persistence.Persistence; + +import junit.framework.TestCase; + +/** + * Illustrates basic use of Hibernate as a JPA provider. + * + * @author Steve Ebersole + */ +public class HibernateJPATest extends TestCase { + private EntityManagerFactory entityManagerFactory; + + @Override + protected void setUp() throws Exception { + // like discussed with regards to SessionFactory, an EntityManagerFactory is set up once for an application + // IMPORTANT: notice how the name here matches the name we gave the persistence-unit in persistence.xml! + entityManagerFactory = Persistence.createEntityManagerFactory( "ch.asynk.hibernate.jpa" ); + } + + @Override + protected void tearDown() throws Exception { + entityManagerFactory.close(); + } + + public void testBasicUsage() { + // create a couple of events... + EntityManager entityManager = entityManagerFactory.createEntityManager(); + entityManager.getTransaction().begin(); + entityManager.persist( new EventJPA( "Our very first event!", new Date() ) ); + entityManager.persist( new EventJPA( "A follow up event", new Date() ) ); + entityManager.getTransaction().commit(); + entityManager.close(); + + // now lets pull events from the database and list them + entityManager = entityManagerFactory.createEntityManager(); + entityManager.getTransaction().begin(); + List result = entityManager.createQuery( "from ch.asynk.hibernate.jpa.EventJPA", ch.asynk.hibernate.jpa.EventJPA.class ).getResultList(); + for ( EventJPA event : result ) { + System.out.println( "EventJPA (" + event.getDate() + ") : " + event.getTitle() ); + } + entityManager.getTransaction().commit(); + entityManager.close(); + } +} -- cgit v1.1-2-g2b99