HHH-5442 - Write native tutorial chapter

git-svn-id: https://svn.jboss.org/repos/hibernate/core/trunk@20285 1b8cb986-b30d-0410-93ca-fae66ebed9b2
This commit is contained in:
Steve Ebersole 2010-08-31 11:09:44 +00:00
parent 95b00867ce
commit df3b5147c7
1 changed files with 47 additions and 9 deletions

View File

@ -29,11 +29,12 @@
</para> </para>
<para> <para>
The first few <literal>property</literal> elements define JDBC connection information. These tutorials The <literal>connection.driver_class</literal>, <literal>connection.url</literal>,
<literal>connection.username</literal> and <literal>connection.password</literal>
<literal>property</literal> elements define JDBC connection information. These tutorials
utilize the H2 in-memory database. So these are all specific to running H2 in its in-memory mode. utilize the H2 in-memory database. So these are all specific to running H2 in its in-memory mode.
The 'connection.pool_size' is used to configure Hibernate's built-in connection pool how many <literal>connection.pool_size</literal> is used to configure Hibernate's built-in connection pool
connections how many connections to pool.
to pool.
</para> </para>
<important> <important>
@ -47,7 +48,8 @@
</important> </important>
<para> <para>
The <literal>dialect</literal> option specifies the particular SQL variant Hibernate should generate. The <literal>dialect</literal> property specifies the particular SQL variant Hibernate with which
Hibernate will converse.
</para> </para>
<tip> <tip>
@ -61,7 +63,7 @@
</tip> </tip>
<para> <para>
The <literal>hbm2ddl.auto</literal> option turns on automatic generation of database schemas directly The <literal>hbm2ddl.auto</literal> property turns on automatic generation of database schemas directly
into the database. into the database.
</para> </para>
@ -118,6 +120,8 @@
file is one choice for providing Hibernate with this metadata. file is one choice for providing Hibernate with this metadata.
</para> </para>
<programlisting role="XML"><![CDATA[<class name="Event" table="EVENTS">...</class>]]></programlisting>
<orderedlist> <orderedlist>
<title>Functions of the <literal>class</literal> element</title> <title>Functions of the <literal>class</literal> element</title>
<listitem> <listitem>
@ -137,9 +141,16 @@
<para> <para>
Instances of the <classname>Event</classname> class are now mapped to rows in the Instances of the <classname>Event</classname> class are now mapped to rows in the
<database class="table">EVENTS</database> table. Hibernate uses the <literal>id</literal> element to <database class="table">EVENTS</database> table.
uniquely identify rows in the table.
</para> </para>
<programlisting role="XML"><![CDATA[<id name="id" column="EVENT_ID">...</id>]]></programlisting>
<para>
Hibernate uses the property named by the <literal>id</literal> element to uniquely identify rows
in the table.
</para>
<important> <important>
<para> <para>
It is not strictly necessary for the <literal>id</literal> element to map to the table's actual It is not strictly necessary for the <literal>id</literal> element to map to the table's actual
@ -158,8 +169,12 @@
<para> <para>
The <literal>generator</literal> element nested inside the <literal>id</literal> element informs The <literal>generator</literal> element nested inside the <literal>id</literal> element informs
Hibernate about which strategy is used to generated primary key values for this entity. In this Hibernate about which strategy is used to generated primary key values for this entity. In this
example, a simple incrementing count is used. example a simple incrementing count is used.
</para> </para>
<programlisting role="XML"><![CDATA[<property name="date" type="timestamp" column="EVENT_DATE"/>
<property name="title"/>]]></programlisting>
<para> <para>
The two <literal>property</literal> elements declare the remaining two properties of the The two <literal>property</literal> elements declare the remaining two properties of the
<classname>Event</classname> class: <literal>date</literal> and<literal>title</literal>. The <classname>Event</classname> class: <literal>date</literal> and<literal>title</literal>. The
@ -213,6 +228,13 @@
</para> </para>
</note> </note>
<programlisting role="JAVA">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();
}</programlisting>
<para> <para>
The <classname>org.hibernate.cfg.Configuration</classname> class is the first thing to notice. In this The <classname>org.hibernate.cfg.Configuration</classname> class is the first thing to notice. In this
tutorial everything is simply configured via the <filename>hibernate.cfg.xml</filename> file tutorial everything is simply configured via the <filename>hibernate.cfg.xml</filename> file
@ -233,12 +255,28 @@
<!-- todo : reference to a discussion in dev guide --> <!-- todo : reference to a discussion in dev guide -->
</para> </para>
<programlisting role="JAVA">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();</programlisting>
<para> <para>
<methodname>testBasicUsage</methodname> first creates some new <classname>Event</classname> objects <methodname>testBasicUsage</methodname> first creates some new <classname>Event</classname> objects
and hands them over to Hibernate for "management" via the <methodname>save</methodname> method. At that and hands them over to Hibernate for "management" via the <methodname>save</methodname> method. At that
point, Hibernate takes responsibility to perform an <literal>INSERT</literal> on the database. point, Hibernate takes responsibility to perform an <literal>INSERT</literal> on the database.
</para> </para>
<programlisting role="JAVA"><![CDATA[session = sessionFactory.openSession();
session.beginTransaction();
List result = session.createQuery( "from Event" ).list();
for ( Event event : (List<Event>) result ) {
System.out.println( "Event (" + event.getDate() + ") : " + event.getTitle() );
}
session.getTransaction().commit();
session.close();]]></programlisting>
<para> <para>
<methodname>testBasicUsage</methodname> then illustrates use of the Hibernate Query Language (HQL) to <methodname>testBasicUsage</methodname> then illustrates use of the Hibernate Query Language (HQL) to
load all existing <classname>Event</classname> objects from the database. Hibernate will generate the load all existing <classname>Event</classname> objects from the database. Hibernate will generate the