《EJB3.0入门经典》笔记

本文探讨了在 StatelessSessionBean 中使用 extended persistence context 的常见误区,特别是关于如何验证数据库记录是否同步变更的问题。指出《EJB3.o入门经典》中提供的验证方法并不正确,并解释了为何直接使用 em.find 方法不能有效验证数据库中的实际变化。

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

1.在Stateless Session Bean中使用extended persistence context,更新了对象属性后,想验证数据库中相应的记录是否有同步变更,不可以用如下方法来验证:

context.setName("变化了");

context = em.find(Context.class, context.getId);

System.out.println(context.getName());

假设数据库中保存的name是“未变化”,执行上面的语句后,显示的是“变化了”,其实数据库中保存的还是“未变化”,因为还未执行em.joinTransaction().

虽然通过em.find(Context.class, context.getId)查出来对象的name已经变了,但仅是在内存中查出来的。

在我们使用的是extended persistence context,em会实时更新托管状态context的属性,所以通过em.find(Context.class, context.getId)查找的对象,就是更新后的对象。

结论:《EJB3.o入门经典》P113中给出的验证案例是不对的!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值