首先说一下为什么要这样来配置:
spring的jdbc可以灵活的与数据库打交道,但是sql语句要自己来写,增删改查会比较复杂一点。这里我们要共用一个事务,那就是hibernate的事务,也同用一个数据库连接池。这们我们就将比较复杂的操作交给hibernate,将会影响性能的一些操作或者是比较复杂操作交给spring jdbc。
第一步:加入spring jar包或者hibernate jar 第二步我们来看一下spring的配置文件:applicationContext.xml
com.lushuifa.entity hibernate.dialect=org.hibernate.dialect.MySQL5Dialect hibernate.show_sql=true hibernate.hbm2ddl.auto=update
第三步我们来看一下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 BaseDaoImplextends HibernateTemplate implements BaseDao { 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 */ @Test public void saveUsers2() { Users users = new Users(); users.setUserName("这是spring jdbc的方式添加的"); users.setPassword("tempPassword"); this.getBaseDao().saveUsers(users); System.out.println("save successFully !!!"); }}