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

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

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

第一种方法:

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

Java代码   收藏代码
  1. /*** 
  2.  * hibernateTemplate的转配模式 
  3.  */  
  4. public class CustomerDaoImpl implements CustomerDao {  
  5.     // 设置hibernateTemplate属性  
  6.     private HibernateTemplate hibernateTemplate;  
  7.   
  8.     // 必须设置set方法  
  9.     public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {  
  10.         this.hibernateTemplate = hibernateTemplate;  
  11.     }  
  12.   
  13.     // 插入方法  
  14.     @Override  
  15.     public void insert(Customer entity) {  
  16.         hibernateTemplate.save(entity);  
  17.     }  
  18.   
  19.     // 删除方法(按照试题删除)  
  20.     @Override  
  21.     public void delete(Customer entity) {  
  22.         hibernateTemplate.delete(entity);  
  23.   
  24.     }  
  25.   
  26.     // 删除方法,按id删除,该方法不成功  
  27.     @Override  
  28.     public void deleteById(int id) {  
  29.         // hibernateTemplate.  
  30.     }  
  31.   
  32.     // 查询所有记录  
  33.     @Override  
  34.     public List<Customer> selectAll() {  
  35.         // TODO Auto-generated method stub  
  36.         List<Customer> entities = hibernateTemplate.find("from Customer");  
  37.         return entities;  
  38.     }  
  39.   
  40.     // 按照id查找记录  
  41.     @Override  
  42.     public Customer selectById(int id) {  
  43.         // TODO Auto-generated method stub  
  44.         List<Customer> entitise = hibernateTemplate  
  45.                 .find("from Customer where id=" + id);  
  46.         if (entitise.size() > 0) {  
  47.             Customer entity = entitise.get(0);  
  48.             return entity;  
  49.         }  
  50.         return null;  
  51.     }  
  52.   
  53.     // 更新方法  
  54.     @Override  
  55.     public void update(Customer entity) {  
  56.         // TODO Auto-generated method stub  
  57.         hibernateTemplate.update(entity);  
  58.     }  
  59.   
  60. }  

xml中的部分代码如下:

Java代码   收藏代码
  1. <!-- 分散配置 -->  
  2.     <context:property-placeholder location="jdbc.properties" />  
  3.     <!-- c3p0数据源 -->  
  4.     <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">  
  5.         <!-- 驱动程序 -->  
  6.         <property name="driverClass">  
  7.             <value>${jdbc.driverClass}</value>  
  8.         </property>  
  9.   
  10.         <!-- 连接的url地址 -->  
  11.         <property name="jdbcUrl">  
  12.             <value>${jdbc.url}</value>  
  13.         </property>  
  14.   
  15.         <!-- 连接的用户名 -->  
  16.         <property name="user">  
  17.             <value>${jdbc.user}</value>  
  18.         </property>  
  19.   
  20.         <!-- 连接的密码 -->  
  21.         <property name="password">  
  22.             <value>${jdbc.password}</value>  
  23.         </property>  
  24.   
  25.         <!-- 最大池数 -->  
  26.         <property name="maxPoolSize">  
  27.             <value>${c3p0.pool.max}</value>  
  28.         </property>  
  29.   
  30.         <!-- 最小池数 -->  
  31.         <property name="minPoolSize">  
  32.             <value>${c3p0.pool.min}</value>  
  33.         </property>  
  34.         <!-- 默认初始化的池数 -->  
  35.         <property name="initialPoolSize">  
  36.             <value>${c3p0.pool.init}</value>  
  37.         </property>  
  38.     </bean>  
  39.   
  40.   
  41.     <bean id="sessionFactory"  
  42.         class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">  
  43.         <!-- 设置数据源 -->  
  44.         <property name="dataSource" ref="dataSource" />  
  45.         <!-- 属性设置 -->  
  46.         <property name="hibernateProperties">  
  47.             <props>  
  48.                 <prop key="hibernate.show_sql">${hibernate.show_sql}</prop>  
  49.                 <prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>  
  50.             </props>  
  51.         </property>  
  52.         <!-- 映射文件配置 -->  
  53.         <property name="mappingResources">  
  54.             <list>  
  55.                 <value>cn/csdn/domain/Customer.hbm.xml</value>  
  56.             </list>  
  57.         </property>  
  58.   
  59.     </bean>  
  60.   
  61.   
  62.     <!-- hibernate模板 -->  
  63.     <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">  
  64.         <property name="sessionFactory" ref="sessionFactory" />  
  65.     </bean>  
  66.   
  67.     <!-- dao的操作的bean -->  
  68.     <bean id="customerDaoImpl" class="cn.csdn.dao.CustomerDaoImpl">  
  69.         <!-- 注入依赖模板 -->  
  70.         <property name="hibernateTemplate" ref="hibernateTemplate" />  
  71.     </bean>  

第二种方法:

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

Dao实现类中的代码如下:

Java代码   收藏代码
  1. /** 
  2.  * 继承HibernateDaoSupport类,HibernateDaoSupport类中封装了一个hibernateTemplate变量 
  3.  */  
  4. public class CustomerDaoImpl1 extends HibernateDaoSupport implements  
  5.         CustomerDao {  
  6.   
  7.     // 添加记录  
  8.     @Override  
  9.     public void insert(Customer entity) {  
  10.         this.getHibernateTemplate().save(entity);  
  11.     }  
  12.   
  13.     // 删除记录(按照实体删除)  
  14.     @Override  
  15.     public void delete(Customer entity) {  
  16.         // TODO Auto-generated method stub  
  17.         this.getHibernateTemplate().delete(entity);  
  18.   
  19.     }  
  20.   
  21.     // 删除记录(按id删除),不成功  
  22.     //  
  23.     @Override  
  24.     public void deleteById(int id) {  
  25.         // TODO Auto-generated method stub  
  26.         // this.getHibernateTemplate().delete(entity);  
  27.     }  
  28.   
  29.     // 查询所有的记录  
  30.     @Override  
  31.     public List<Customer> selectAll() {  
  32.         // TODO Auto-generated method stub  
  33.         List<Customer> entities = this.getHibernateTemplate().find(  
  34.                 "from Customer");  
  35.         return entities;  
  36.     }  
  37.   
  38. //  按照id查找记录  
  39.     @Override  
  40.     public Customer selectById(int id) {  
  41.         // TODO Auto-generated method stub  
  42.         List<Customer> entities=this.getHibernateTemplate().find("from Customer where id="+id);  
  43.         if(entities.size()>0){  
  44.             Customer entity=entities.get(0);  
  45.             return entity;  
  46.         }  
  47.         return null;  
  48.     }  
  49.   
  50. //  更新的方法  
  51.     @Override  
  52.     public void update(Customer entity) {  
  53.         // TODO Auto-generated method stub  
  54.         this.getHibernateTemplate().update(entity);  
  55.     }  
  56.   
  57.     }  

 xml中的部分代码:

Java代码   收藏代码
  1. <!-- 分散配置 -->  
  2.     <context:property-placeholder location="jdbc.properties" />  
  3.   
  4.     <!-- c3p0数据源 -->  
  5.     <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">  
  6.         <!-- 驱动程序 -->  
  7.         <property name="driverClass">  
  8.             <value>${jdbc.driverClass}</value>  
  9.         </property>  
  10.   
  11.         <!-- 连接的url地址 -->  
  12.         <property name="jdbcUrl">  
  13.             <value>${jdbc.url}</value>  
  14.         </property>  
  15.   
  16.         <!-- 连接的用户名 -->  
  17.         <property name="user">  
  18.             <value>${jdbc.user}</value>  
  19.         </property>  
  20.   
  21.         <!-- 连接的密码 -->  
  22.         <property name="password">  
  23.             <value>${jdbc.password}</value>  
  24.         </property>  
  25.   
  26.         <!-- 最大池数 -->  
  27.         <property name="maxPoolSize">  
  28.             <value>${c3p0.pool.max}</value>  
  29.         </property>  
  30.   
  31.         <!-- 最小池数 -->  
  32.         <property name="minPoolSize">  
  33.             <value>${c3p0.pool.min}</value>  
  34.         </property>  
  35.         <!-- 默认初始化的池数 -->  
  36.         <property name="initialPoolSize">  
  37.             <value>${c3p0.pool.init}</value>  
  38.         </property>  
  39.     </bean>  
  40.   
  41.   
  42.     <bean id="sessionFactory"  
  43.         class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">  
  44.         <!-- 设置数据源 -->  
  45.         <property name="dataSource" ref="dataSource" />  
  46.         <!-- 属性设置 -->  
  47.         <property name="hibernateProperties">  
  48.             <props>  
  49.                 <prop key="hibernate.show_sql">${hibernate.show_sql}</prop>  
  50.                 <prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>  
  51.             </props>  
  52.         </property>  
  53.         <!-- 映射文件配置 -->  
  54.         <property name="mappingResources">  
  55.             <list>  
  56.                 <value>cn/csdn/domain/Customer.hbm.xml</value>  
  57.             </list>  
  58.         </property>  
  59.   
  60.     </bean>  
  61.   
  62.   
  63.     <!-- 设置HibernateDaoSupport抽象类-->  
  64.     <bean id="hibernateDaoSupport"  
  65.         class="org.springframework.orm.hibernate3.support.HibernateDaoSupport"  
  66.         abstract="true">  
  67.         <property name="sessionFactory" ref="sessionFactory" />  
  68.     </bean>  

  69.     <!-- dao的操作的bean -->  
  70.     <bean id="customerDaoImpl" class="cn.csdn.dao.CustomerDaoImpl1"  
  71.             parent="hibernateDaoSupport" /> 
  72.     <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>

    

猜你喜欢

转载自blog.csdn.net/ly199108171231/article/details/53924553