NCache .NET용 메모리 내 분산 캐싱입니다. 그러나 100% 기본 클라이언트 및 타사 통합 덕분에 Java도 지원합니다. 를 통해 빠르게 둘러보겠습니다. NCache Java 클라이언트 및 Java 애플리케이션을 위한 두 개의 타사 통합.
Java 클라이언트를 사용한 기본 캐싱 작업
설치 후 NCache,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
try { // After having NCache up and running... // Connect to cache String cacheName = "demoCache"; Cache cache = CacheManager.getCache(cacheName); // Cache a product Product product = buildOrRetrieveProductToCache(); String key = "Product:" + product.getProductID(); cache.add(key, product); // Later in another part of our code... // Retrieve cached product Product foundProduct = cache.get(key, Product.class); if (foundProduct != null) { // Do something with the cached product here } else { // No product was found } } catch (OperationFailedException ex) { // Handle NCache-specific exceptions, like connection failures, here } catch (Exception ex) { // Handle generic exceptions, like IllegalArgumentException, here } |
Java 클라이언트를 사용하면 더 많은 캐싱 작업이 가능합니다. 단일 항목을 추가하고 검색하는 것 외에도 항목을 추가, 검색, 업데이트 및 삭제하는 대량 작업이 있습니다. 그리고 비동기 API. 고급 캐싱 작업에 대한 자세한 내용은 다음을 확인하세요. CRUD 작업: 개요. 해당 가이드에서도 Java 예제를 찾을 수 있습니다.
또한 Java 애플리케이션 내에서 다음을 사용할 수 있습니다. SQL 쿼리 기능 및 인덱싱 전략 SQL과 유사한 구문을 사용하여 캐시된 항목을 검색하고 삭제합니다.
이러한 캐싱 작업을 통해 Java 애플리케이션 내부에 자체 캐싱 메커니즘을 작성합니다. 하지만 함께 NCache, 기존 타사 통합을 활용할 수 있습니다. 두 가지를 살펴보겠습니다.
NCache 최대 절전 모드 XNUMX단계 캐시로
Hibernate는 Java용 개체 관계형 매핑 도구입니다. 아마도 Java 세계에서 널리 사용되는 도구이기 때문에 너무 많은 소개가 필요하지 않을 것입니다.
데이터베이스로의 과도한 왕복을 피하기 위해 Hibernate는 다른 캐싱 메커니즘인 첫 번째 및 두 번째 수준 캐시를 사용합니다. 그리고 Hibernate는 데이터베이스에서 개체를 검색할 때 그들 사이에서 폴백합니다.
첫 번째 수준 캐시는 세션별 캐시입니다. 객체를 로드할 때 Hibernate가 검사하는 첫 번째 캐시입니다. 첫 번째 수준 캐시와 달리 두 번째 수준 캐시는 선택 사항입니다. 그리고 모든 세션에서 사용할 수 있습니다.
Hibernate는 두 번째 수준 캐시에 대한 구현을 제공하지 않습니다. 대신 타사 캐싱 공급자에 의존해야 합니다. NCache 두 번째 수준 캐시처럼 작동합니다.
우리는 만들 수 있습니다 NCache 프로덕션 코드를 변경하지 않고 구성 파일을 통해 Hibernate XNUMX단계 캐시 공급자로 작동합니다.
두 번째 수준 캐시는 기본적으로 비활성화되어 있습니다. 활성화하고 사용하려면 NCache 두 번째 수준 캐시로 Hibernate 구성 파일에서 구성해야 합니다. 예를 들어, 이것은 hibernate.cfg.xml
파일
1 2 3 4 5 6 7 8 9 10 11 |
<hibernate-configuration> <session-factory> <!-- It enables Hibernate second-level cache --><!-- It enables Hibernate second-level cache --> <property name="hibernate.cache.use_second_level_cache">true</property> <!-- It configures NCache as a second-level cache provider, for Hibernate 3.6 and above ---> <property name="hibernate.cache.region.factory_class">JCacheRegionFactory</property> <!-- It's NCache applicaton identifier --> <property name="ncache.application_id">myapp</property><!-- It configures NCache as a second-level cache provider, for Hibernate 3.6 and above ---> JCacheRegionFactory </session-factory> </hibernate-configuration> |
NCache 두 번째 수준 공급자로
NCacheHibernate.xml
.
Hibernate는 영역을 사용하여 이름 아래 개체를 그룹화합니다. 와 함께 NCache, 지역별로 별도의 캐시 인스턴스를 보유하거나 여러 지역에 대해 단일 캐시 인스턴스를 보유할 수 있습니다. 각 지역을 서로 다르게 구성할 수도 있습니다. NCache 캐싱 기능. 또한 내부에 이러한 모든 구성을 지정합니다. NCacheHibernate.xml
1 2 3 4 5 6 7 8 |
<configuration> <application-config application-id="myapp" enable-cache-exception="true" default-region-name="DefaultRegion" key-case-sensitivity="false"> <cache-regions> <region name="MyCustomRegion" cache-name="myPartitionedcache" priority="default" expiration-type="sliding" expiration-period="8"/> <region name="DefaultRegion" cache-name="demoCache" priority="default" expiration-type="none" expiration-period="0" /> </cache-regions> </application-config> </configuration> |
에 대한 자세한 내용은 NCacheHibernate.xml
파일, 확인 캐시 가능한 개체 및 영역 구성.
XNUMX단계 캐싱을 활성화하더라도 Hibernate는 기본적으로 객체를 캐싱하지 않습니다. 주석이나 매핑 파일을 통해 개체를 캐시 가능으로 표시해야 합니다. 예를 들어, Product
수업,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
@Entity @Table(name = "Products") @Cacheable @Cache(usage = CacheConcurrencyStrategy.READ_WRITE) public class Product { @Id @GeneratedValue @Column(name = "ProductID") private int ProductID; @Column(name = "Name") private String Name; public Product() {} public int getProductID() { return ProductID; } public void setProductID(int productID) { this.ProductID = productID; } public String getName() { return Name; } public void setName(String name) { this.Name = name; } } |
그것이 우리가 사용할 수있는 방법입니다 NCache 두 번째 수준의 Hibernate 캐시로. 또한, 우리는 사용할 수 있습니다 NCache 쿼리 결과를 캐시합니다. 크고 복잡하며 빈번한 쿼리 결과를 캐싱하여 애플리케이션의 전반적인 성능을 향상시킬 수 있습니다. 사용법을 배우려면 NCache Hibernate를 사용한 쿼리 캐싱의 경우 확인 쿼리 캐싱 사용. Hibernate 구성 파일과 캐시에 대한 쿼리에 약간의 변경이 필요합니다.
NCache 스프링 통합
NCache Spring 프레임워크와도 통합됩니다. Spring 프레임워크는 Java 플랫폼을 위한 애플리케이션 프레임워크이자 Inversion of Control 컨테이너입니다. 우리는 연결할 수 있습니다 NCache Spring 캐싱 모듈에 포함되어 확장 가능하고 분산됩니다.
우리가 사용할 때 NCache Spring을 사용하면 데이터를 제공하기 위한 데이터베이스 이동 횟수를 줄여 데이터베이스를 오프로드하여 더 나은 성능을 제공합니다.
사용을 시작하려면 NCache Spring에서는 구성 클래스에 주석을 달아야 합니다. 이와 같이,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
@Configuration @EnableCaching public class CachingConfiguration { @Bean public CacheManager cacheManager() { SpringConfigurationManager springConfigurationManager = new SpringConfigurationManager(); URL resource = getClass().getClassLoader().getResource("ncache-spring.xml"); springConfigurationManager.setConfigFile(resource.getPath()); NCacheCacheManager cacheManager = new NCacheCacheManager(); cacheManager.setSpringConfigurationManager(springConfigurationManager); return cacheManager; } } |
주석을 사용하는 대신 XML 파일을 사용할 수도 있습니다. 하지만 컴파일 타임에 유형 오류를 찾을 수 있으므로 주석을 사용하는 것이 좋습니다.
주석 또는 XML 파일을 통해 Spring 구성을 변경한 후 실제 캐시를 구성해야 합니다. 내부 ncache-spring.xml
파일에서 만료 및 제거 정책과 같은 속성으로 캐시 인스턴스를 정의합니다. 예를 들어,
1 2 3 4 5 6 |
<application-config default-cache-name="default"> <caches> <cache name="ProductsCache" ncache-instance="demoCache" priority="normal" expiration-type="absolute" expiration-period="10"/> </caches> </application-config> |
Spring 애플리케이션을 구성하고 캐싱을 활성화한 후 다음 단계는 캐시하려는 메서드에 주석을 추가하는 것입니다. 예를 들어 API 컨트롤러에서 호출하는 서비스 또는 애플리케이션의 다른 서비스를 캐시하려면 다음과 같이 작성할 수 있습니다.
1 2 3 4 5 6 7 8 9 10 11 12 |
@Service public class ProductService { @Cacheable("ProductsCache") public String getProductNameByCode(String code) { return retrieveProductNameFromDatastore(code); } private String retrieveProductNameFromDatastore(String code) { // Image a query to retrieve a product name from a database return "Any name"; } } |
이 모든 단계를 통해 사용할 준비가 되었습니다. NCache 봄과 함께.
구성에 대한 자세한 내용은 NCache 스프링으로 확인 사용을 위한 애플리케이션 구성 NCache 스프링 캐싱 공급자로.
결론
그것이 우리가 사용할 수있는 방법입니다 NCache 기본 캐싱 작업을 지원하는 Java 클라이언트. 우리는 통합할 수 있습니다 NCache 구성 및 사소한 코딩 변경만으로 Hibernate 및 Spring Framework와 함께.
최대 절전 모드 및 Spring 외에도 NCache JCache API도 지원합니다. 우리는 사용할 수 있습니다 NCache JCache 애플리케이션에서 분산 솔루션과 동일한 JCache API를 사용합니다. 통합하는 방법을 배우려면 NCache JCache로 방문 JCache 가이드.
Java 및 .NET 백엔드 측면이 있는 하이브리드 애플리케이션의 경우, NCache 이식 가능한 데이터 유형을 지원합니다. 우리는 사용할 수 있습니다 NCache Java 및 .NET 백엔드 애플리케이션 간에 데이터를 공유합니다. 예를 들어 이식 가능한 데이터 유형을 사용하면 다음을 구현할 수 있습니다. JSON 스토리지 NCache 두 개의 .NET 및 Java 응용 프로그램 간에 데이터를 공유합니다.
Java 응용 프로그램에서 분산되고 확장 가능하며 성능이 뛰어난 캐싱 솔루션의 이점을 얻으려면 다음을 제공하십시오. NCache 해볼.