I have an application where in Iam using Tapestry - Hibernate - Spring.
Following are my Class files

BaseDAO.java
Code:
package jeevan.spring.dao;

import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.springframework.orm.hibernate3.SessionFactoryUtils;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

public class BaseDAO extends HibernateDaoSupport
{
	public Session openSession()
	{
		return SessionFactoryUtils.getSession(getSessionFactory(),false);
	}

	public Query getQuery(String query) throws HibernateException
	{
		Session session = this.openSession();
		return session.createQuery(query);
	}
}
FnuDAOImpl
Code:
package jeevan.spring.dao.impl;

import java.util.List;
import java.util.Vector;

import org.springframework.orm.hibernate3.HibernateTemplate;

import jeevan.spring.*;
import jeevan.spring.dao.BaseDAO;
import jeevan.spring.dao.IFnuDao;

public class FnuDAOImpl extends BaseDAO implements IFnuDao
{
	HibernateTemplate hibTemplate;
	
	public FnuDAOImpl()
	{
		hibTemplate = new HibernateTemplate();
	}
	
	public Vector getStatus()
	{
		Vector vStatus = new Vector(4, 4);

		CacheObject cObj = null;
		Status obj = null;
		System.out.println("Result Value");
		List result = hibTemplate.loadAll(Status.class);
			//this.getQuery("from Status ").list();
		
		System.out.println("Result Value"+result.size());
		for(int i=0; i < result.size();i++){
			obj = (Status)result.get(i);
			cObj = new CacheObject();
			cObj.setCacheId(obj.getId());
			cObj.setCacheCode(obj.getCode());
			vStatus.addElement(cObj);	
		} 
		
		return vStatus;
	}
}
Status.hbm.xml
Code:
<?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="jeevan.spring.Status" table="FNU_STATUS" dynamic-insert="false" dynamic-update="false">
	        
		<id name="id" column="STATUS_ID" type="long">
			<generator class="assigned"/>
		</id>
		<property name="code" column="STATUS_CODE"/>
	</class>
</hibernate-mapping>
applicationContext.xml
Code:
<?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="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
		<property name="hibernate.connection.driver_class">
			<value>oracle.jdbc.driver.OracleDriver</value>
		</property>
		<property name="hibernate.connection.url">
			<value>jdbc:oracle:thin:@192.168.1.18:1521:regac</value>
		</property>
		<property name="hibernate.connection.username">
			<value>fnur</value>
		</property>
		<property name="hibernate.connection.password">
			<value>fnur</value>
		</property>
		<property name="current_session_context_class">
			<value>thread</value>
		</property>
		<property name="cache.provider_class">
			<value>org.hibernate.cache.NoCacheProvider</value>
		</property>
		<property name="show_sql">
			<value>true</value>
		</property>
		<property name="hibernate.dialect">
			<value>org.hibernate.dialect.Oracle9Dialect</value>
		</property>
		<property name="mappingResources">
			<list>
				<value>jeevan/spring/Status.hbm.xml</value>
			</list>
		</property>
	</bean>
	
	<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
		<property name="sessionFactory">
			<ref bean="sessionFactory"/>
		</property>
	</bean>
	
	<bean id="userDAO" class="jeevan.spring.dao.impl.FnuDAOImpl">
		<property name="hibernateTemplate">
			<ref local="hibernateTemplate" />
		</property>
	</bean>
	
</beans>
Status.java
Code:
package jeevan.spring;

import java.io.Serializable;

public class Status implements Serializable
{
	private static final long serialVersionUID = 7526472295622776147L;
	private long _id;
	private String _code;

	public Status()
	{
		_id = Integer.MIN_VALUE;
		_code = ""; 
	}

	public long getId()
	{
		return _id;
	}

	public void setId(long Value)
	{
		_id = Value;
	}

	public String getCode()
	{
		return _code;
	}

	public void setCode(String Value)
	{
		_code = Value;
	}
	
	public void print()
	{
		System.out.println("StatusId = " + _id);
		System.out.println("StatusCode = " + _code);
	}

}
IFnuDAO.java
Code:
package jeevan.spring.dao;

import java.util.Vector;

public interface IFnuDao
{
	public Vector getStatus();
}
TestJava.java
Code:
package jeevan;
import java.util.Vector;

import jeevan.spring.dao.IFnuDao;
import jeevan.spring.dao.impl.FnuDAOImpl;

public class TestJava
{
	Vector vStatus;
	
	public static void main(String srgs[])
	{
		IFnuDao fnuDao = new FnuDAOImpl();
		
		System.out.println(fnuDao.getStatus().size());
	}
}
While running TestJava.java file I am getting the following error message:
Code:
Result Value
java.lang.IllegalArgumentException: No SessionFactory specified
	at org.springframework.util.Assert.notNull(Assert.java:90)
	at org.springframework.orm.hibernate3.SessionFactoryUtils.doGetSession(SessionFactoryUtils.java:293)
	at org.springframework.orm.hibernate3.SessionFactoryUtils.getSession(SessionFactoryUtils.java:194)
	at jeevan.spring.dao.BaseDAO.openSession(BaseDAO.java:13)
	at jeevan.spring.dao.BaseDAO.getQuery(BaseDAO.java:18)
	at jeevan.spring.dao.impl.FnuDAOImpl.getStatus(FnuDAOImpl.java:28)
	at jeevan.TestJava.main(TestJava.java:15)
Exception in thread "main"