`

spring jdbc+HibernateTemplate配置方法

阅读更多

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

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

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

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

   

     <!-- 拿到配jdbc配置文件 -->
	<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
		<property name="location" value="jdbc.properties" />
	</bean>

    <!-- 配置dbcp连接池,注意要加入它的第三包jar包 -->
	<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}" />
		 <!-- 连接池启动时的初始值 --> 
		<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" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
	    <property name="dataSource" 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" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
	     <property name="sessionFactory" ref="mySessionFactory"></property>
	  </bean>
	
	<!-- 配置spring jdbc事务操作模板里面会有一些增删改查的操作,跟HibernateTemplate,JpaTemplate是一个意思 ,特点不一而已-->
	<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
		<property name="dataSource"><ref bean="dataSource"/></property>
	</bean>
	
	<bean id="baseDao" class="com.lushuifa.base.dao.impl.BaseDaoImpl" >
	    <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
	 */
	@Test
	public void saveUsers2(){
		Users users  = new Users();
		users.setUserName("这是spring jdbc的方式添加的");
		users.setPassword("tempPassword");
    	this.getBaseDao().saveUsers(users);
    	System.out.println("save successFully !!!");
	}
}

 

分享到:
评论

相关推荐

    ext2.0+struts2.1+spring2.0+jdbc框架

    标题 "ext2.0+struts2.1+spring2.0+jdbc框架" 提到的是一个基于Java的Web开发架构,它结合了四个关键组件:EXT JS的2.0版本,Struts2.1,Spring2.0,以及JDBC(Java Database Connectivity)。这个组合在早期的Web...

    Spring源代码解析(三):Spring_JDBC.doc

    总的来说,Spring JDBC的JdbcTemplate是Spring框架中用于数据库操作的关键组件,通过回调接口和模板方法设计,它极大地简化了数据库访问的代码,同时也提供了良好的异常处理和资源管理机制。理解和掌握JdbcTemplate...

    ssh框架整合jar包(struts2+spring4+hibernate4)

    - 配置Spring的applicationContext.xml,声明Bean并实现依赖注入,包括数据库配置、事务管理器等。 - 配置Hibernate的hibernate.cfg.xml,设置数据库连接、实体类和映射文件。 - 使用Spring的HibernateTemplate或...

    springmvc spring hibernate整合Demo

    然后,通过Spring的HibernateTemplate或SessionFactoryBean,将Hibernate集成到Spring中,以便在Controller中方便地进行数据库操作。 4. 创建实体类:定义与数据库表对应的Java类,使用Hibernate的注解(如@Entity...

    struts2.1+spring2.5+hibernate3.3整合之第一步(spring2.5+hibernate3.3)

    然后,使用Spring的`@Repository`注解创建DAO的实现类,这里可以利用Spring的`HibernateTemplate`或`SessionFactory`进行操作。 6. **事务管理**:Spring通过`PlatformTransactionManager`接口管理事务。在服务层...

    spring3.0+hibernate3.3+mysql8.0

    在Spring框架中,我们可以利用Spring的HibernateTemplate或SessionFactoryBean来配置和管理Hibernate,以实现数据持久化。 **MySQL 8.0** 是一个开源的关系型数据库管理系统,以其高性能、稳定性及易用性而闻名。...

    Spring+hibernate整合源代码

    Spring 可以通过工厂方法或 JdbcTemplate、HibernateTemplate 提供的模板方法来获取 Session。 6. **Service 层设计**:Service 层是业务逻辑的核心,通常会注入 DAO 实例并调用其方法来完成业务处理。Service 层...

    ZK+spring+hibernate的整合

    2. **集成Hibernate**:在Spring配置文件中,我们需配置Hibernate的SessionFactory,并利用Spring的JDBC模板或HibernateTemplate进行数据访问。这一步骤包括创建Hibernate的实体类、映射文件以及数据访问接口。 3. ...

    Spring_Spring_Hibernate_HibernateTemplate

    Spring通过提供众多模块,如Spring MVC、Spring JDBC、Spring ORM等,覆盖了企业级应用的多个层面。 2. **Hibernate框架**: Hibernate是一个对象关系映射(ORM)框架,它将Java对象与数据库中的记录进行映射,...

    struts+spring+ibties+oracle整合

    7. **整合Hibernate和Spring**:使用Spring的HibernateTemplate或SessionFactoryUtils进行数据访问,避免手动管理Hibernate Session。 8. **数据库连接**:在Spring配置文件中配置DataSource,建立与Oracle数据库的...

    struts2+spring2+hibernate3框架

    而Hibernate则作为数据访问工具,Spring通过其JDBC模板或HibernateTemplate来与数据库交互,实现对象的持久化。 总的来说,这个框架组合提供了完整的MVC架构,涵盖了用户界面、业务逻辑和数据访问的各个方面,是...

    spring +hibernate +maven 的案例

    2. **Spring配置**:创建一个或多个XML配置文件(如applicationContext.xml),在这里声明Spring的bean,包括DataSource、SessionFactory、HibernateTemplate或HibernateDaoSupport等。同时,可以配置事务管理器以...

    Spring4.2.5+Hibernate4.3.11组合开发

    4. 在Spring配置文件中配置HibernateTemplate或SessionFactoryBean,以及事务管理器。 5. 在业务服务类中注入SessionFactory,编写数据访问方法。 6. 使用Spring的AOP实现声明式事务管理,确保事务的一致性。 此外...

    Spring+3.x企业应用开发实战+源码.rar

    总结来说,《Spring 3.x企业应用开发实战》涵盖了Spring的核心概念和企业级应用的实践方法,结合源码学习,可以帮助开发者提升Spring技能,更好地应对复杂的项目挑战。无论是初学者还是经验丰富的开发者,都能从中...

    SSH整合jar包(Spring4.1.2+hibernate4.3.7+struts2.3.20)

    - Hibernate负责处理数据持久化,Spring通过其JDBC抽象层和HibernateTemplate或SessionFactoryBean进行集成,使得数据库操作可以通过面向对象的方式进行。 - Struts2处理HTTP请求并控制业务流程,Spring与Struts2...

    spring3+hibernate3+derby的实例

    Spring的HibernateTemplate或HibernateDaoSupport类可以帮助简化Hibernate的使用,提供事务管理和错误处理。通过Spring,我们可以定义数据访问对象(DAO),并在其中注入SessionFactory,使得DAO层对SessionFactory...

    Struts2+Spring3+Hibernate3整合文档

    - **使用HibernateDAOSupport类**:此类提供了对session、sessionFactory等对象的操作方法以及`getHibernateTemplate()`方法来获取`HibernateTemplate`实例。 - **使用HibernateTemplate类**:此类封装了一系列数据...

    struts2+spring+hibernate配置

    此外,Spring还提供了数据访问抽象,包括对JDBC、ORM(Object-Relational Mapping)框架的支持,比如Hibernate。 Hibernate是流行的关系型数据库持久化框架,它简化了Java对象与数据库表之间的映射,实现了ORM。...

    struts2+spring3+hibernate整合教程

    本文详细介绍了如何将Struts2、Spring3与Hibernate三个框架进行整合的方法。通过这种方式,可以有效地提高开发效率,同时使得应用程序结构更加清晰,便于维护和扩展。希望本文能够帮助读者更好地理解和掌握这三个...

    struts1.3.8+spring2.5.6+hibernate3.3框架集成

    3. **Spring管理Hibernate SessionFactory**:配置数据源、SessionFactory,使用Spring的HibernateTemplate或HibernateDaoSupport简化数据库操作。 4. **事务管理**:利用Spring的PlatformTransactionManager,结合...

Global site tag (gtag.js) - Google Analytics