summaryrefslogtreecommitdiffstats
path: root/java-hibernate
diff options
context:
space:
mode:
Diffstat (limited to 'java-hibernate')
-rw-r--r--java-hibernate/META-INF/persistence.xml48
-rw-r--r--java-hibernate/build.xml104
-rw-r--r--java-hibernate/cfg/annotations/hibernate.cfg.xml59
-rw-r--r--java-hibernate/cfg/basic/Event.hbm.xml41
-rw-r--r--java-hibernate/cfg/basic/hibernate.cfg.xml58
-rw-r--r--java-hibernate/cfg/logback-test.xml14
-rw-r--r--java-hibernate/src/ch/asynk/hibernate/annotations/Event.java83
-rw-r--r--java-hibernate/src/ch/asynk/hibernate/annotations/HibernateAnnotationsTest.java80
-rw-r--r--java-hibernate/src/ch/asynk/hibernate/basic/Event.java67
-rw-r--r--java-hibernate/src/ch/asynk/hibernate/basic/HibernateBasicTest.java79
-rw-r--r--java-hibernate/src/ch/asynk/hibernate/jpa/EventJPA.java83
-rw-r--r--java-hibernate/src/ch/asynk/hibernate/jpa/HibernateJPATest.java73
12 files changed, 789 insertions, 0 deletions
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 @@
+<!--
+ ~ 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
+ -->
+<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="ch.asynk.hibernate.jpa">
+ <description>
+ Persistence unit for the JPA tutorial of the Hibernate Getting Started Guide
+ </description>
+
+ <class>ch.asynk.hibernate.jpa.EventJPA</class>
+
+ <properties>
+ <property name="javax.persistence.jdbc.driver" value="org.h2.Driver" />
+ <property name="javax.persistence.jdbc.url" value="jdbc:h2:mem:db1;DB_CLOSE_DELAY=-1;MVCC=TRUE" />
+ <property name="javax.persistence.jdbc.user" value="sa" />
+ <property name="javax.persistence.jdbc.password" value="" />
+
+ <property name="hibernate.show_sql" value="true" />
+ <property name="hibernate.hbm2ddl.auto" value="create" />
+ </properties>
+
+ </persistence-unit>
+
+</persistence>
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 @@
+<project default="all">
+ <property name="JAVA_LIB_HOME" location="lib" />
+ <property name="HIBERNATE_DIR" location="${JAVA_LIB_HOME}/hibernate" />
+
+ <property name="cfg-dir" location="cfg" />
+ <property name="src-dir" location="src" />
+ <property name="obj-dir" location="classes" />
+ <property name="meta-dir" location="META-INF" />
+ <property name="verbose" value="false" />
+
+ <path id="classpath.base">
+ <pathelement location="${obj-dir}" />
+ <pathelement location="${JAVA_LIB_HOME}/h2-1.3.161.jar" />
+ <!--pathelement location="${JAVA_LIB_HOME}/logback-access-1.0.0.jar" /-->
+ <pathelement location="${JAVA_LIB_HOME}/logback-classic-1.0.0.jar" />
+ <pathelement location="${JAVA_LIB_HOME}/logback-core-1.0.0.jar" />
+ <pathelement location="${HIBERNATE_DIR}/hibernate3.jar" />
+ <fileset dir="${HIBERNATE_DIR}/lib" includes="**/*.jar" />
+ </path>
+
+ <path id="classpath.run">
+ <path refid="classpath.base" />
+ </path>
+ <path id="classpath.test">
+ <pathelement location="${cfg-dir}" />
+ <pathelement location="${JAVA_LIB_HOME}/junit-4.10.jar" />
+ <path refid="classpath.base" />
+ </path>
+ <path id="classpath.test-basic">
+ <path refid="classpath.test" />
+ <pathelement location="${cfg-dir}/basic" />
+ </path>
+ <path id="classpath.test-annotations">
+ <path refid="classpath.test" />
+ <pathelement location="${cfg-dir}/annotations" />
+ </path>
+ <path id="classpath.test-jpa">
+ <path refid="classpath.test" />
+ </path>
+
+ <target name="init">
+ <mkdir dir="${obj-dir}" />
+ </target>
+
+ <target name="clean-compile">
+ <delete verbose="${verbose}" dir="${obj-dir}" />
+ </target>
+
+ <target name="resources">
+ <copy todir="${obj-dir}/META-INF">
+ <fileset dir="${meta-dir}" />
+ </copy>
+ </target>
+
+ <target name="compile-test" depends="init,resources">
+ <javac srcdir="${src-dir}" destdir="${obj-dir}" includeantruntime="false">
+ <classpath refid="classpath.test" />
+ <compilerarg value="-Xlint"/>
+ </javac>
+ </target>
+
+ <target name="test-basic" depends="compile-test">
+ <junit>
+ <classpath refid="classpath.test-basic" />
+ <formatter type="brief" usefile="false" />
+ <test name="ch.asynk.hibernate.basic.HibernateBasicTest" />
+ </junit>
+ </target>
+
+ <target name="test-annotations" depends="compile-test">
+ <junit>
+ <classpath refid="classpath.test-annotations" />
+ <formatter type="brief" usefile="false" />
+ <test name="ch.asynk.hibernate.annotations.HibernateAnnotationsTest" />
+ </junit>
+ </target>
+
+ <target name="test-jpa" depends="compile-test">
+ <junit>
+ <classpath refid="classpath.test-jpa" />
+ <formatter type="brief" usefile="false" />
+ <test name="ch.asynk.hibernate.jpa.HibernateJPATest" />
+ </junit>
+ </target>
+
+ <target name="test-all">
+ <antcall target="test-basic"/>
+ <antcall target="test-annotations"/>
+ <antcall target="test-jpa"/>
+ </target>
+
+ <target name="dist">
+ <jar destfile="distrib.jar"
+ basedir="."
+ includes="build.xml,src/**,cfg/**"
+ excludes=""
+ />
+ </target>
+
+ <target name="all" depends="test-all" />
+ <target name="clean" depends="clean-compile" />
+</project>
+
+<!-- $Id: build.xml,v 1.6 2003/07/07 19:29:01 dwight Exp $ -->
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 @@
+<?xml version='1.0' encoding='utf-8'?>
+<!--
+ ~ 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
+ -->
+<!DOCTYPE hibernate-configuration PUBLIC
+ "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
+ "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
+
+<hibernate-configuration>
+
+ <session-factory>
+
+ <!-- Database connection settings -->
+ <property name="connection.driver_class">org.h2.Driver</property>
+ <property name="connection.url">jdbc:h2:mem:db1;DB_CLOSE_DELAY=-1;MVCC=TRUE</property>
+ <property name="connection.username">sa</property>
+ <property name="connection.password"></property>
+
+ <!-- JDBC connection pool (use the built-in) -->
+ <property name="connection.pool_size">1</property>
+
+ <!-- SQL dialect -->
+ <property name="dialect">org.hibernate.dialect.H2Dialect</property>
+
+ <!-- Disable the second-level cache -->
+ <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
+
+ <!-- Echo all executed SQL to stdout -->
+ <property name="show_sql">true</property>
+
+ <!-- Drop and re-create the database schema on startup -->
+ <property name="hbm2ddl.auto">create</property>
+
+ <!-- Names the annotated entity class -->
+ <mapping class="ch.asynk.hibernate.annotations.Event"/>
+
+ </session-factory>
+
+</hibernate-configuration>
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 @@
+<?xml version="1.0"?>
+
+<!--
+ ~ 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
+ -->
+
+<!DOCTYPE hibernate-mapping PUBLIC
+ "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
+ "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
+
+<hibernate-mapping package="ch.asynk.hibernate.basic" auto-import="true">
+
+ <class name="Event" table="EVENTS">
+ <id name="id" column="EVENT_ID">
+ <generator class="increment"/>
+ </id>
+ <property name="date" type="timestamp" column="EVENT_DATE"/>
+ <property name="title"/>
+ </class>
+
+</hibernate-mapping>
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 @@
+<?xml version='1.0' encoding='utf-8'?>
+<!--
+ ~ 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
+ -->
+<!DOCTYPE hibernate-configuration PUBLIC
+ "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
+ "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
+
+<hibernate-configuration>
+
+ <session-factory>
+
+ <!-- Database connection settings -->
+ <property name="connection.driver_class">org.h2.Driver</property>
+ <property name="connection.url">jdbc:h2:mem:db1;DB_CLOSE_DELAY=-1;MVCC=TRUE</property>
+ <property name="connection.username">sa</property>
+ <property name="connection.password"></property>
+
+ <!-- JDBC connection pool (use the built-in) -->
+ <property name="connection.pool_size">1</property>
+
+ <!-- SQL dialect -->
+ <property name="dialect">org.hibernate.dialect.H2Dialect</property>
+
+ <!-- Disable the second-level cache -->
+ <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
+
+ <!-- Echo all executed SQL to stdout -->
+ <property name="show_sql">true</property>
+
+ <!-- Drop and re-create the database schema on startup -->
+ <property name="hbm2ddl.auto">create</property>
+
+ <mapping resource="Event.hbm.xml"/>
+
+ </session-factory>
+
+</hibernate-configuration>
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 @@
+<configuration>
+
+ <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+ <!-- encoders are assigned the type ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
+ <encoder>
+ <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
+ </encoder>
+ </appender>
+
+ <root level="error">
+ <appender-ref ref="STDOUT" />
+ </root>
+
+</configuration>
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();
+ }
+}