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中给出的验证案例是不对的!