首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

spring jdbc+HibernateTemplate配备方法

2012-11-05 
spring jdbc+HibernateTemplate配置方法首先说一下为什么要这样来配置:? ?? spring的jdbc可以灵活的与数据

spring jdbc+HibernateTemplate配置方法

首先说一下为什么要这样来配置:

? ?? spring的jdbc可以灵活的与数据库打交道,但是sql语句要自己来写,增删改查会比较复杂一点。这里我们要共用一个事务,那就是hibernate的事务,也同用一个数据库连接池。这们我们就将比较复杂的操作交给hibernate,将会影响性能的一些操作或者是比较复杂操作交给spring jdbc。

??? 第一步:加入spring jar包或者hibernate jar

? ? 第二步我们来看一下spring的配置文件:applicationContext.xml

???

     <!-- 拿到配jdbc配置文件 --><bean id="propertyConfigurer" value="jdbc.properties" /></bean>    <!-- 配置dbcp连接池,注意要加入它的第三包jar包 --><bean id="dataSource" value="${jdbc.driverClassName}" /><property name="url" value="${jdbc.url}" /><property name="username" value="${jdbc.username}" /><property name="password" value="${jdbc.password}" /> <!-- 连接池启动时的初始值 --> <property name="initialSize" value="1" /> <!-- 连接池的最大值 --><property name="maxActive" value="500" /> <!-- 最大空闲值.当经过一个高峰时间后,连接池可以慢慢将已经用不到的连接慢慢释放一部分,一直减少到maxIdle为止  --><property name="maxIdle" value="2" /> <!-- 最小空闲值.当空闲的连接数少于阀值时,连接池就会预申请去一些连接,以免洪峰来时来不及申请  --><property name="minIdle" value="1" /></bean><bean id="mySessionFactory" ref="dataSource"/>    <property name="packagesToScan">      <list>        <value>com.lushuifa.entity</value>      </list>    </property>    <property name="hibernateProperties">      <value>         hibernate.dialect=org.hibernate.dialect.MySQL5Dialect         hibernate.show_sql=true         hibernate.hbm2ddl.auto=update      </value>    </property>  </bean>      <bean id="hibernateTransaction" ref="mySessionFactory"></property>  </bean><!-- 配置spring jdbc事务操作模板里面会有一些增删改查的操作,跟HibernateTemplate,JpaTemplate是一个意思 ,特点不一而已--><bean id="jdbcTemplate" >    <property name="sessionFactory" ref="mySessionFactory"></property><property name="jdbcTemplate" ref="jdbcTemplate"></property></bean>

?第三步我们来看一下Dao

package com.lushuifa.base.dao.impl;import java.sql.Types;import org.springframework.jdbc.core.JdbcTemplate;import org.springframework.orm.hibernate3.HibernateTemplate;import com.lushuifa.base.dao.BaseDao;import com.lushuifa.entity.Users;public class BaseDaoImpl<T> extends  HibernateTemplate implements BaseDao<T> {private JdbcTemplate jdbcTemplate;public JdbcTemplate getJdbcTemplate() {return jdbcTemplate;}public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {this.jdbcTemplate = jdbcTemplate;}/** * 利用spring jdbc的方式来进行保存 */public void saveUsers(Users users) {  jdbcTemplate.update("insert into t_users(username,password) values(?)", new Object[]{users.getUserName(),users.getPassword()}, new int[]{Types.VARCHAR,Types.VARCHAR});   }/** * 利用hibernate的方式来保存 * @param t */public void saveT(T t) {this.save(t);}}

?

?最后来测试一下:

package com.lushuifa.service;import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.lushuifa.base.dao.BaseDao;import com.lushuifa.entity.Users;public class UserDaoTest {public BaseDao getBaseDao(){        ApplicationContext ac =  new ClassPathXmlApplicationContext("applicationContext.xml");        return (BaseDao)ac.getBean("baseDao");}/** * 这里是hibernateTemplate来进行添加 */@Test    public void saveUsers(){Users users  = new Users();users.setUserName("这是hibernate的方式添加的");users.setPassword("tempPassword");    this.getBaseDao().saveT(users);    System.out.println("save successFully !!!");    }/** * 这里是添加Spring jdbc */@Testpublic void saveUsers2(){Users users  = new Users();users.setUserName("这是spring jdbc的方式添加的");users.setPassword("tempPassword");    this.getBaseDao().saveUsers(users);    System.out.println("save successFully !!!");}}

?

热点排行