Spring为Hibernate的DAO提供工具类:HibernateDaoSupport。该类主要提供了两个方法:
public final HibernateTemplate getHibernateTemplate()
public final void setSessionFactory(SessionFactory sessionFactory)
其中,setSessionFactory方法接收来自Spring的applicationContext的依赖注入,接收了配置在Spring中的SessionFactory实例,getHibernateTemplate方法用来利用刚才的SessionFactory生成Session,再生成HibernateTemplate来完成数据库的访问。
Dao 的支持类可以有好多,如: JdbcDaoSupport , HibernateDaoSupport ,JdoDaoSupport等,下面对最常用的HibernateDaoSupport与JdbcDaoSupport做一小总结:
一、在Spring框架中实现连接数据库方式:
1、、借助类HibernateDaoSupport的简约化实现:
借助这个类必须需要HIbernate框架,用到HIbernate里提供的HibernateTemplate模板,从而进行增、删、改、查操作。
TestA.java:
public class TestA extends HibernateDaoSupport{
public void test(){
HibernateTemplate template = this.getHibernateTemplate();
List list = template.find("from User");
for(int i=0;i<list.size();i++){
User u = (User)list.get(i);
System.out.println(u.getUserid()+" "+u.getEmail());
}
}
public static void main(String[] args) {
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
TestA t = (TestA)ctx.getBean("testa");
t.test();
}
}
public final HibernateTemplate getHibernateTemplate()
public final void setSessionFactory(SessionFactory sessionFactory)
其中,setSessionFactory方法接收来自Spring的applicationContext的依赖注入,接收了配置在Spring中的SessionFactory实例,getHibernateTemplate方法用来利用刚才的SessionFactory生成Session,再生成HibernateTemplate来完成数据库的访问。
Dao 的支持类可以有好多,如: JdbcDaoSupport , HibernateDaoSupport ,JdoDaoSupport等,下面对最常用的HibernateDaoSupport与JdbcDaoSupport做一小总结:
一、在Spring框架中实现连接数据库方式:
1、、借助类HibernateDaoSupport的简约化实现:
借助这个类必须需要HIbernate框架,用到HIbernate里提供的HibernateTemplate模板,从而进行增、删、改、查操作。
TestA.java:
public class TestA extends HibernateDaoSupport{
public void test(){
HibernateTemplate template = this.getHibernateTemplate();
List list = template.find("from User");
for(int i=0;i<list.size();i++){
User u = (User)list.get(i);
System.out.println(u.getUserid()+" "+u.getEmail());
}
}
public static void main(String[] args) {
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
TestA t = (TestA)ctx.getBean("testa");
t.test();
}
}
需要在Spring的配置文件applicationContext.xml中控制反转用到连接数据库中的类是注入SessionsFactory,如下:
applicationContext.xml:
<bean id="testa" class="com.sun.demo.TestA">
<property name="sessionFactory">
<ref bean="mySessionFactory"/>
</property>
</bean>
applicationContext.xml:
<bean id="testa" class="com.sun.demo.TestA">
<property name="sessionFactory">
<ref bean="mySessionFactory"/>
</property>
</bean>
2、、借助类JdbcDaoSupport的简约化实现:
借助这个类不需要HIbernate框架,也不需要有ORM的对象关联映射。但它和HibernateDaoSupport很类似,有JdbcTemplate来实现增、删、改、查操作。
TestA.java:
public class TestA extends JdbcDaoSupport{
public void test(){
int n = this.getJdbcTemplate().queryForInt("select max(userid) from User");
System.out.println(n);
}
public static void main(String[] args) {
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
TestA ta = (TestA)ctx.getBean("testa");
ta.test();
}
}
借助这个类不需要HIbernate框架,也不需要有ORM的对象关联映射。但它和HibernateDaoSupport很类似,有JdbcTemplate来实现增、删、改、查操作。
TestA.java:
public class TestA extends JdbcDaoSupport{
public void test(){
int n = this.getJdbcTemplate().queryForInt("select max(userid) from User");
System.out.println(n);
}
public static void main(String[] args) {
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
TestA ta = (TestA)ctx.getBean("testa");
ta.test();
}
}
需要在Spring的配置文件applicationContext.xml中控制反转用到连接数据库中的类是注入DataSource,如下:
applicationContext.xml:
<bean id="testa" class="com.sun.demo.TestA">
<property name="dataSource">
<ref bean="myDataSource"/>
</property>
</bean>
applicationContext.xml:
<bean id="testa" class="com.sun.demo.TestA">
<property name="dataSource">
<ref bean="myDataSource"/>
</property>
</bean>