/////////////////////////////////////////////////////////////////////////
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.commons.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);
}
}
|