Spring中HibernateDaoSupport和JdbcDaoSupport的使用

使用HibernateDaoSupport      

一、HibernateDaoSupport是Spring为Hibernate的DAO提供工具类。此类主要提供了两个方法:
1. public final HibernateTemplate getHibernateTemplate()
2. public final void setSessionFactory(SessionFactory sessionFactory)

其中,setSessionFactory方法接收来自Spring的applicationContext的依赖注入,接收了配置在Spring中的 SessionFactory实例,getHibernateTemplate方法用来利用刚才的SessionFactory生成Session,再生 成HibernateTemplate来完成数据库的访问。

二、一个典型的继承HibernateDaoSupport的DAO如下:

public class TestB extends HibernateDaoSupport{
        public void test1() {
                List list = getHibernateTemplate().find("from Userinfo");
                System.out.println(list.size());
        }
       
        public static void main(String[] args) {
                ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
                TestB t = (TestB) ac.getBean("testb");
                t.test1();
        }
}


相应的Spring的applicationContext.xml配置如下:
<?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="mySessionFaction"
                class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
                <property name="dataSource">
                        <ref bean="myDataSourse" />
                </property>
                <property name="hibernateProperties">
                        <props>
                                <prop key="hibernate.dialect">
                                        org.hibernate.dialect.MySQLDialect
                                </prop>
                        </props>
                </property>
                <property name="mappingResources">
                        <list>
                                <value>com/ori/demo/Userinfo.hbm.xml</value></list>
                </property>
</bean>
    <bean id="testb" class="com.ori.demo.TestB">
                <property name="sessionFactory">
<ref bean="mySessionFaction"/>
                </property>
</bean>
</beans>

这个过程中,其实DAO的实现依然借助了HibernateTemplate的模板访问方式。只是,HibernateDaoSupport将依赖注入 SessionFactory的工作已经完成,获取HibernateTemplate的工作也已经完成。注意,这种方法须在Spring的配置文件中配 置SessionFactory。

在继承HibrnateDaoSupport的DAO实现里,Hibernate Session的管理完全不需要Hibernate代码打开,而由Spring来管理。Spring会根据实际的操作,采用“每次事务打开一次 session”的策略,自动提高数据库访问的性能。

------------------------------------------------------------------------------------------------------------------------------------------------
使用JdbcDaoSupport
一、        下面一个例子通过例子来说明JdbcDaoSupport的使用:
写一个测试类(TestD):

public class TestD extends JdbcDaoSupport {
        public void test() {
                int count = this.getJdbcTemplate().queryForInt("select count(*) from userinfo");
                System.out.println(count);
        }
        public static void main(String[] args) {
                ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
                TestD t = (TestD) ac.getBean("testd");
                t.test();
        }
}


相应的Spring的applicationContext.xml配置如下:
<?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="myDataSourse"
                class="org.apache.commons.dbcp.BasicDataSource">
                <property name="driverClassName"
                        value="com.mysql.jdbc.Driver">
                </property>
                <property name="url"
                        value="jdbc:mysql://localhost:3306/test">
                </property>
                <property name="username" value="root"></property>
                <property name="password" value="root"></property>
        </bean>
        <bean id="testd" class="com.ori.demo.TestD">
                <property name="dataSource">
<ref bean="myDataSourse"/>
                </property>
        </bean>
</beans>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值