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
- 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));
-
- }
-
- }
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
- <?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>
<?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来操做数据库。