`
hongmeikaile
  • 浏览: 116423 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

Spring+Hibernate两种方法实现增删改查

阅读更多

Spring+Hibernate两种方法实现增删改查

    首先,定义一个Customer的bean类,设置好Customer.hbm.xml文件。再定义好一个Dao接口。准备好一个jdbc.properties文件。  

 

第一种方法:

在dao类中定义一个HibernateTemplate类的对象,用该对象调用HibernateTemplate模板封装好的方法,如下:

 
/***
 * hibernateTemplate的转配模式
 */
public class CustomerDaoImpl implements CustomerDao {
	// 设置hibernateTemplate属性
	private HibernateTemplate hibernateTemplate;

	// 必须设置set方法
	public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
		this.hibernateTemplate = hibernateTemplate;
	}

	// 插入方法
	@Override
	public void insert(Customer entity) {
		hibernateTemplate.save(entity);
	}

	// 删除方法(按照试题删除)
	@Override
	public void delete(Customer entity) {
		hibernateTemplate.delete(entity);

	}

	// 删除方法,按id删除,该方法不成功
	@Override
	public void deleteById(int id) {
		// hibernateTemplate.
	}

	// 查询所有记录
	@Override
	public List<Customer> selectAll() {
		// TODO Auto-generated method stub
		List<Customer> entities = hibernateTemplate.find("from Customer");
		return entities;
	}

	// 按照id查找记录
	@Override
	public Customer selectById(int id) {
		// TODO Auto-generated method stub
		List<Customer> entitise = hibernateTemplate
				.find("from Customer where id=" + id);
		if (entitise.size() > 0) {
			Customer entity = entitise.get(0);
			return entity;
		}
		return null;
	}

	// 更新方法
	@Override
	public void update(Customer entity) {
		// TODO Auto-generated method stub
		hibernateTemplate.update(entity);
	}

}

xml中的部分代码如下:

<!-- 分散配置 -->
	<context:property-placeholder location="jdbc.properties" />

	<!-- c3p0数据源 -->
	<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
		<!-- 驱动程序 -->
		<property name="driverClass">
			<value>${jdbc.driverClass}</value>
		</property>

		<!-- 连接的url地址 -->
		<property name="jdbcUrl">
			<value>${jdbc.url}</value>
		</property>

		<!-- 连接的用户名 -->
		<property name="user">
			<value>${jdbc.user}</value>
		</property>

		<!-- 连接的密码 -->
		<property name="password">
			<value>${jdbc.password}</value>
		</property>

		<!-- 最大池数 -->
		<property name="maxPoolSize">
			<value>${c3p0.pool.max}</value>
		</property>

		<!-- 最小池数 -->
		<property name="minPoolSize">
			<value>${c3p0.pool.min}</value>
		</property>
		<!-- 默认初始化的池数 -->
		<property name="initialPoolSize">
			<value>${c3p0.pool.init}</value>
		</property>
	</bean>


	<bean id="sessionFactory"
		class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
		<!-- 设置数据源 -->
		<property name="dataSource" ref="dataSource" />
		<!-- 属性设置 -->
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
				<prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>
			</props>
		</property>
		<!-- 映射文件配置 -->
		<property name="mappingResources">
			<list>
				<value>cn/csdn/domain/Customer.hbm.xml</value>
			</list>
		</property>

	</bean>


	<!-- hibernate模板 -->
	<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
		<property name="sessionFactory" ref="sessionFactory" />
	</bean>

	<!-- dao的操作的bean -->
	<bean id="customerDaoImpl" class="cn.csdn.dao.CustomerDaoImpl">
		<!-- 注入依赖模板 -->
		<property name="hibernateTemplate" ref="hibernateTemplate" />
		</bean>
 

第二种方法:

Dao实现类继承HibernateDaoSupport类,该类是抽象类,该类中有一个HibernateTemplate的属性,通过this.getHibernateTemplate()可获得一个HibernateTemplate类的对象。

Dao实现类中的代码如下:

/**
 * 继承HibernateDaoSupport类,HibernateDaoSupport类中封装了一个hibernateTemplate变量
 */
public class CustomerDaoImpl1 extends HibernateDaoSupport implements
		CustomerDao {

	// 添加记录
	@Override
	public void insert(Customer entity) {
		this.getHibernateTemplate().save(entity);
	}

	// 删除记录(按照实体删除)
	@Override
	public void delete(Customer entity) {
		// TODO Auto-generated method stub
		this.getHibernateTemplate().delete(entity);

	}

	// 删除记录(按id删除),不成功
	//
	@Override
	public void deleteById(int id) {
		// TODO Auto-generated method stub
		// this.getHibernateTemplate().delete(entity);
	}

	// 查询所有的记录
	@Override
	public List<Customer> selectAll() {
		// TODO Auto-generated method stub
		List<Customer> entities = this.getHibernateTemplate().find(
				"from Customer");
		return entities;
	}

//	按照id查找记录
	@Override
	public Customer selectById(int id) {
		// TODO Auto-generated method stub
		List<Customer> entities=this.getHibernateTemplate().find("from Customer where id="+id);
		if(entities.size()>0){
			Customer entity=entities.get(0);
			return entity;
		}
		return null;
	}

//	更新的方法
	@Override
	public void update(Customer entity) {
		// TODO Auto-generated method stub
		this.getHibernateTemplate().update(entity);
	}

	}
 

 xml中的部分代码:

<!-- 分散配置 -->
	<context:property-placeholder location="jdbc.properties" />

	<!-- c3p0数据源 -->
	<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
		<!-- 驱动程序 -->
		<property name="driverClass">
			<value>${jdbc.driverClass}</value>
		</property>

		<!-- 连接的url地址 -->
		<property name="jdbcUrl">
			<value>${jdbc.url}</value>
		</property>

		<!-- 连接的用户名 -->
		<property name="user">
			<value>${jdbc.user}</value>
		</property>

		<!-- 连接的密码 -->
		<property name="password">
			<value>${jdbc.password}</value>
		</property>

		<!-- 最大池数 -->
		<property name="maxPoolSize">
			<value>${c3p0.pool.max}</value>
		</property>

		<!-- 最小池数 -->
		<property name="minPoolSize">
			<value>${c3p0.pool.min}</value>
		</property>
		<!-- 默认初始化的池数 -->
		<property name="initialPoolSize">
			<value>${c3p0.pool.init}</value>
		</property>
	</bean>


	<bean id="sessionFactory"
		class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
		<!-- 设置数据源 -->
		<property name="dataSource" ref="dataSource" />
		<!-- 属性设置 -->
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
				<prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>
			</props>
		</property>
		<!-- 映射文件配置 -->
		<property name="mappingResources">
			<list>
				<value>cn/csdn/domain/Customer.hbm.xml</value>
			</list>
		</property>

	</bean>


	<!-- 设置HibernateDaoSupport抽象类-->
	<bean id="hibernateDaoSupport"
		class="org.springframework.orm.hibernate3.support.HibernateDaoSupport"
		abstract="true">
		<property name="sessionFactory" ref="sessionFactory" />
	</bean>

	<!-- dao的操作的bean -->
	<bean id="customerDaoImpl" class="cn.csdn.dao.CustomerDaoImpl1"
			parent="hibernateDaoSupport" />
 

 

分享到:
评论
1 楼 xhdyw1225 2013-09-03  
老板,可以提供源码下载吗?  初学这玩意,有调通的源码学习方便些。。。。。。

相关推荐

    Flex实战-puremvc+java(spring+hibernate)实现增删改查操作

    《Flex实战:PureMVC+Java(Spring+Hibernate)实现增删改查操作》 在本文中,我们将深入探讨如何利用Flex作为前端展示层,结合后端的Java技术栈,包括Spring和Hibernate,来构建一个完整的CRUD(创建、读取、更新、...

    spring4+hibernate4实现增删改查

    本文将深入探讨如何使用Spring4和Hibernate4实现数据库的增删改查操作,以及在这个过程中可能涉及的关键知识点。 首先,Spring4是一个全面的Java应用程序框架,它提供了一种方式来管理组件(或称为bean)之间的依赖...

    Spring+Hibernate工具类所有增删改查

    文件列表中的"spring+hibernate公共方法,增删改查"表明这个工具类库包含了Spring和Hibernate的集成,提供了统一的接口来执行CRUD操作。这可能是一个单独的Java类,包含了如下的方法: - `save(Object entity)`: ...

    Spring+Hibernate实现增删改查的两种方法

    在Java Web开发中,Spring和Hibernate是两个非常重要的框架,它们常常被联合使用来处理数据库操作,如增、删、改、查(CRUD)。本文将深入探讨如何利用Spring与Hibernate整合,通过两种不同的方式来实现这些基本操作...

    SpringMvc+Spring+JPA+Hibernate实现的增删改查.zip

    在本项目中,"SpringMvc+Spring+JPA+Hibernate实现的增删改查.zip" 是一个使用Java技术栈开发的Web应用实例,主要涵盖了Spring MVC、Spring框架、JPA(Java Persistence API)以及Hibernate这四个核心组件。...

    Struts2.0+Spring2.0+Hibernate3.1登录及增删改查的完整演示示例

    在本文中,我们将详细介绍Struts2.0+Spring2.0+Hibernate3.1的登录及增删改查功能的完整演示示例。这个示例适合初学者进行学习。首先,需要了解这三种技术:Struts2、Spring和Hibernate,它们都是Java EE开发中不可...

    struts2+hibernate 增删改查

    下面将详细介绍这两个框架在实现增删改查(CRUD)操作时的关键知识点。 1. **Struts2框架**: - **Action类**:是业务逻辑的核心,负责接收请求并调用相应的服务进行处理,然后返回结果。 - **Interceptor拦截器*...

    Spring mvc+hibernate例子(包括登录、增删改查等简单功能)

    综上所述,"Spring mvc+hibernate" 整合实例提供了登录、增删改查等基础功能,通过 Spring MVC 处理 Web 请求,利用 Hibernate 实现与数据库的无缝交互,为开发者提供了一个高效、便捷的开发环境。在这个示例中,...

    Hibernate+Spring增删改查小例子

    本示例以“Hibernate+Spring增删改查小例子”为主题,旨在帮助初学者快速理解如何将这两个框架结合使用来实现对数据库的基本操作。 首先,Hibernate是一个对象关系映射(ORM)框架,它允许开发者使用面向对象的方式...

    使用springmvc+hibernate完成增删改查

    在本项目中,"使用springmvc+hibernate完成增删改查"意味着开发者已经配置好了SpringMVC和Hibernate的环境,能够通过这两个框架进行数据操作。数据无需创建自动生成,可能指的是使用了Hibernate的自动建表功能,或者...

    struts2+hibernate增删改查+分页

    综上所述,"struts2+hibernate增删改查+分页"是一个基础的Java Web开发示例,它涵盖了MVC架构下,如何利用Struts2处理用户请求,通过Hibernate进行数据库操作,以及实现简单的分页功能。这种组合在实际项目中非常...

    spring4+hibernate4 封装BaseDao增删改查以及分页,,支持jdk1.7,不支持jdk1.8

    9. **单元测试与集成测试**:为了确保封装的功能正确无误,项目可能包含了一些测试类,使用JUnit或其他测试框架对BaseDao的增删改查及分页功能进行验证。 通过以上知识点的介绍,我们可以看出这个项目提供了一个...

    Spring+Hibernate 一对一映射级联增删改查小例子

    // 其他增删改查方法 } ``` 在实际应用中,我们通常会配合Spring MVC或Spring Boot来构建前端控制器,接收HTTP请求并调用Service层的方法。SQL文件用于创建对应的数据库表,而使用说明则详细解释了如何运行这个...

    spring+hibernate整合简单示例

    这个示例通常会展示如何在Spring环境中启动和使用Hibernate,以及如何在Service层调用DAO层的方法,进行数据的增删改查操作。 总的来说,Spring和Hibernate的整合是Java Web开发中的常见实践,它结合了Spring的灵活...

    SpringMVC + Hibernate增删改查

    本教程将详细介绍如何利用这两个框架实现数据库的增删改查功能。 首先,SpringMVC是模型-视图-控制器(MVC)架构模式的一个实现。在SpringMVC中,Controller组件接收用户请求,Model组件处理业务逻辑,View组件则...

    SpringBoot 增删改查实例Demo

    在本实例中,我们将深入探讨如何使用SpringBoot框架进行数据库操作,主要集中在增删改查(CRUD)功能。SpringBoot以其简洁的配置和强大的功能,成为Java开发中广泛采用的框架,尤其在构建微服务时更为突出。下面,...

    Spring+Hibernate 多对多关联映射---教师与学生表的级联增删改查

    本篇将深入探讨如何在Spring和Hibernate中实现多对多关联映射,并通过一个具体的教师与学生表的级联增删改查实例来阐述这一过程。 首先,多对多关联是数据库设计中的一种关系类型,表示一个实体可以与多个其他实体...

    Spring+Hibernate实现)Hibernate公用类

    EntityDao接口通常会包含一些基本的操作,如增删改查(CRUD)方法,这些方法适用于任何数据模型。 例如,`EntityDao`接口可能包含以下方法: ```java public interface EntityDao&lt;T&gt; { void save(T entity); ...

    Struts2+Hibernate 实现用户管理 对用户增删改查

    在"Struts2+Hibernate 实现用户管理 对用户增删改查"的项目中,开发者利用这两个框架来构建一个完整的用户管理系统。首先,我们需要了解Struts2的核心概念,如Action、Interceptor(拦截器)和Result。Action是业务...

Global site tag (gtag.js) - Google Analytics