zoukankan      html  css  js  c++  java
  • 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>

     

  • 相关阅读:
    PTA —— 基础编程题目集 —— 函数题 —— 61 简单输出整数 (10 分)
    PTA —— 基础编程题目集 —— 函数题 —— 61 简单输出整数 (10 分)
    练习2.13 不用库函数,写一个高效计算ln N的C函数
    练习2.13 不用库函数,写一个高效计算ln N的C函数
    练习2.13 不用库函数,写一个高效计算ln N的C函数
    迷宫问题 POJ 3984
    UVA 820 Internet Bandwidth (因特网带宽)(最大流)
    UVA 1001 Say Cheese(奶酪里的老鼠)(flod)
    UVA 11105 Semiprime Hnumbers(H半素数)
    UVA 557 Burger(汉堡)(dp+概率)
  • 原文地址:https://www.cnblogs.com/wql025/p/4807057.html
Copyright © 2011-2022 走看看