@Entity
@Table(name="user_details")
@Cacheable
@Cache(usage=CacheConcurrencyStrategy.READ_ONLY)
public class UserDetails {...}
위 코드는 UserDetails 클래스를 cacheable
으로 정의한 것이다. 나는 또한 hibernate.cfg.xml
에 두 줄을 추가 :Hibernate second level cacheing - 프로그램이 종료되지 않는다.
<!-- second-level cache -->
<property name="cache.use_second_level_cache">true</property>
<property name="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</property>
을 내 서비스의 주요 방법은 내가 같은되는 UserDetails 다른 세션에서, 객체 두 번에 접근하고있다 : 하나의 SELECT
쿼리를 예상대로
session = sessionFactory.openSession();
session.beginTransaction();
UserDetails user = new UserDetails();
user = (UserDetails)session.get(UserDetails.class, 3);
logger.info(user);
session.getTransaction().commit();
session.close();
Session session2 = sessionFactory.openSession();
session2.beginTransaction();
UserDetails user2 = new UserDetails();
user2 = (UserDetails)session2.get(UserDetails.class, 3);
logger.info(user2);
session2.getTransaction().commit();
session2.close();
내가 얻을 이는 하이버 네이트가 두 번째 레벨 캐시에서 데이터를 가져 오는 것을 의미한다. 또한 콘솔에 내 물건을 잘 인쇄합니다.
하지만 내 프로그램이 끝나지 않습니다. 그것은 거기에 실행에 앉아, Eclipse
, 나는 그것을 수동으로 멈춰야 해. 내가 뭔가 잘못하고 있는거야? 감사.
고맙습니다. 좋은 하루 되세요. – yovan786