diff options
Diffstat (limited to 'java-hibernate/src/ch')
6 files changed, 465 insertions, 0 deletions
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<ch.asynk.hibernate.annotations.Event> 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<ch.asynk.hibernate.basic.Event> 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<ch.asynk.hibernate.jpa.EventJPA> 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(); + } +} |