spring hibernate struts 整合开发(2)

本文详细介绍了一个使用Spring集成Hibernate的示例项目,包括业务bean的创建、事务管理配置及单元测试等。通过具体代码展示了如何实现数据的增删改查操作,并提供了一组JUnit测试用例验证功能的正确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[url="http://czj4451.iteye.com/blog/1526897"]一. spring hibernate struts 整合开发(1) - 搭建环境[/url]
二. spring hibernate struts 整合开发(2) - Spring集成的Hibernate编码和测试
[url="http://czj4451.iteye.com/blog/1533134"]三. spring hibernate struts 整合开发(3) - Struts集成Spring[/url]
[url="http://czj4451.iteye.com/blog/1535063"]四. spring hibernate struts 整合开发(4) - Struts与Spring集成2[/url]
[url="http://czj4451.iteye.com/blog/1535105"]五. spring hibernate struts 整合开发(5) - Hibernate二级缓存[/url]
[url="http://czj4451.iteye.com/blog/1535279"]六. spring hibernate struts 整合开发(6) - 额外功能[/url]


[size=small]Spring集成的Hibernate编码与测试[/size]

[size=small]1. 新建一个业务bean:com.john.service.impl.PersonServiceBean[/size]


@Transactional
public class PersonServiceBean implements PersonService {
@Resource private SessionFactory sessionFactory;

public void save(Person person) {
sessionFactory.getCurrentSession().persist(person);
}

public void update(Person person) {
sessionFactory.getCurrentSession().merge(person);
}

@Transactional(propagation=Propagation.NOT_SUPPORTED, readOnly=true)
public Person getPerson(Integer id) {
return (Person)sessionFactory.getCurrentSession().get(Person.class, id);
}

public void delete(Integer id) {
sessionFactory.getCurrentSession().delete(
sessionFactory.getCurrentSession().load(Person.class, id));
}

@Transactional(propagation=Propagation.NOT_SUPPORTED, readOnly=true)
public List<Person> getPersons() {
return sessionFactory.getCurrentSession().createQuery("from Person").list();
}

a. sessionFactory是通过@Resource来注入的,所以在beans.xml中必须有<context:annotation-config />
b. getXXX方法不需要事务,并且是只读的

[size=small]2. 新建一个jUnit测试类:junit.test.PersonServiceTest[/size]


public class PersonServiceTest {
private static PersonService personService;

@BeforeClass
public static void setUpBeforeClass() throws Exception {
ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
personService = (PersonService)ctx.getBean("personService");
}

@Test
public void testSave() throws UnsupportedEncodingException {
Person person = new Person();
person.setName("John");
personService.save(person);
}

@Test
public void testUpdate() {
Person person = personService.getPerson(1);
person.setName("Lisa");
personService.update(person);
}

@Test
public void testGetPerson() {
Person person = personService.getPerson(1);
System.out.println(person.getName());
}

@Test
public void testDelete() {
personService.delete(1);
}

@Test
public void testGetPersons() {
List<Person> persons = personService.getPersons();
for (Person p : persons)
System.out.println(p.getName());
}


对bean的方法分别进行测试。

整理自:传智播客spring教程
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值