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

被折叠的 条评论
为什么被折叠?



