[Spring] Spring学习笔记--Spring + Hibernate
appcontext.xml
ProduceTypeDAO.java
package com.my.dome;
import java.util.List;
import org.hibernate.SessionFactory;
import
org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import com.my.db.RedaProduceType;
public class ProduceTypeDAO extends HibernateDaoSupport{
public List findAll(){
List list =
this.getHibernateTemplate().loadAll(RedaProduceType.class);
for(int i=0;i RedaProduceType redaProduceType = (RedaProduceType)
list.get(i);
System.out.println(redaProduceType.getId());
System.out.println(redaProduceType.getTypeName());
}
return list;
}
}
Test.java
package com.my.dome;
import java.util.List;
import org.hibernate.SessionFactory;
import org.springframework.context.ApplicationContext;
import
org.springframework.context.support.ClassPathXmlApplicationC
import com.my.db.RedaProduceType;
public class Test {
public static void main(String[] args) throws Exception {
ApplicationContext applicationContext = new
ClassPathXmlApplicationC
ProduceTypeDAO dao =
(ProduceTypeDAO)applicationContext.getBean("RedaProduceTypeDAOSpring
dao.findAll();
}
《精通Spring》书上的例子和《Spring
开发参考手册》都提到了Spring配置文件和DAO类的实现,却都没有给出测试类的调用代码。自己完成测试类的调用时,老是出错。
首先是Hibernate的版本困扰,Hibernate3较之Hibernate2整个package的目录由net.sf移至org包,Spring提供对Hibernate2和Hibernate3的支持。使用Hibernate3时,在编写Spring配置文件时要注意在sessionFactory
Bean的class是org.springframework.orm.hibernate3.LocalSessionFactoryBean,而不是org.springframework.orm.hibernate.LocalSessionFactoryBean。hibernate.dialect是org.hibernate.dialect.MySQLDialect,而不是net.sf.hibernate.dialect.MySQLDialect。包括HibernateDaoSupport,也需要指明是org.springframework.orm.hibernate3.support.HibernateDaoSupport而不是org.springframework.orm.hibernate.support.HibernateDaoSupport。
再者,测试类时,需要使用ApplicationContext装载Bean的实例,而不是通过BeanFactory装载。对于ApplicationContext而言,所有JavaBean实例都会被创建,而BeanFactory则只有在调用getBean才会被创建。如果使用BeanFactory则必须先调用getBean获取SessioinFactory实例,再获取DAO实例。
遗留的几个问题:
1)SpringIDE3.1.5与Eclipse3.2不匹配,MyEclipse4.1里带的SpringIDE与Eclipse3.1配合得倒是不错。
2)HibernateSyn3.1.9生成的DAO类,似乎只支持JDK5.0,要支持JDK1.4需要改写DAO模板文件。