hibernateDaoSupport和JdbcDaoSupport的使用

1.HibernateDaoSupport的使用:html

 

1、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来完成数据库的访问。java

 

二. 一个小例子:spring

 

  1. package test;  
  2.   
  3. import java.util.List;  
  4.   
  5. import org.springframework.context.ApplicationContext;  
  6. import org.springframework.context.support.ClassPathXmlApplicationContext;  
  7. import org.springframework.orm.hibernate3.support.HibernateDaoSupport;  
  8.   
  9. import cn.ccb.clpm.common.model.bo.documentservice.ObjectDocRelationshipBO;  
  10.   
  11. public class HibernateDaoSupportTest extends HibernateDaoSupport {  
  12.   
  13.     public void test1() {  
  14.         List list = getHibernateTemplate().find("from ObjectDocRelationshipBO o where o.relationId = 1000000068");  
  15.         System.out.println(((ObjectDocRelationshipBO)list.get(0)).getCustomerNum());  
  16.     }  
  17.   
  18.     public static void main(String[] args) {  
  19.         ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext-daoSupport-test.xml");  
  20.         HibernateDaoSupportTest t = (HibernateDaoSupportTest)ac.getBean("test");  
  21.         t.test1();  
  22. //      t.getHibernateTemplate().save((ObjectDocRelationshipBO)list.get(0));   
  23.           
  24.     }  
  25.   
  26. }  
package test; import java.util.List; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import cn.ccb.clpm.common.model.bo.documentservice.ObjectDocRelationshipBO; public class HibernateDaoSupportTest extends HibernateDaoSupport { public void test1() { List list = getHibernateTemplate().find("from ObjectDocRelationshipBO o where o.relationId = 1000000068"); System.out.println(((ObjectDocRelationshipBO)list.get(0)).getCustomerNum()); } public static void main(String[] args) { ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext-daoSupport-test.xml"); HibernateDaoSupportTest t = (HibernateDaoSupportTest)ac.getBean("test"); t.test1(); // t.getHibernateTemplate().save((ObjectDocRelationshipBO)list.get(0)); } }

 

配置文件:sql

  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">  
  3. <beans>  
  4.          
  5.         <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">  
  6.         <property name="dataSource">  
  7.             <ref bean="jndiDataSource"/>  
  8.         </property>  
  9.         <property name="hibernateProperties">  
  10.             <props>  
  11.                 <prop key="hibernate.dialect">  
  12.                     org.hibernate.dialect.Oracle9Dialect  
  13.                 </prop>  
  14.                 <prop key="hibernate.show_sql">  
  15.                     true  
  16.                 </prop>  
  17.                 <prop key="hibernate.format_sql">  
  18.                     true  
  19.                 </prop>  
  20.                 <prop key="hibernate.query.factory_class">  
  21.                      org.hibernate.hql.classic.ClassicQueryTranslatorFactory  
  22.                 </prop>  
  23.             </props>  
  24.         </property>  
  25.         <property name="mappingResources">  
  26.             <list>  
  27.                <value>/cn/ccb/clpm/common/model/bo/documentservice/DocIndexBO.hbm.xml</value>  
  28.                <value>/cn/ccb/clpm/common/model/bo/documentservice/ObjectDocRelationshipBO.hbm.xml</value>  
  29.                <value>/cn/ccb/clpm/common/model/bo/documentservice/RawMaterialBO.hbm.xml</value>  
  30.             </list>     
  31.         </property>  
  32.              
  33.         </bean>  
  34.           
  35.         <bean id="test" class="test.HibernateDaoSupportTest">  
  36.                 <property name="sessionFactory">  
  37.                      <ref bean="sessionFactory"/>  
  38.                 </property>  
  39.         </bean>  
  40.   
  41.     <bean id="jndiDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">  
  42.         <property name="driverClassName">  
  43.             <value>oracle.jdbc.driver.OracleDriver</value>  
  44.         </property>  
  45.         <property name="url">  
  46.             <value>jdbc:oracle:thin:@128.64.96.28:1521:clpmkfdb</value>  
  47.         </property>  
  48.         <property name="username">  
  49.             <value>clpmtest</value>  
  50.         </property>  
  51.         <property name="password">  
  52.             <value>clpmtest</value>  
  53.         </property>  
  54.     </bean>     
  55.   
  56. </beans>  
<?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="dataSource"> <ref bean="jndiDataSource"/> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect"> org.hibernate.dialect.Oracle9Dialect </prop> <prop key="hibernate.show_sql"> true </prop> <prop key="hibernate.format_sql"> true </prop> <prop key="hibernate.query.factory_class"> org.hibernate.hql.classic.ClassicQueryTranslatorFactory </prop> </props> </property> <property name="mappingResources"> <list> <value>/cn/ccb/clpm/common/model/bo/documentservice/DocIndexBO.hbm.xml</value> <value>/cn/ccb/clpm/common/model/bo/documentservice/ObjectDocRelationshipBO.hbm.xml</value> <value>/cn/ccb/clpm/common/model/bo/documentservice/RawMaterialBO.hbm.xml</value> </list> </property> </bean> <bean id="test" class="test.HibernateDaoSupportTest"> <property name="sessionFactory"> <ref bean="sessionFactory"/> </property> </bean> <bean id="jndiDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName"> <value>oracle.jdbc.driver.OracleDriver</value> </property> <property name="url"> <value>jdbc:oracle:thin:@128.64.96.28:1521:clpmkfdb</value> </property> <property name="username"> <value>clpmtest</value> </property> <property name="password"> <value>clpmtest</value> </property> </bean> </beans>

 

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

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

 

2. JdbcDaoSupport的使用:session

 

借助这个类不须要HIbernate框架,也不须要有ORM的对象关联映射。但它和HibernateDaoSupport很相似,有JdbcTemplate来实现增、删、改、查操做。oracle

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();
 }
} app

须要在Spring的配置文件applicationContext.xml中控制反转用到链接数据库中的类是注入DataSource,以下:
applicationContext.xml:
        <bean id="testa" class="com.sun.demo.TestA">
        <property name="dataSource">
        <ref bean="myDataSource"/>
        </property>
        </bean>

*******************************************************************************框架

 

其中还有点区别就是: HibernateDaoSupport是使用HQL语言来查询的,而JdbcDaoSupport则是使用SQL来查询,能够工具

更加简单方便的使用咱们日常的SQL来操做数据库。

相关文章
相关标签/搜索