理論的には、session.get() メソッドは、エンティティがキャッシュに格納されているかどうかに関係なく、常にデータベースにヒットするはずです。しかし、session.get() または session.load() を使用するたびに、どちらもデータベースに 2 回ヒットしません。
Session session = factory.openSession();
tx = session.beginTransaction();
Customer cust = (Customer)session.get(Customer.class,2);
System.out.println(cust.getCid()+","+cust.getFirstName()+","+cust.getLastName()+","+cust.getPhone());
Customer cust2 = (Customer)session.get(Customer.class,2);
System.out.println(cust2.getCid()+","+cust2.getFirstName()+","+cust2.getLastName()+","+cust2.getPhone());
tx.commit();
session.close();
これが出力です。
Hibernate: select customer0_.cid as cid1_1_0_, customer0_.firstName as firstNam2_1_0_, customer0_.lastName as lastName3_1_0_, customer0_.email as email4_1_0_, customer0_.phone as phone5_1_0_, customer0_.aid as aid6_1_0_ from mycustomers customer0_ where customer0_.cid=?
2,Sam,pp,9799999999
2,Sam,pp,9799999999
選択クエリは 1 回だけ実行され、次回はキャッシュから取得されます。session.load() メソッドも使用すると、同じ出力が得られます。
ここで何か不足していますか?どうか明らかにしてください。