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> <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实现类中的代码如下:

/**
* 继承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>

 

04-16 18:57