spring提供访问数据库的有三种方式: HibernateDaoSupport,HibernateTemplate(推荐使用),jdbcTemplate
第一种方式HibernateDaoSupport 这种方式是spring为hibernate提供的dao工具类HibernateDaoSupport主要实现了
public final void setSessionFactory(SessionFactory sessionFactory)
public final SessionFactory getSessionFactory()
public final void setHibernateTemplate(HibernateTemplate hibernateTemplate)
public final HibernateTemplate getHibernateTemplate()
从它类里的方法可以知道,在使用的时候只需要将sessionFactory注入给HibernateDaoSupport,然后就可以通过getHibernateTemplate
来获得HibernateTemplate,这样就可以使用HibernateTemplate了,就和上面使用HibernateTemplate的一样的
(显然这有点绕了一点弯,个人感觉还是直接使用HibernateTemplate就可以了,不过根据个人喜好或项目的需求而定)
1、注入SessionFactory
在spring配置文件中,对Dao注入sessionFactory.比较简单。
如:
<beanid="UserInfoDao"class="com.hr2job.dao.impl.UserInfoDaoImpl">
<propertyname="sessionFactory"ref="sessionFactory"></property>
</bean>
这里的sessionFacotry注入不是给类的,而是给继承HibernateDaoSupport类的sessionFactory,在上面源码中可以看到。以前写SSH程序的时候就是用这个的,因为是不知道,这个好处就是我们不再需要关心关闭、是否连接成功等问题。主要是很方便。但是这个不好就是java只支持单继承,所以唯一的继承给了HibernateDaoSupport有点可惜。而且也没有必要这样做。
第二种方式hibernateTemplate
2、注入HibernateTemplate
这种方法本质上跟上面的sessionFacotry一样,只不过进行了一层包装,好处就是Dao中的类就不用再继承那个HibernateDaoSuport了,不过要先配置好HibernateTemplate:
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory">
<ref bean="sessionFactory"/>
</property>
</bean>
非常的方便,我现在就在用这个了。其实并没有改多少,就是曾经的sessionFactroy改成了hibernatemplate。
在程序中直接用就可以了,如下
@Component("u")
public class UserDaoImpl_HibernateTemplate implements UserDao {
private HibernateTemplate hibernateTemplate;
@Resource
public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
this.hibernateTemplate = hibernateTemplate;
}
public void save(User user) {
hibernateTemplate.save(user);
}}
第三种方式jdbcTemplate
转载:http://it.oyksoft.com/post/234/