package com.b510.service.impl;
import java.util.List;
import javax.annotation.Resource;
import org.hibernate.SessionFactory;
import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import com.b510.domain.Person;
import com.b510.service.PersonService;
/**
* 使用注解方式进行事务管理
*
* @author Hongten
*
*/
@Transactional
public class PersonServiceBean implements PersonService {
/**
* 通过bean.xml配置文件按名称sessionFactory注入属性sessionFactory,
* 当sessionFactory注入成功后,我们可以得到Session对象
*/
@Resource
private SessionFactory sessionFactory;
/**
* 定义HibernateTemplate对象,用于执行持久化操作
*/
private HibernateTemplate hibernateTemplate;
private HibernateTemplate getHibernateTemplate() {
if (hibernateTemplate == null) {
hibernateTemplate = new HibernateTemplate(sessionFactory);
}
return hibernateTemplate;
}
@Override
public void delete(Integer id) {
getHibernateTemplate().delete(getPerson(id));
}
// 在查询的时候,不需要开启事务,并且指定为只读,这样可以提高查询效率
@Override
@Transactional(propagation = Propagation.NOT_SUPPORTED, readOnly = true)
public Person getPerson(Integer id) {
return (Person) getHibernateTemplate().get(Person.class, id);
}
// 在查询的时候,不需要开启事务,并且指定为只读,这样可以提高查询效率
@Override
@Transactional(propagation = Propagation.NOT_SUPPORTED, readOnly = true)
@SuppressWarnings("unchecked")
public List<Person> getPerson() {
return getHibernateTemplate().find("from Person");
}
@Override
public void save(Person person) {
getHibernateTemplate().save(person);
}
@Override
public void update(Person person) {
getHibernateTemplate().update(person);
}
}
import java.util.List;
import javax.annotation.Resource;
import org.hibernate.SessionFactory;
import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import com.b510.domain.Person;
import com.b510.service.PersonService;
/**
* 使用注解方式进行事务管理
*
* @author Hongten
*
*/
@Transactional
public class PersonServiceBean implements PersonService {
/**
* 通过bean.xml配置文件按名称sessionFactory注入属性sessionFactory,
* 当sessionFactory注入成功后,我们可以得到Session对象
*/
@Resource
private SessionFactory sessionFactory;
/**
* 定义HibernateTemplate对象,用于执行持久化操作
*/
private HibernateTemplate hibernateTemplate;
private HibernateTemplate getHibernateTemplate() {
if (hibernateTemplate == null) {
hibernateTemplate = new HibernateTemplate(sessionFactory);
}
return hibernateTemplate;
}
@Override
public void delete(Integer id) {
getHibernateTemplate().delete(getPerson(id));
}
// 在查询的时候,不需要开启事务,并且指定为只读,这样可以提高查询效率
@Override
@Transactional(propagation = Propagation.NOT_SUPPORTED, readOnly = true)
public Person getPerson(Integer id) {
return (Person) getHibernateTemplate().get(Person.class, id);
}
// 在查询的时候,不需要开启事务,并且指定为只读,这样可以提高查询效率
@Override
@Transactional(propagation = Propagation.NOT_SUPPORTED, readOnly = true)
@SuppressWarnings("unchecked")
public List<Person> getPerson() {
return getHibernateTemplate().find("from Person");
}
@Override
public void save(Person person) {
getHibernateTemplate().save(person);
}
@Override
public void update(Person person) {
getHibernateTemplate().update(person);
}
}