现在的位置: 首页 > 综合 > 正文

配置DataSource方法(BasicDataSource为例) 和 具体的数据库操作(HibernateDaoSupport、HibernateTemplate和jdbcTemplate)

2013年10月28日 ⁄ 综合 ⁄ 共 3860字 ⁄ 字号 评论关闭

1、直接在xml文件中写入value值(不好

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">  
    <property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver" />  
    <property name="url" value="jdbc:sqlserver://localhost:1433;DatabaseName=spring" />  
    <property name="username" value="sa" />  
    <property name="password" value="********" />  
</bean>  

2、结合properties文件,分离value值和xml文件(目前项目中普遍使用的,较好

<bean id="mappings" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
    <property name="locations" value="classpath:jdbc.properties"></property> 
</bean> 
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    <property name="driverClassName" value="${jdbc.driverClassName}" />
    <property name="url" value="${jdbc.url}" />
    <property name="username" value="${jdbc.username}" />
    <property name="password" value="${jdbc.password}" />
</bean>

3、这种方法和方法1是同样的思路(并不好

<bean id="mappings" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
   <!-- typed as a java.util.Properties -->
   <property name="properties">
       <value>
          jdbc.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
          jdbc.url=jdbc:sqlserver://localhost:1433;DatabaseName=spring
          jdbc.username=sa
          jdbc.password=********
       </value>
   </property>
</bean>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    <property name="driverClassName" value="${jdbc.driverClassName}" />
    <property name="url" value="${jdbc.url}" />
    <property name="username" value="${jdbc.username}" />
    <property name="password" value="${jdbc.password}" />
</bean>

4、使用命名空间

<bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"
    p:driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
    p:url="jdbc:sqlserver://localhost:1433;DatabaseName=spring"
    p:username="sa"
    p:password="********"/>









xmlns:p=http://www.springframework.org/schema/p  -- 需要加上这个命名空间

--------------------------------------------------------------------------------------------

数据库访问方式:

HibernateTemplate:org.springframework.orm.hibernate3.HibernateTemplate  
HibernateDaoSupport:org.springframework.orm.hibernate3.support.HibernateDaoSupport

spring如果要整合hibernate,首先应该获得SessionFactory这个类,然后通过获得session来进行访问数据库。即spring提供的类HibernateDaoSupport、HibernateTemplate应该是有setSessionFactory()方法的,在使用的时候注入一下就ok了。

<bean id="orderSessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
    <property name="dataSource" ref="orderDataSource"/>
    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">${bl3.order.dal.hibernate.order.dialect}</prop>
            <prop key="hibernate.jdbc.batch_size">${bl3.order.dal.hibernate.order.jdbc.batch_size}</prop>
            <prop key="hibernate.show_sql">${bl3.order.dal.hibernate.order.show_sql}</prop>
            <prop key="hibernate.generate_statistics">${bl3.order.dal.hibernate.order.generate_statistics}</prop>
        </props>
    </property>

    <property name="packagesToScan">   // 直接去扫描整个包,而不用一个一个的指定类
        <list>
           <value>com.sdo.bl3.order.dal.order.model</value>
        </list>
    </property>
</bean>


------------------------------------------------------ 下面的方式就是一个个的指定类,在类少的时候还是可行的
<property name="annotatedClasses">       <list>          <value>com.zcy.model.User</value>          <value>com.zcy.model.Log</value>       </list>   </property>  

1、注入SessionFactory

<bean id="UserInfoDao" class="com.hr2job.dao.impl.UserInfoDaoImpl">    
    <property name="sessionFactory" ref="sessionFactory" />  
</bean>

这里的SessionFactory注入不是给类的,而是给继承HibernateDaoSupport类的SessionFactory。好处是不需要关心关闭、是否连接成功等问题。

 

2、注入HibernateTemplate

<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">  
   <property name="sessionFactory">  
       <ref bean="sessionFactory"/>  
   </property>  
</bean>

本质上是和SessionFactory一样的,好处就是Dao中的类不用再继承HibernateDaoSupport了。

3、注入jdbcTemplate

<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">  
   <property name="dataSource">  
      <ref bean="dataSource" />  
   </property>  
</bean>

抱歉!评论已关闭.