jbosscache mvcc 를 hibenate 의 2 급 캐 시 공급 자로 사용 합 니 다.

jboss 5 를 사용 하면 jbosscache 를 hibenate 의 2 급 캐 시 공급 자로 쉽게 사용 할 수 있 습 니 다.우선 persistence. xml 을 이렇게 작성 해 야 합 니 다.
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/persistence"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
  <persistence-unit name="tempdb" transaction-type="JTA">
    <jta-data-source>java:/DefaultDS</jta-data-source>
    <properties>
      <property name="hibernate.cache.use_second_level_cache" value="true"/>
      <property name="hibernate.cache.use_query_cache" value="true"/>
      <property name="hibernate.cache.region.factory_class" value="org.hibernate.cache.jbc2.JndiMultiplexedJBossCacheRegionFactory"/>
      <!-- region factory specific properties -->
      <property name="hibernate.cache.region.jbc2.cachefactory" value="java:CacheManager"/>
      <property name="hibernate.cache.region.jbc2.cfg.entity" value="mvcc-entity"/>
      <property name="hibernate.cache.region.jbc2.cfg.collection" value="mvcc-entity"/>
    </properties>
  </persistence-unit>
</persistence>

현재 jbosscache 는 Cache Concurrency Strategy. NONSTRICT 를 지원 하지 않 습 니 다.READ_WRITE 와 Cache Concurrency Strategy. READWRITE, 코드 에서 Cache Concurrency Strategy. TRANSACTIONAL 로 변경 해 야 합 니 다. 그렇지 않 으 면 hibenate entity manager 가 시작 할 수 없습니다. 다음 과 같은 오 류 를 보고 하 십시오.
javax.persistence.PersistenceException: [PersistenceUnit: persistence] Unable to build EntityManagerFactory

...

Caused by: org.hibernate.cache.CacheException: unsupported access type [nonstrict-read-write]

물론 인 코딩 제한 을 가 져 온 상황 에서 왜 jbosscache 를 도 입 했 는 지 의문 이 제기 된다.이 유 는 간단 하 다. 분포 식 으로 복 제 된 cache 이기 때문에 다 중 응용 서버 노드 동기 화 cache 대상 을 할 수 있다.물론 단일 컴퓨터 를 사용 하 는 hibenate JPA 라면 단일 노드 의 ehcache 만으로 도 충분 하 다.

좋은 웹페이지 즐겨찾기