JBoss4缓存实体Bean的策略是什么?数据库中的一条数据记录对应的EntityBean在内存中是否唯一?

我的程序通过EntityManager.find()查找到一个实体bean后,事务也提交了。PersistenceContext何时会释放实体Bean,PersistenceContext结束对实体bean的管理后,Jboss 会不会缓存实体Bean在内存中啊?
我编程测试了一下,数据库中的一条数据记录对应的EntityBean在内存中是不唯一的。我在一个session中EntityManager.find()到一个实体Bean后,改变EntityBean的field的值,挂起线程,不提交事务。然后启动另一个session,通过EntityManager.find()到同一个实体bean。发现这个实体bean的field的值数据库的一致。和前面改变过的值不一致。如何设置jboss使得实体bean在内存中只有一个实例?且每次只有一个事务在它上面。

JBoss4恐怕不能(jBoss5成为可彻底分离定制的组件结构后可能可以),这是原来实体Bean不透明引起的。

我一直强调透明性,比如你可以透过Hibernate直接访问Hibernate中的缓存,目前Hibernate3只提供有限几个统计功能。

我们无法透过实体bean来直接操作配置缓存。

你这个案例可能还不是这个问题(不是缓存中需要永远设置一个的问题),你查询后,没有提交,为防止脏数据,下次获取这个实体bean时,当然从数据库重新读取,你可以从CMP 的select for update 脏数据等方面研究一下事务配置,有可能可以。