HibernateTemplate、HibernateDaoSupport两种方法实现增删改查Good(转)

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中的部分代码如下:

Java代码  

<!-- 分散配置 -->
    <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>  

    <span style="background-color: #ff0000;"><!-- hibernate模板 -->
    <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
        <property name="sessionFactory" ref="sessionFactory" />
    </bean></span>  

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

第二种方法:

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

Dao实现类中的代码如下:

Java代码  

/**
 * 继承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" />
     <bean id="adminDAO" class="com.haier.uhome.hr91.manager.dao.AdminDAO">
             parent="hibernateDaoSupport"/>

或者如下:

<bean id="customerDaoImpl" class="cn.csdn.dao.CustomerDaoImpl1">
        <property name="sessionFactory">
            <ref local="sessionFactory" />
        </property>
    </bean>

<bean id="adminDAO" class="com.haier.uhome.hr91.manager.dao.AdminDAO">
        <property name="sessionFactory">
            <ref local="sessionFactory" />
        </property>
    </bean>

 

时间: 2024-08-10 02:10:50

HibernateTemplate、HibernateDaoSupport两种方法实现增删改查Good(转)的相关文章

Hibernate的四种典型例子(增删改查)

Hibernate的四种典型例子(增删改查)  //查询  // Session session=HibernateSessionFactory.getSession();  // session.beginTransaction();  // Query q=session.createQuery("from Info where id=:id");  // q.setInteger("id", 1);  // List l=q.list();  // Info

VS连接Access数据库--连接字符串及执行查询语句的方法(增删改查,用户名查重,根据用户获取密码查询)

ACCESS数据的连接及语句执行操作,不难,久不用会生疏,每次都要找资料,干脆自己整理下,记录下来,需要的时候,直接查看,提高效率.也供初学者参考 1.连接字符串 public static string strConn = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Directory.GetCurrentDirectory() + "\\**.mdb;"; 2.数据语句执行(增删差改,用户名查重,根据用户

SQLite实现基本的增删改查功能

SQLite实现基本的增删改查功能 还是向之前一样,先介绍功能,再介绍所用知识点,然后贴下代码. 一,SQLite简介: SQLite,是一款轻型的数据库,是遵守ACID(原子性.一致性.隔离性.持久性)的关联式数据库管理系统,多用于嵌入式开发中.   SQLite的数据类型:Typelessness(无类型), 可以保存任何类型的数据到你所想要保存的任何表的任何列中. 但它又支持常见的类型比如: NULL, VARCHAR, TEXT, INTEGER, BLOB, CLOB...等. 唯一的

Android下数据库操作——增删改查

Android下数据库第一种方式增删改查 1.创建一个帮助类的对象,调用getReadableDatabase方法,返回一个SqliteDatebase对象 2.使用SqliteDatebase对象调用execSql()做增删改,调用rawQuery方法做查询. 特点:增删改没有返回值,不能判断sql语句是否执行成功.sql语句手动写,容易写错 private MySqliteOpenHelper mySqliteOpenHelper;     public InfoDao(Context co

MVC——数据库增删改查

MVC: V(View) :视图→就是页面的模板 C(Control): 控制器→客户主要面对的就是控制器, M(Model):模板→在模板里面主要就是写关于数据库的各种增删改查的方法 它们之间的关系就是→ 在控制器里调用模板里的方法,然后把得到的数据传到视图里,视图就会把得到的数据添加到自己的页面上,在通过视图里反馈的值传到控制器上.以实现对数据库的操作和控制器页面的显示.(大概是这样) 下面是对数据库增删改查的代码 一.各种数据库操作的方法(增删改查) namespace 数据库增删改查.M

【DRP】-Dao层常用功能代码:增删改查

本系列博客内容为:做DRP系统中Dao层常用功能. 该项目采用MVC架构 C(Controller)控制器,主要职责;1.取得表单参数:2.调用业务逻辑:3.转向页面 M(Model)模型,主要职责:1.业务逻辑:2.保存数据的状态 V(View)视图,主要职责:显示 本文主要是针对于Dao层的常见使用方法:增删改查sql语句及常用操作. 1 package com.bjpowernode.drp.basedata.dao; 2 3 import java.sql.Connection; 4 i

List在迭代过程中如何进行增删改查 ListIterator知识点

/** *    案例: 有如下一个list集合,需求,遍历集合,当集合中等于"five"元素,那么就插入元素"four". * *    解决问题的过程中发现: *  在迭代过程中,如果使用了集合的方法进行增删改查操作,那么迭代器会抛出 异常 ConcurrentModificationException. 原因是,迭代器不知道集合中的变化,容易发生调用的不确定性. 解决办法: 在迭代时,不要使用集合的方法进行操作元素.可以使用迭代器的子接口ListIterato

SSHE框架整合(增删改查)

1.前期准备:jar包(c3p0.jdbc ,各个框架) web.xml文件:spring的   转码的,和Struts2的过滤器 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee&qu

DataGridView编辑后立即更新到数据库的两种方法

DataGridView控件是微软预先写好的一个显示数据的控件,功能非常强大,可以显示来自数据库表的数据和XML等其他来源的数据.最近在做一个迷你超市管理系统,要大量用到这个控件.所以花时间好好研究了下. 这是迷你超市管理系的库存数据DataGridView,用户一定会想如果能直接在DGV中修改数据就好了. 是的,这是一个很好的想法,这个功能微软早就帮我们想到了,现在可以使两种方法加以实现.下面就来介绍一下他们. 第一张方法:基于DataAdapter对象创建一个CommandBulider,用