|
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.