Hibernate는 Java 언어를 위한 Object-Relational Mapping 라이브러리입니다. Java 클래스에서 데이터베이스 테이블로의 매핑을 제공하고 전체 개발 주기를 줄입니다. Hibernate가 제공하는 이점 때문에 Hibernate를 사용하여 점점 더 높은 트랜잭션 애플리케이션이 개발됩니다. 다음은 Java 애플리케이션에서 Hibernate의 예입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
import org.hibernate.*; public class HibernateSample { ... Session session = factory.openSession(); session = factory.openSession(); Transaction tx = session.beginTransaction(); Query query = session.createQuery("from Customer c"); Iterator it = query.list().iterator(); while (it.hasNext ()){ Customer customer = (Customer) it.next(); ... } tx.commit(); session.close(); } |
그러나 이러한 높은 트래픽의 Hibernate 애플리케이션은 주요 확장성 문제에 직면하고 있습니다. 애플리케이션 계층 수준에서 확장할 수 있지만 데이터베이스 또는 데이터 저장소는 증가하는 트랜잭션 로드 수에 따라 확장할 수 없습니다.
Java 분산 캐싱은 확장성 병목 현상을 일으키는 데이터베이스로의 비용이 많이 드는 이동을 줄여주기 때문에 이 문제를 해결하는 가장 좋은 기술입니다. 이러한 이유로 Hibernate는 XNUMX단계 및 XNUMX단계 캐시를 포함하는 캐싱 인프라를 제공합니다.
Hibernate 첫 번째 수준 캐시는 다음과 관련된 기본 독립 실행형(in-proc) 캐시를 제공합니다. 세션 개체이며 현재 세션으로만 제한됩니다. 그러나 Hibernate XNUMX단계 캐시의 문제점은 서로 다른 세션 간에 객체 공유를 허용하지 않는다는 것입니다. 다른 세션에서 동일한 개체가 필요한 경우 모든 세션이 이를 로드하기 위해 데이터베이스를 이동하여 결국 데이터베이스 트래픽을 증가시키고 확장성 문제를 일으킵니다. 또한 세션이 닫히면 모든 캐시 데이터도 손실되며 다음에 데이터베이스에서 다시 가져와야 합니다.
웹 팜에 배포될 때 XNUMX단계만 있는 트래픽이 많은 Hibernate 애플리케이션은 또한 서버 캐시 동기화 문제에 직면합니다. 웹 팜에서 각 노드는 웹 서버(Apache, Oracle WebLogic 등)를 여러 인스턴스와 함께 실행합니다. 아파치 요청을 처리하는 프로세스. 그리고, 각각의 Hibernate 첫 번째 레벨 캐시 아파치 작업자 프로세스에 데이터베이스에서 직접 캐시된 동일한 데이터의 다른 버전이 있습니다.
이것이 Hibernate가 제공자 모델과 함께 두 번째 수준의 캐시를 제공하는 이유입니다. 최대 절전 모드 XNUMX단계 캐시 플러그인 3을 허용합니다.rd 세션 및 서버에서 개체를 캐시하기 위한 파티 분산(out-proc) 캐싱 공급자. 최대 절전 모드의 두 번째 수준 캐시는 다음과 연결됩니다. 세션팩토리 단일 세션 대신 전체 애플리케이션에서 사용할 수 있습니다.
Hibernate 두 번째 수준 캐시를 활성화하면 두 개의 캐시가 생깁니다. 하나는 첫 번째 수준 캐시이고 다른 하나는 두 번째 수준 캐시입니다. Hibernate는 두 번째 수준 캐시에서 객체를 검색하는 데 실패하면 항상 첫 번째 수준 캐시에서 객체 검색을 시도합니다. 이것도 실패하면 객체가 데이터베이스에서 직접 로드되고 캐시됩니다. 이 구성은 대부분의 데이터가 두 번째 수준에서 제공되기 때문에 데이터베이스 트래픽을 크게 줄입니다. 분산 캐시.
NCache Java는 다음을 확장하여 Hibernate 두 번째 수준 캐싱 공급자를 구현했습니다. org.hibernate.cache.CacheProvider. 쉽게 연결할 수 있습니다 NCache 코드 변경 없이 Hibernate 애플리케이션과 함께 Java Hibernate 분산 캐싱 제공자. NCache 데이터베이스가 병목 현상이 되지 않고 Hibernate 애플리케이션을 다중 서버 구성으로 확장할 수 있습니다. NCache 또한 데이터 크기 관리, 서버 및 데이터베이스 간의 데이터 동기화 등과 같은 모든 엔터프라이즈 수준 분산 캐싱 기능을 제공합니다.
당신은 연결할 수 있습니다 NCache 단순히 hibernate.cfg.xml을 수정하고 Java Hibernate 캐싱 제공자를 ncache다음과 같이 .xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<hibernate-configuration> <session-factory> <property name = "cache.provider_class"> alachisoft.ncache.integrations.hibernate.cache.NCacheProvider, alachisoft.ncache.integrations.hibernate.cache </property> </session-factory> </hibernate-configuration> <ncache> <region name = "default"> <add key = "cacheName" value = "myClusterCache"/> <add key = "enableCacheException" value = "false"/> <class name = "hibernator.BLL.Customer"> <add key = "priority" value = "1"/> <add key = "useAsync" value = "false"/> <add key = "relativeExpiration" value = "180"/> </class> </region> </ncache> |
따라서 사용하여 NCache Java Hibernate 분산 캐시 공급자는 코드 변경 없이 Hibernate 애플리케이션을 선형으로 확장할 수 있습니다.
따라서 완전히 작동하는 60일 평가판을 다운로드하십시오. NCache Enterprise 그리고 직접 사용해 보세요.
나는 단순히 블로그의 초보자이고 당신의 웹사이트를 절대적으로 즐겼다는 것을 말하고 싶습니다. 귀하의 블로그를 북마크에 추가할 계획입니다. 정말 멋진 이야기를 가지고 오셨습니다.
너무 많은 정보가 포함된 이러한 유형의 기사는 웹사이트에 대한 사용자의 관심을 유지하고 계속해서 더 많은 정보를 공유합니다.
첸나이에서 자바 교육
유용한 블로그 ... 공유해 주셔서 감사합니다.