[hibernate-commits] Hibernate SVN: r20255 - in core/trunk/documentation/quickstart/src/main/docbook/en-US/content: extras/examples/annotations/org/hibernate/tutorial/annotations and 1 other directory.

hibernate-commits at lists.jboss.org hibernate-commits at lists.jboss.org
Tue Aug 24 13:15:42 EDT 2010


Author: steve.ebersole at jboss.com
Date: 2010-08-24 13:15:42 -0400 (Tue, 24 Aug 2010)
New Revision: 20255

Added:
   core/trunk/documentation/quickstart/src/main/docbook/en-US/content/extras/examples/annotations/org/hibernate/tutorial/annotations/EventManager.java
Modified:
   core/trunk/documentation/quickstart/src/main/docbook/en-US/content/tutorial_annotations.xml
   core/trunk/documentation/quickstart/src/main/docbook/en-US/content/tutorial_native.xml
Log:
HHH-5444 - Write annotations tutorial chapter


Copied: core/trunk/documentation/quickstart/src/main/docbook/en-US/content/extras/examples/annotations/org/hibernate/tutorial/annotations/EventManager.java (from rev 20248, core/trunk/documentation/quickstart/src/main/docbook/en-US/content/extras/examples/hbm/org/hibernate/tutorial/hbm/EventManager.java)
===================================================================
--- core/trunk/documentation/quickstart/src/main/docbook/en-US/content/extras/examples/annotations/org/hibernate/tutorial/annotations/EventManager.java	                        (rev 0)
+++ core/trunk/documentation/quickstart/src/main/docbook/en-US/content/extras/examples/annotations/org/hibernate/tutorial/annotations/EventManager.java	2010-08-24 17:15:42 UTC (rev 20255)
@@ -0,0 +1,87 @@
+/*
+ * 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 org.hibernate.tutorial.annotations;
+
+import org.hibernate.cfg.Configuration;
+import org.hibernate.Session;
+import org.hibernate.SessionFactory;
+
+import java.util.Date;
+import java.util.List;
+
+public class EventManager {
+    private final SessionFactory sessionFactory;
+
+    public static void main(String[] args) {
+        EventManager eventManager = new EventManager();
+
+        if ( args[0].equals( "store" ) ) {
+            eventManager.createAndStoreEvent( "My Event", new Date() );
+        }
+        else if (args[0].equals("list")) {
+            List events = eventManager.listEvents();
+            for (int i = 0; i < events.size(); i++) {
+                Event theEvent = (Event) events.get(i);
+                System.out.println(
+                        "Event: " + theEvent.getTitle()
+                            + " Time: " + theEvent.getDate()
+                );
+            }
+        }
+
+        eventManager.release();
+    }
+
+    public EventManager() {
+        sessionFactory = new Configuration()
+                .configure() // configures settings from hibernate.cfg.xml
+                .buildSessionFactory();
+    }
+
+    public void release() {
+        sessionFactory.close();
+    }
+
+    private void createAndStoreEvent(String title, Date theDate) {
+        Session session = sessionFactory.openSession();
+        session.beginTransaction();
+
+        Event theEvent = new Event();
+        theEvent.setTitle( title );
+        theEvent.setDate( theDate );
+        session.save( theEvent );
+
+        session.getTransaction().commit();
+        session.close();
+    }
+
+    private List listEvents() {
+        Session session = sessionFactory.openSession();
+        session.beginTransaction();
+        List result = session.createQuery("from Event").list();
+        session.getTransaction().commit();
+        session.close();
+        return result;
+    }
+}
\ No newline at end of file

Modified: core/trunk/documentation/quickstart/src/main/docbook/en-US/content/tutorial_annotations.xml
===================================================================
--- core/trunk/documentation/quickstart/src/main/docbook/en-US/content/tutorial_annotations.xml	2010-08-24 17:15:32 UTC (rev 20254)
+++ core/trunk/documentation/quickstart/src/main/docbook/en-US/content/tutorial_annotations.xml	2010-08-24 17:15:42 UTC (rev 20255)
@@ -11,12 +11,10 @@
             <title>Create the Maven POM file</title>
             <para>
                 Create a file named <filename>pom.xml</filename> in the root of your project directory, containing
-                the text in<xref linkend="hibernate-gsg-tutorial-annotations-pom-ex1"/>.
+                the text in <xref linkend="hibernate-gsg-tutorial-annotations-pom-ex1"/>.
             </para>
             <example id="hibernate-gsg-tutorial-annotations-pom-ex1">
-                <title>
-                    <filename>pom.xml</filename>
-                </title>
+                <title><filename>pom.xml</filename></title>
                 <programlisting role="XML"><xi:include href="extras/examples/annotations/pom.xml" xmlns:xi="http://www.w3.org/2001/XInclude" parse="text"/></programlisting>
             </example>
         </step>
@@ -25,14 +23,12 @@
             <title>Create the annotated entity Java class</title>
 
             <para>
-                Create a file named<filename>src/main/java/org/hibernate/tutorial/annotations/Event.java</filename>,
-                containing the text in<xref linkend="hibernate-gsg-tutorial-annotations-entity-ex1"/>.
+                Create a file named <filename>src/main/java/org/hibernate/tutorial/annotations/Event.java</filename>,
+                containing the text in <xref linkend="hibernate-gsg-tutorial-annotations-entity-ex1"/>.
             </para>
 
             <example id="hibernate-gsg-tutorial-annotations-entity-ex1">
-                <title>
-                    <filename>Entity.java</filename>
-                </title>
+                <title><filename>Entity.java</filename></title>
                 <programlisting role="JAVA"><xi:include href="extras/examples/annotations/org/hibernate/tutorial/annotations/Event.java" xmlns:xi="http://www.w3.org/2001/XInclude" parse="text"/></programlisting>
             </example>
             <para>
@@ -52,7 +48,8 @@
                             class as an entity.  It's function is essentially the same as the <literal>class</literal>
                             mapping element we see in <xref linkend="hibernate-gsg-tutorial-native-hbm-xml-ex1"/>.
                             Additionally the <interfacename>@javax.persistence.Table</interfacename> annotation is
-                            used to override the default table name annotations would have used (<literal>EVENT</literal>).
+                            used to explicitly specify the table name (the default table name would have been
+                            <database class="table">EVENT</database>).
                         </para>
                     </listitem>
                     <listitem>
@@ -60,14 +57,6 @@
                             <interfacename>@javax.persistence.Id</interfacename> marks the property defining the
                             entity's identifier.
                         </para>
-                        <note>
-                            <para>
-                                Property-related annotations are allowed on either the field or the getter method.
-                                However, for a given entity they cannot be mixed.  The placement of the
-                                <interfacename>@javax.persistence.Id</interfacename> indicates where Hibernate
-                                should expect to find other property-related annotations.
-                            </para>
-                        </note>
                     </listitem>
                     <!-- todo : example of defining the generator -->
                     <listitem>
@@ -100,9 +89,57 @@
             </para>
         </step>
 
-        <!-- the rest of the tutorial "here on out" is the same as from the native + hbm.xml -->
-        <!-- todo : is it enough to say that? -->
+        <step id="hibernate-gsg-tutorial-annotations-working">
+            <title>Do stuff</title>
+            <para>
+                Create a file named <filename>src/main/java/org/hibernate/tutorial/annotations/EventManager.java</filename>
+                containing the text in <xref linkend="hibernate-gsg-tutorial-native-working-ex1"/>.
+            </para>
 
+            <example id="hibernate-gsg-tutorial-native-working-ex1">
+                <title>
+                    <filename>EventManager.java</filename>
+                </title>
+                <programlisting role="JAVA"><xi:include href="extras/examples/annotations/org/hibernate/tutorial/annotations/EventManager.java" xmlns:xi="http://www.w3.org/2001/XInclude" parse="text"/></programlisting>
+            </example>
+
+            <para>
+                Refer back to <xref linkend="hibernate-gsg-tutorial-native-working"/> for a discussion
+            </para>
+        </step>
+
+        <step id="hibernate-gsg-tutorial-annotations-compileAndRun">
+            <title>Compile and run the code</title>
+
+            <para>
+                Follow the directions at <xref linkend="hibernate-gsg-tutorial-native-compile"/> and
+                <xref linkend="hibernate-gsg-tutorial-native-running"/> to compile and then run the code.  Be sure
+                to reference the <classname>org.hibernate.tutorial.annotations.EventManager</classname> class
+                instead of the <classname>org.hibernate.tutorial.hbm.EventManager</classname> class.
+            </para>
+        </step>
+
     </procedure>
 
+    <section id="hibernate-gsg-tutorial-annotations-further">
+        <title>Take it further!</title>
+        <para>
+            Try the following exercises:
+        </para>
+        <itemizedlist>
+            <listitem>
+                <para>
+                    With help of the Developer Guide, add an association to the <classname>Event</classname>
+                    entity to model a message thread.
+                </para>
+            </listitem>
+            <listitem>
+                <para>
+                    With help of the Developer Guide, add a callback to receive notifications when an
+                    <classname>Event</classname> is created, updated or deleted.  Try the same with an event listener.
+                </para>
+            </listitem>
+        </itemizedlist>
+    </section>
+
 </chapter>
\ No newline at end of file

Modified: core/trunk/documentation/quickstart/src/main/docbook/en-US/content/tutorial_native.xml
===================================================================
--- core/trunk/documentation/quickstart/src/main/docbook/en-US/content/tutorial_native.xml	2010-08-24 17:15:32 UTC (rev 20254)
+++ core/trunk/documentation/quickstart/src/main/docbook/en-US/content/tutorial_native.xml	2010-08-24 17:15:42 UTC (rev 20255)
@@ -233,7 +233,7 @@
             <title>Do stuff</title>
             <para>
                 Create a file named <filename>src/main/java/org/hibernate/tutorial/hbm/EventManager.java</filename>
-                with the following contents:
+                containing the text in <xref linkend="hibernate-gsg-tutorial-native-working-ex1"/>.
             </para>
 
             <example id="hibernate-gsg-tutorial-native-working-ex1">
@@ -283,10 +283,10 @@
         </step>
 
         <step id="hibernate-gsg-tutorial-native-running">
-            <title>Running the code</title>
+            <title>Run the code</title>
             <para>
                 To perform a store (leveraging the maven exec plugin):
-                <command>mvn exec:java -Dexec.mainClass="org.hibernate.tutorial.native.EventManager" -Dexec.args="store"</command>
+                <command>mvn exec:java -Dexec.mainClass="org.hibernate.tutorial.hbm.EventManager" -Dexec.args="store"</command>
                 You should see Hibernate starting up and, depending on your configuration, lots of log output. Towards
                 the end, the following line will be displayed:
                 <screen>[java] Hibernate: insert into EVENTS (EVENT_DATE, title, EVENT_ID) values (?, ?, ?)</screen>
@@ -295,7 +295,7 @@
 
             <para>
                 To perform a list:
-                <command>mvn exec:java -Dexec.mainClass="org.hibernate.tutorial.native.EventManager"-Dexec.args="list"</command>
+                <command>mvn exec:java -Dexec.mainClass="org.hibernate.tutorial.hbm.EventManager"-Dexec.args="list"</command>
             </para>
 
             <note>
@@ -307,8 +307,11 @@
         </step>
     </procedure>
 
-    <para>
-        Take it further! Try the following:
+    <section id="hibernate-gsg-tutorial-annotations-further">
+        <title>Take it further!</title>
+        <para>
+            Try the following exercises:
+        </para>
         <itemizedlist>
             <listitem>
                 <para>
@@ -322,6 +325,6 @@
                 </para>
             </listitem>
         </itemizedlist>
-    </para>
+    </section>
 
 </chapter>
\ No newline at end of file



More information about the hibernate-commits mailing list