Java/Hibernate/Spring Hibernate

Материал из Java эксперт
Перейти к: навигация, поиск

Hibernate Spring Environment Setup

Hibernate Spring Hibernate Callback Demo

/////////////////////////////////////////////////////////////////////////
import java.util.*;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.orm.hibernate3.HibernateCallback;
import java.sql.*;
import org.hibernate.*;
import org.hibernate.criterion.*;
public class Main {
  
  
  public static void main(String[] args) {
    HibernateUtil.setup("create table EVENTS ( uid int, name VARCHAR, start_Date date, duration int);");
    
    // hibernate code start
        HibernateFactory.buildSessionFactory();
        SessionFactory sessionFactory= HibernateFactory.getSessionFactory();
        HibernateTemplate template= new HibernateTemplate(sessionFactory);

        Event event1 = new Event("Event 1");
        Event event2 = new Event("Event 2");
        Event event3 = new Event("Event 3");
        
        template.save(event1);
        template.save(event2);
        template.save(event3);
        List results = template.executeFind(new HibernateCallback() {
            public Object doInHibernate(Session session) throws HibernateException, SQLException {
                Query query = session.createQuery("from Event");
                query.setMaxResults(2);
                return query.list();
            }
        });
        System.out.println(results.size());
        
        HibernateUtil.checkData("select uid, name from events");        
        HibernateFactory.closeFactory();
        
    // hibernate code end
  }
  
}

/////////////////////////////////////////////////////////////////////////
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping >
    <class name="Event" table="events">
        <id name="id" column="uid" type="long">
            <generator class="increment"/>
        </id>
        <property name="name" type="string"/>
        <property name="startDate" column="start_date" type="date"/>
        <property name="duration" type="integer"/>
    </class>
</hibernate-mapping>


/////////////////////////////////////////////////////////////////////////
import java.io.Serializable;
import java.util.Date;
import java.util.Set;
import java.util.LinkedHashSet;
public class Event implements Serializable {
    private Long id;
    private int duration;
    private String name;
    private Date startDate;
    public Event() {
    }
    public Event(String name) {
        this.name = name;
    }
    /**
     * @hibernate.id generator-class="native" column="uid"
     * @return
     */
    public Long getId() { return id; }
    public void setId(Long id) { this.id = id; }
    /**
     * @hibernate.property column="name"
     * @return
     */
    public String getName() { return name; }
    public void setName(String name) { this.name = name;   }
    /**
     * @hibernate.property column="start_date"
     * @return
     */
    public Date getStartDate() { return startDate; }
    public void setStartDate(Date startDate) { this.startDate = startDate; }
    /**
     * @hibernate.property column="duration"
     * @return
     */
    public int getDuration() { return duration; }
    public void setDuration(int duration) { this.duration = duration; }
}

/////////////////////////////////////////////////////////////////////////
/**
 * Represents Exceptions thrown by the Data Access Layer.
 */
public class DataAccessLayerException extends RuntimeException {
    public DataAccessLayerException() {
    }
    public DataAccessLayerException(String message) {
        super(message);
    }
    public DataAccessLayerException(Throwable cause) {
        super(cause);
    }
    public DataAccessLayerException(String message, Throwable cause) {
        super(message, cause);
    }
}





Hibernate Spring Hibernate Template Find

/////////////////////////////////////////////////////////////////////////
import java.util.*;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.hibernate.*;
import org.hibernate.criterion.*;
public class Main {
  
  
  public static void main(String[] args) {
    HibernateUtil.setup("create table EVENTS ( uid int, name VARCHAR, start_Date date, duration int);");
    
    // hibernate code start
        HibernateFactory.buildSessionFactory();
        SessionFactory sessionFactory= HibernateFactory.getSessionFactory();
        HibernateTemplate template= new HibernateTemplate(sessionFactory);

        Event event1 = new Event();
        event1.setName("Event 1");
        Event event2 = new Event();
        event2.setName("Event 2");
        template.save(event1);
        template.save(event2);
        List events = (List) template.find("from Event");
        System.out.println(events.size() >= 2);
        
        HibernateUtil.checkData("select uid, name from events");        
        HibernateFactory.closeFactory();
        
    // hibernate code end
  }
  
}

/////////////////////////////////////////////////////////////////////////
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping >
    <class name="Event" table="events">
        <id name="id" column="uid" type="long">
            <generator class="increment"/>
        </id>
        <property name="name" type="string"/>
        <property name="startDate" column="start_date" type="date"/>
        <property name="duration" type="integer"/>
    </class>
</hibernate-mapping>


/////////////////////////////////////////////////////////////////////////
import java.io.Serializable;
import java.util.Date;
import java.util.Set;
import java.util.LinkedHashSet;
public class Event implements Serializable {
    private Long id;
    private int duration;
    private String name;
    private Date startDate;
    public Event() {
    }
    public Event(String name) {
        this.name = name;
    }
    /**
     * @hibernate.id generator-class="native" column="uid"
     * @return
     */
    public Long getId() { return id; }
    public void setId(Long id) { this.id = id; }
    /**
     * @hibernate.property column="name"
     * @return
     */
    public String getName() { return name; }
    public void setName(String name) { this.name = name;   }
    /**
     * @hibernate.property column="start_date"
     * @return
     */
    public Date getStartDate() { return startDate; }
    public void setStartDate(Date startDate) { this.startDate = startDate; }
    /**
     * @hibernate.property column="duration"
     * @return
     */
    public int getDuration() { return duration; }
    public void setDuration(int duration) { this.duration = duration; }
}

/////////////////////////////////////////////////////////////////////////
/**
 * Represents Exceptions thrown by the Data Access Layer.
 */
public class DataAccessLayerException extends RuntimeException {
    public DataAccessLayerException() {
    }
    public DataAccessLayerException(String message) {
        super(message);
    }
    public DataAccessLayerException(Throwable cause) {
        super(cause);
    }
    public DataAccessLayerException(String message, Throwable cause) {
        super(message, cause);
    }
}

/////////////////////////////////////////////////////////////////////////
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <!-- Database connection settings -->
        <property name="connection.driver_class">org.hsqldb.jdbcDriver</property>
        <property name="connection.url">jdbc:hsqldb:data/tutorial</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.HSQLDialect</property>
        <!-- Echo all executed SQL to stdout -->
        <property name="show_sql">true</property>
        <mapping resource="Event.hbm.xml"/>
    </session-factory>
</hibernate-configuration>

/////////////////////////////////////////////////////////////////////////





Spring Dao Demo

/////////////////////////////////////////////////////////////////////////
import java.util.*;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.hibernate.*;
import org.hibernate.criterion.*;
public class Main {
  
  
  public static void main(String[] args) {
    HibernateUtil.setup("create table EVENTS ( uid int, name VARCHAR, start_Date date, duration int);");
    
    // hibernate code start
        ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("context.xml");
        EventSpringDao eventDao = (EventSpringDao) ctx.getBean("eventDao", EventSpringDao.class);
        Event event = new Event();
        event.setName("Name");
        eventDao.saveOrUpdate(event);

        HibernateUtil.checkData("select uid, name from events");        
        eventDao.delete(event);        
        
    // hibernate code end
  }
  
}

/////////////////////////////////////////////////////////////////////////
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import java.util.List;
public abstract class AbstractSpringDao  extends HibernateDaoSupport{
    public AbstractSpringDao() { }
    protected void saveOrUpdate(Object obj) {
        getHibernateTemplate().saveOrUpdate(obj);
    }
    protected void delete(Object obj) {
        getHibernateTemplate().delete(obj);
    }
    protected Object find(Class clazz, Long id) {
        return getHibernateTemplate().load(clazz, id);
    }
    protected List findAll(Class clazz) {
        return getHibernateTemplate().find("from " + clazz.getName());
    }
}


/////////////////////////////////////////////////////////////////////////
import java.util.List;
public class EventSpringDao extends AbstractSpringDao{
    public EventSpringDao(){}
    public Event find(Long id){
        return (Event) super.find(Event.class, id);
    }
    public void saveOrUpdate(Event event){
        super.saveOrUpdate(event);
    }
    public void delete(Event event){
        super.delete(event);
    }
    public List findAll(){
        return super.findAll(Event.class);
    }
}

/////////////////////////////////////////////////////////////////////////
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping >
    <class name="Event" table="events">
        <id name="id" column="uid" type="long">
            <generator class="increment"/>
        </id>
        <property name="name" type="string"/>
        <property name="startDate" column="start_date" type="date"/>
        <property name="duration" type="integer"/>
    </class>
</hibernate-mapping>


/////////////////////////////////////////////////////////////////////////
import java.io.Serializable;
import java.util.Date;
import java.util.Set;
import java.util.LinkedHashSet;
public class Event implements Serializable {
    private Long id;
    private int duration;
    private String name;
    private Date startDate;
    public Event() {
    }
    public Event(String name) {
        this.name = name;
    }
    /**
     * @hibernate.id generator-class="native" column="uid"
     * @return
     */
    public Long getId() { return id; }
    public void setId(Long id) { this.id = id; }
    /**
     * @hibernate.property column="name"
     * @return
     */
    public String getName() { return name; }
    public void setName(String name) { this.name = name;   }
    /**
     * @hibernate.property column="start_date"
     * @return
     */
    public Date getStartDate() { return startDate; }
    public void setStartDate(Date startDate) { this.startDate = startDate; }
    /**
     * @hibernate.property column="duration"
     * @return
     */
    public int getDuration() { return duration; }
    public void setDuration(int duration) { this.duration = duration; }
}

/////////////////////////////////////////////////////////////////////////
/**
 * Represents Exceptions thrown by the Data Access Layer.
 */
public class DataAccessLayerException extends RuntimeException {
    public DataAccessLayerException() {
    }
    public DataAccessLayerException(String message) {
        super(message);
    }
    public DataAccessLayerException(Throwable cause) {
        super(cause);
    }
    public DataAccessLayerException(String message, Throwable cause) {
        super(message, cause);
    }
}





Spring Dao Injection

/////////////////////////////////////////////////////////////////////////
import java.util.*;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.orm.hibernate3.HibernateCallback;
import java.sql.*;
import org.hibernate.*;
import org.hibernate.criterion.*;
public class Main {
  
  
  public static void main(String[] args) {
    HibernateUtil.setup("create table EVENTS ( uid int, name VARCHAR, start_Date date, duration int);");
    
    // hibernate code start
        EventSpringDao eventDao = null;
        Event event = new Event();
        event.setName("Name");
        eventDao = DaoRegistry.getEventDao();
        eventDao.saveOrUpdate(event);
        
        HibernateUtil.checkData("select uid, name from events");        
        
    // hibernate code end
  }
  
}

/////////////////////////////////////////////////////////////////////////
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.hibernate.SessionFactory;
public class DaoRegistry {
    private static ApplicationContext ctx;
    static {
        ctx = new ClassPathXmlApplicationContext("context.xml");
    }
    /**
     * Private to make this a singleton.
     */
    private DaoRegistry(){
    }
    public static SessionFactory getSessionFactory(){
        return (SessionFactory) ctx.getBean("factory", SessionFactory.class);
    }
    public static EventSpringDao getEventDao(){
        return (EventSpringDao)ctx.getBean("eventDao", EventSpringDao.class);
    }
}


/////////////////////////////////////////////////////////////////////////
import java.util.List;
public class EventSpringDao extends AbstractSpringDao{
    public EventSpringDao(){}
    public Event find(Long id){
        return (Event) super.find(Event.class, id);
    }
    public void saveOrUpdate(Event event){
        super.saveOrUpdate(event);
    }
    public void delete(Event event){
        super.delete(event);
    }
    public List findAll(){
        return super.findAll(Event.class);
    }
}

/////////////////////////////////////////////////////////////////////////
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import java.util.List;
public abstract class AbstractSpringDao  extends HibernateDaoSupport{
    public AbstractSpringDao() { }
    protected void saveOrUpdate(Object obj) {
        getHibernateTemplate().saveOrUpdate(obj);
    }
    protected void delete(Object obj) {
        getHibernateTemplate().delete(obj);
    }
    protected Object find(Class clazz, Long id) {
        return getHibernateTemplate().load(clazz, id);
    }
    protected List findAll(Class clazz) {
        return getHibernateTemplate().find("from " + clazz.getName());
    }
}

/////////////////////////////////////////////////////////////////////////

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
    <bean id="dataSource" class="org.apache.rumons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName">
            <value>org.hsqldb.jdbcDriver</value>
        </property>
        <property name="url">
            <value>jdbc:hsqldb:data/tutorial</value>
        </property>
        <property name="username">
            <value>sa</value>
        </property>
        <property name="password">
            <value></value>
        </property>
    </bean>
    <bean id="factory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <property name="mappingResources">
            <list>
                <value>Event.hbm.xml</value>
            </list>
        </property>
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.HSQLDialect</prop>
                <prop key="hibernate.show_sql">false</prop>
            </props>
        </property>
        <property name="dataSource">
            <ref bean="dataSource"/>
        </property>
    </bean>
    <bean id="eventDao" class="EventSpringDao">
        <property name="sessionFactory">
            <ref bean="factory" />
        </property>
    </bean>
</beans>
/////////////////////////////////////////////////////////////////////////
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <!-- Database connection settings -->
        <property name="connection.driver_class">org.hsqldb.jdbcDriver</property>
        <property name="connection.url">jdbc:hsqldb:data/tutorial</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.HSQLDialect</property>
        <!-- Echo all executed SQL to stdout -->
        <property name="show_sql">true</property>
        <mapping resource="Event.hbm.xml"/>
    </session-factory>
</hibernate-configuration>
/////////////////////////////////////////////////////////////////////////
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping >
    <class name="Event" table="events">
        <id name="id" column="uid" type="long">
            <generator class="increment"/>
        </id>
        <property name="name" type="string"/>
        <property name="startDate" column="start_date" type="date"/>
        <property name="duration" type="integer"/>
    </class>
</hibernate-mapping>


/////////////////////////////////////////////////////////////////////////
import java.io.Serializable;
import java.util.Date;
import java.util.Set;
import java.util.LinkedHashSet;
public class Event implements Serializable {
    private Long id;
    private int duration;
    private String name;
    private Date startDate;
    public Event() {
    }
    public Event(String name) {
        this.name = name;
    }
    /**
     * @hibernate.id generator-class="native" column="uid"
     * @return
     */
    public Long getId() { return id; }
    public void setId(Long id) { this.id = id; }
    /**
     * @hibernate.property column="name"
     * @return
     */
    public String getName() { return name; }
    public void setName(String name) { this.name = name;   }
    /**
     * @hibernate.property column="start_date"
     * @return
     */
    public Date getStartDate() { return startDate; }
    public void setStartDate(Date startDate) { this.startDate = startDate; }
    /**
     * @hibernate.property column="duration"
     * @return
     */
    public int getDuration() { return duration; }
    public void setDuration(int duration) { this.duration = duration; }
}

/////////////////////////////////////////////////////////////////////////
/**
 * Represents Exceptions thrown by the Data Access Layer.
 */
public class DataAccessLayerException extends RuntimeException {
    public DataAccessLayerException() {
    }
    public DataAccessLayerException(String message) {
        super(message);
    }
    public DataAccessLayerException(Throwable cause) {
        super(cause);
    }
    public DataAccessLayerException(String message, Throwable cause) {
        super(message, cause);
    }
}





Spring Hibernate Template Execute

/////////////////////////////////////////////////////////////////////////
import java.util.*;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.orm.hibernate3.HibernateCallback;
import java.sql.*;
import org.hibernate.*;
import org.hibernate.criterion.*;
public class Main {
  
  
  public static void main(String[] args) {
    HibernateUtil.setup("create table EVENTS ( uid int, name VARCHAR, start_Date date, duration int);");
    
    // hibernate code start
        HibernateFactory.buildSessionFactory();
        SessionFactory sessionFactory= HibernateFactory.getSessionFactory();
        HibernateTemplate template= new HibernateTemplate(sessionFactory);

        Event event1 = new Event("Event 1");
        Event event2 = new Event("Event 2");
        Event event3 = new Event("Event 3");
        template.save(event1);
        template.save(event2);
        template.save(event3);
        template.execute(new HibernateCallback() {
            public Object doInHibernate(Session session) throws HibernateException, SQLException {
                Query query = session.createQuery("from Event");
                query.setMaxResults(2);
                List events = query.list();
                for (Iterator it = events.iterator(); it.hasNext();) {
                    Event event = (Event) it.next();
                    System.out.println(event.getName());
                    event.setDuration(60);
                }
                return null;
            }
        });
        
        HibernateUtil.checkData("select uid, name from events");        
        HibernateFactory.closeFactory();
        
    // hibernate code end
  }
  
}

/////////////////////////////////////////////////////////////////////////
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping >
    <class name="Event" table="events">
        <id name="id" column="uid" type="long">
            <generator class="increment"/>
        </id>
        <property name="name" type="string"/>
        <property name="startDate" column="start_date" type="date"/>
        <property name="duration" type="integer"/>
    </class>
</hibernate-mapping>


/////////////////////////////////////////////////////////////////////////

import java.io.Serializable;
import java.util.Date;
import java.util.Set;
import java.util.LinkedHashSet;
public class Event implements Serializable {
    private Long id;
    private int duration;
    private String name;
    private Date startDate;
    public Event() {
    }
    public Event(String name) {
        this.name = name;
    }
    /**
     * @hibernate.id generator-class="native" column="uid"
     * @return
     */
    public Long getId() { return id; }
    public void setId(Long id) { this.id = id; }
    /**
     * @hibernate.property column="name"
     * @return
     */
    public String getName() { return name; }
    public void setName(String name) { this.name = name;   }
    /**
     * @hibernate.property column="start_date"
     * @return
     */
    public Date getStartDate() { return startDate; }
    public void setStartDate(Date startDate) { this.startDate = startDate; }
    /**
     * @hibernate.property column="duration"
     * @return
     */
    public int getDuration() { return duration; }
    public void setDuration(int duration) { this.duration = duration; }
}

/////////////////////////////////////////////////////////////////////////

/**
 * Represents Exceptions thrown by the Data Access Layer.
 */
public class DataAccessLayerException extends RuntimeException {
    public DataAccessLayerException() {
    }
    public DataAccessLayerException(String message) {
        super(message);
    }
    public DataAccessLayerException(Throwable cause) {
        super(cause);
    }
    public DataAccessLayerException(String message, Throwable cause) {
        super(message, cause);
    }
}

/////////////////////////////////////////////////////////////////////////
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <!-- Database connection settings -->
        <property name="connection.driver_class">org.hsqldb.jdbcDriver</property>
        <property name="connection.url">jdbc:hsqldb:data/tutorial</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.HSQLDialect</property>
        <!-- Echo all executed SQL to stdout -->
        <property name="show_sql">true</property>
        <mapping resource="Event.hbm.xml"/>
    </session-factory>
</hibernate-configuration>

/////////////////////////////////////////////////////////////////////////





Spring Hibernate Template Save Or Update

/////////////////////////////////////////////////////////////////////////
import java.util.*;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.hibernate.*;
import org.hibernate.criterion.*;
public class Main {
  
  
  public static void main(String[] args) {
    HibernateUtil.setup("create table EVENTS ( uid int, name VARCHAR, start_Date date, duration int);");
    
    // hibernate code start
        HibernateFactory.buildSessionFactory();
        SessionFactory sessionFactory= HibernateFactory.getSessionFactory();
        HibernateTemplate template= new HibernateTemplate(sessionFactory);

        Event event = new Event();
        event.setName("Spring Hibernate Template");
        template.saveOrUpdate(event);
        Event obj = (Event) template.load(Event.class, event.getId());
        HibernateUtil.checkData("select uid, name from events");        
        HibernateFactory.closeFactory();
        
    // hibernate code end
  }
  
}

/////////////////////////////////////////////////////////////////////////
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping >
    <class name="Event" table="events">
        <id name="id" column="uid" type="long">
            <generator class="increment"/>
        </id>
        <property name="name" type="string"/>
        <property name="startDate" column="start_date" type="date"/>
        <property name="duration" type="integer"/>
    </class>
</hibernate-mapping>


/////////////////////////////////////////////////////////////////////////

import java.io.Serializable;
import java.util.Date;
import java.util.Set;
import java.util.LinkedHashSet;
public class Event implements Serializable {
    private Long id;
    private int duration;
    private String name;
    private Date startDate;
    public Event() {
    }
    public Event(String name) {
        this.name = name;
    }
    /**
     * @hibernate.id generator-class="native" column="uid"
     * @return
     */
    public Long getId() { return id; }
    public void setId(Long id) { this.id = id; }
    /**
     * @hibernate.property column="name"
     * @return
     */
    public String getName() { return name; }
    public void setName(String name) { this.name = name;   }
    /**
     * @hibernate.property column="start_date"
     * @return
     */
    public Date getStartDate() { return startDate; }
    public void setStartDate(Date startDate) { this.startDate = startDate; }
    /**
     * @hibernate.property column="duration"
     * @return
     */
    public int getDuration() { return duration; }
    public void setDuration(int duration) { this.duration = duration; }
}

/////////////////////////////////////////////////////////////////////////

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <!-- Database connection settings -->
        <property name="connection.driver_class">org.hsqldb.jdbcDriver</property>
        <property name="connection.url">jdbc:hsqldb:data/tutorial</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.HSQLDialect</property>
        <!-- Echo all executed SQL to stdout -->
        <property name="show_sql">true</property>
        <mapping resource="Event.hbm.xml"/>
    </session-factory>
</hibernate-configuration>
/////////////////////////////////////////////////////////////////////////
/**
 * Represents Exceptions thrown by the Data Access Layer.
 */
public class DataAccessLayerException extends RuntimeException {
    public DataAccessLayerException() {
    }
    public DataAccessLayerException(String message) {
        super(message);
    }
    public DataAccessLayerException(Throwable cause) {
        super(cause);
    }
    public DataAccessLayerException(String message, Throwable cause) {
        super(message, cause);
    }
}


/////////////////////////////////////////////////////////////////////////