私は、エンティティは、以下のように定義されています:JPAのEntityManagerのキャッシング
find
操作はエンティティマネージャで行われたときに、私は、見ることができるものから、
public class Version {
@Id
private Long id;
private String content;
@Transient
private Model model;
//...
}
が、それは一度だけ、基礎となるデータベースにSELECT
を行い、その後、エンティティはエンティティマネージャにキャッシュされます。しかし、model
プロパティにModel
を割り当てると、この変更はキャッシュされたエンティティに反映されないことがわかります。例えば。あるコールでfind
操作が実行され、Model
が割り当てられている場合、別のEJBからもう一度find
を実行すると、model
プロパティは再びnull
になります。この変更はキャッシュされたエンティティに反映されませんか?おそらくそれは@Transient
ですか?
ありがとうございますが、2番目のEJB呼び出し(ログレベルはFINESTに設定されています)で発行される新しいSQLクエリは表示されません。トランザクション管理はデフォルトに設定されています。理由は何でしょうか? – Dario
EJB1はEJB2を呼び出していますか、またはクライアント呼び出しEJB1を持っていて、クライアント呼び出しEJB2はありますか?どのような取引であるか、取引開始時と停止時を理解していますか? –
Webサービスを通じて呼び出されるEJBは1つだけです。 2つの連続したWebサービス呼び出しが同じメソッドに行われます。最初の呼び出しでは、ログに 'SELECT'クエリがあります。 2番目の呼び出しでは、クエリはまったくありません。 – Dario