다른 Customer
의 tickets
중 하나를 수정하면 예, 그렇습니다. 왜 이걸 시험해 보지 그래? Cutomer#1
은 tickets
컬렉션에 Ticket#1
과 Ticket#2
이 있다고 가정 해 보겠습니다. 이 코드를 실행했습니다 :
// loading in first session
Session session1 = HibernateUtil.getSession();
Transaction tx1 = session1.beginTransaction();
Customer c1 = (Customer) session1.load(Customer.class, 1L); // loads from db and puts in cache
for (Ticket ticket : c1.getTickets()) { // caches q2742145.Customer.tickets#1
System.out.println(ticket);
}
Ticket ticket = (Ticket) session1.load(Ticket.class, 1L); // doesn't hit the db
ticket.setName("foo"); // do some change on Ticket#1
session1.save(ticket);
tx1.commit(); // Ticket#1 gets updated in the db and the cached association invalidated
// loading in second session
Session session2 = HibernateUtil.getSession();
Transaction tx2 = session2.beginTransaction();
Customer c2 = (Customer) session2.load(Customer.class, 1L); // hits the cache
Set<Ticket> tickets = c2.getTickets();
for (Ticket ticket2 : tickets) { // reloads tickets from db
System.out.println(ticket2);
}
tx2.commit();
티켓 모음이 "새로 고침"되는 것을 보여줍니다.