|   | Emerging Technology Fall Semester, 2004 Hibernate Example | |
|---|---|---|
| © 2004, All Rights Reserved, SDSU & Roger Whitney San Diego State University -- This page last updated 11-Nov-04 | 
CS 683 Emerging Technologies Fall Semester, 2004 Doc 27 Hibernate Example
Using Database Sequence & Hibernate Properties
Copyright ©, All rights reserved. 2004 SDSU & Roger Whitney, 5500 Campanile Drive, San Diego, CA 92182-7700 USA. OpenContent ( http://www.opencontent.org/opl.shtml) license defines the copyright on this document.
| CS 683 Fall 04 | Doc 27, Hibernate Example Slide # 2 | 
Hibernate in Action, Bauer & King, Manning, 2005
| CS 683 Fall 04 | Doc 27, Hibernate Example Slide # 3 | 
Storing Person objects in table
| id | first_name | last_name | 
|  |  |  | 
CREATE TABLE PEOPLE (FIRST_NAME varchar(50) NULL , LAST_NAME varchar(50) NULL , ID int NOT NULL , PRIMARY KEY (id));
| CS 683 Fall 04 | Doc 27, Hibernate Example Slide # 4 | 
package sample;
   
public class People {
   String firstName;
   String lastName;
   long id;
   
   
   public People () {super(); }
   
   public People(String first, String last) {
      firstName = first;
      lastName = last;
   }
   
   public String getLastName() { return lastName; }
   
   public String getFirstName() { return firstName; }
   
   public void setFirstName( String name) { firstName = name; }
   
   public void setLastName( String name) { lastName = name; }
   
   public long getId() { return id; }
   
   public void setId(long l) {id = l; }
   
   public String toString() {return firstName + " " + lastName + id;}
}
| CS 683 Fall 04 | Doc 27, Hibernate Example Slide # 5 | 
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
   "-//Hibernate/Hibernate Mapping DTD//EN"
   "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd" >
   
<hibernate-mapping package="sample">
   <class
      name="People"
      table="people" >
      <id
         name="id"
         type="java.lang.Long"
         column="id" >
         <generator class="assigned"/>
      </id>
   
      <property
         name="lastName"
         column="last_name"
         type="string"
         not-null="false"
         length="50" />
      <property
         name="firstName"
         column="first_name"
         type="string"
         not-null="false"
         length="50" />
   </class>
</hibernate-mapping>
| CS 683 Fall 04 | Doc 27, Hibernate Example Slide # 6 | 
package sample;
   
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.List;
   
import net.sf.hibernate.HibernateException;
import net.sf.hibernate.MappingException;
import net.sf.hibernate.Query;
import net.sf.hibernate.Session;
import net.sf.hibernate.SessionFactory;
import net.sf.hibernate.Transaction;
import net.sf.hibernate.cfg.Configuration;
   
public class Main {
   public static void main(String[] args) throws Exception {
      sampleRead();
      sampleWrite();
   }
   
   public static Connection getJdbcConnection() throws Exception {
      String dbUrl = "jdbc:postgresql://localhost/glorpTests";
      String user = "whitney";
      String password = "secret";
      System.out.println("Load Driver!");
      Class.forName("org.postgresql.Driver");
      return DriverManager.getConnection( dbUrl, user, password);
   }
| CS 683 Fall 04 | Doc 27, Hibernate Example Slide # 7 | 
   static Session getHibernateSession() throws 
         MappingException, HibernateException, Exception {
   
      Configuration config = new Configuration();
      config.addClass(sample.People.class);
      config.setProperties(System.getProperties());
   
      SessionFactory sessions = config.buildSessionFactory();
      Session session = sessions.openSession(getJdbcConnection());
      return session;
   }
   
   static void sampleWrite() throws 
         MappingException, HibernateException, Exception {
      Session session = getHibernateSession();   
      Transaction save = session.beginTransaction();
      People newPerson = new People("Jack", "Frost");
      newPerson.setId(1);
      session.save(newPerson);
      newPerson = new People("Jack", "Ripper");
      newPerson.setId(2);
      session.save(newPerson);
      save.commit();
      session.close();
   }
| CS 683 Fall 04 | Doc 27, Hibernate Example Slide # 8 | 
   static void sampleRead() throws 
         MappingException, HibernateException, Exception {
      Session session = getHibernateSession();   
      Query getByLastName = 
         session.createQuery(
            "from People p where p.lastName = :var");
      getByLastName.setString("var", "Frost");
      List result = getByLastName.list();
      System.out.println("Number of Objects: " + result.size());
      People frost = (People) result.get( 0);
      System.out.println(frost);
      session.close();
   }
   
}
| CS 683 Fall 04 | Doc 27, Hibernate Example Slide # 9 | 
Directory sample contains:
Class path contains:
Where Hibernate is the location of your Hibernate installation.
| CS 683 Fall 04 | Doc 27, Hibernate Example Slide # 10 | 
| id | first_name | last_name | 
|  |  |  | 
CREATE TABLE PEOPLE (FIRST_NAME varchar(50) NULL , LAST_NAME varchar(50) NULL , ID serial NOT NULL , CONSTRAINT PEOPLE_PK PRIMARY KEY (id), CONSTRAINT PEOPLE_UNIQ UNIQUE (id))
Same as before
| CS 683 Fall 04 | Doc 27, Hibernate Example Slide # 11 | 
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
   "-//Hibernate/Hibernate Mapping DTD//EN"
   "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd" >
   
<hibernate-mapping package="sample">
   <class
      name="People"
      table="people" >
      <id
         name="id"
         type="java.lang.Long"
         column="id" >
         <generator class="increment"/>   <!-- Changed here -->
      </id>
   
      <property
         name="lastName"
         column="last_name"
         type="string"
         not-null="false"
         length="50" />
      <property
         name="firstName"
         column="first_name"
         type="string"
         not-null="false"
         length="50" />
   </class>
</hibernate-mapping>
| CS 683 Fall 04 | Doc 27, Hibernate Example Slide # 12 | 
Only changed methods from Main are shown
   public static void main(String[] args) throws Exception {
      sampleWrite();   
      sampleUpdate();
      sampleRead();
   }
   
   static void sampleWrite() throws MappingException, HibernateException,
         Exception {
      Session session = getHibernateSession();
      Transaction save = session.beginTransaction();
      People newPerson = new People("Roger", "Whitney");
      session.save(newPerson);      //Id is set automaticallly
      save.commit();
      session.close();
   }
   
   static void sampleUpdate() throws MappingException, HibernateException, 
         Exception {
      Session session = getHibernateSession();   
      System.out.println(session.isConnected());
      Transaction update = session.beginTransaction();
      Query getFrost = 
         session.createQuery("from People p where p.lastName = :var");
      getFrost.setString("var", "Frost");
      List result = getFrost.list();
      People frost = (People) result.get(0);
      frost.setFirstName("Roger");
      update.commit();
      session.close();
   }
| CS 683 Fall 04 | Doc 27, Hibernate Example Slide # 13 | 
   static void sampleRead() throws MappingException, HibernateException, 
         Exception {
      Session session = getHibernateSession();   
      Query getFrost =  session.createQuery(
            "from People p where p.lastName = :var1 and p.firstName = :var2" );
      getFrost.setString("var1", "Whitney");
      getFrost.setString("var2", "Roger");
      List result = getFrost.list();
      System.out.println("Number of Objects: " + result.size());
      System.out.println(result.get(0));
      session.close();
   }
   
static void sampleUpdate() throws MappingException, HibernateException, 
         Exception {
      Session session = getHibernateSession();   
      System.out.println(session.isConnected());
      Transaction update = session.beginTransaction();
      Query getFrost =  
         session.createQuery("from People p where p.lastName = :var");
      getFrost.setString("var", "Frost");
      List result = getFrost.list();
      People frost = (People) result.get(0);
      frost.setFirstName("Roger");
      update.commit();
      session.close();
   }
| CS 683 Fall 04 | Doc 27, Hibernate Example Slide # 14 | 
static Session getHibernateSession() throws MappingException, HibernateException, Exception {
      Configuration config = new Configuration();
      config.addClass(sample.People.class);
      config.setProperties(System.getProperties());
   
      SessionFactory sessions = config.buildSessionFactory();
      Session session = sessions.openSession();
      return session;
   }
CS 683 Fall 04 Doc 27, Hibernate Example Slide # 15 
## PostgreSQL hibernate.dialect net.sf.hibernate.dialect.PostgreSQLDialect hibernate.connection.driver_class org.postgresql.Driver hibernate.connection.url jdbc:postgresql:glorpTests hibernate.connection.username whitney hibernate.connection.password secret hibernate.query.substitutions yes 'Y' ########################### ### C3P0 Connection Pool### ########################### hibernate.connection.username=whitney hibernate.connection.password=secret hibernate.connection.url=jdbc:postgresql://localhost/glorpTests hibernate.connection.driver_class=org.postgresql.Driver hibernate.dialect=net.sf.hibernate.dialect.PostgreSQLDialect hibernate.c3p0.max_size 2 hibernate.c3p0.min_size 2 hibernate.c3p0.timeout 5000 hibernate.c3p0.max_statements 100 hibernate.c3p0.idle_test_period 3000 hibernate.c3p0.acquire_increment 2 hibernate.c3p0.validate false
Just the changes from the default are shown
| CS 683 Fall 04 | Doc 27, Hibernate Example Slide # 16 | 
### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
   
### direct messages to file hibernate.log ###
#log4j.appender.file=org.apache.log4j.FileAppender
#log4j.appender.file.File=hibernate.log
#log4j.appender.file.layout=org.apache.log4j.PatternLayout
#log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
   
### set log levels - for more verbose logging change 'info' to 'debug' ###
   
log4j.rootLogger=warn, stdout
   
log4j.logger.net.sf.hibernate=info
   
### log just the SQL
log4j.logger.net.sf.hibernate.SQL=debug
   
### log JDBC bind parameters ###
log4j.logger.net.sf.hibernate.type=info
   
### log schema export/update ###
log4j.logger.net.sf.hibernate.tool.hbm2ddl=debug
   
### log cache activity ###
#log4j.logger.net.sf.hibernate.cache=debug
   
### enable the following line if you want to track down connection ###
### leakages when using DriverManagerConnectionProvider ###
#log4j.logger.net.sf.hibernate.connection.DriverManagerConnectionProvider=trace
| CS 683 Fall 04 | Doc 27, Hibernate Example Slide # 17 | 
Directory sample contains:
Class path contains:
Properties
java -DpropertyFile
Where Hibernate is the location of your Hibernate installation.
Copyright ©, All rights reserved.
2004 SDSU & Roger Whitney, 5500 Campanile Drive, San Diego, CA 92182-7700 USA.
OpenContent license defines the copyright on this document.