hibernate(九)二級緩存(ehcache)

1、爲什麼需要緩存?
拉高程序的性能

關係型數據庫:數據與數據之間存在關係(聯繫)的數據庫 mysql/Oracle、sqlserver
非關係型數據庫:數據與數據之間是不存在關係的,key-value
1、基於文件存儲的數據庫:ehcache
2、基於內存存儲的數據庫:redis、memcache
3、基於文檔存儲的數據庫:mongodb

2、 什麼樣的數據需要緩存?
很少被修改或根本不改的數據
業務場景比如:耗時較高的統計分析sql、電話賬單查詢sql等

ehcache

ehcache的特點:

1、夠快
Ehcache的發行有一段時長了,經過幾年的努力和不計其數的性能測試,Ehcache終被設計於large, high concurrency systems.
2、夠簡單
開發者提供的接口非常簡單明瞭,從Ehcache的搭建到運用運行僅僅需要的是你寶貴的幾分鐘。其實很多開發者都不知道自己用在用Ehcache,Ehcache被廣泛的運用於其他的開源項目
3、夠袖珍
關於這點的特性,官方給了一個很可愛的名字small foot print ,一般Ehcache的發佈版本不會到2M,V 2.2.3 才 668KB。
4、夠輕量
核心程序僅僅依賴slf4j這一個包,沒有之一!
5、好擴展
Ehcache提供了對大數據的內存和硬盤的存儲,最近版本允許多實例、保存對象高靈活性、提供LRU、LFU、FIFO淘汰算法,基礎屬性支持熱配置、支持的插件多
6、監聽器
緩存管理器監聽器 (CacheManagerListener)和 緩存監聽器(CacheEvenListener),做一些統計或數據一致性廣播挺好用的
7、分佈式緩存
從Ehcache 1.2開始,支持高性能的分佈式緩存,兼具靈活性和擴展性

ehcache的使用

1、導入相關依賴
下載地址
2、核心接口
CacheManager:緩存管理器
Cache:緩存對象,緩存管理器內可以放置若干cache,存放數據的實質,所有cache都實現了Ehcache接口
Element:單條緩存數據的組成單位

hibernate(5.2.12.Final)中使用二級緩存步驟(ehcache)

1、導入ehcache相關依賴

 <dependency>
         <groupId>org.hibernate</groupId>
         <artifactId>hibernate-ehcache</artifactId>
        <version>5.2.12.Final</version>
      </dependency>

在這裏插入圖片描述

2、src添加ehcache.xml
在這裏插入圖片描述

3、hibernate.cfg.xml中添加二級緩存相關配置

 <!-- 開啓二級緩存 -->
      <property name="hibernate.cache.use_second_level_cache">true</property>
      <!-- 開啓查詢緩存 -->
      <property name="hibernate.cache.use_query_cache">true</property>
      <!-- EhCache驅動 -->
      <property name="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.EhCacheRegionFactory</property>

在這裏插入圖片描述

注1:查全部需要編寫代碼來開啓二級緩存的
query.setCacheRegion(“entity.Dict”);//指定緩存策略,名字必須實體類的完整類名
query.setCacheable(true);//手動開啓二級緩存
在這裏插入圖片描述

在這裏插入圖片描述

slf4j

抽象的日誌系統

1、導入相關依賴

<!-- log配置:Log4j2 + Slf4j -->
		<!-- slf4j核心包 -->
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-api</artifactId>
			<version>1.7.7</version>
		</dependency>
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>jcl-over-slf4j</artifactId>
			<version>1.7.7</version>
			<scope>runtime</scope>
		</dependency>

		<!--用於與slf4j保持橋接 -->
		<dependency>
			<groupId>org.apache.logging.log4j</groupId>
			<artifactId>log4j-slf4j-impl</artifactId>
			<version>2.9.1</version>
		</dependency>

		<!--核心log4j2jar包 -->
		<dependency>
			<groupId>org.apache.logging.log4j</groupId>
			<artifactId>log4j-api</artifactId>
			<version>2.9.1</version>
		</dependency>
		<dependency>
			<groupId>org.apache.logging.log4j</groupId>
			<artifactId>log4j-core</artifactId>
			<version>2.9.1</version>
		</dependency>
		

web工程需要包含log4j-web,非web工程不需要:

<!--web工程需要包含log4j-web,非web工程不需要 -->
		<dependency>
			<groupId>org.apache.logging.log4j</groupId>
			<artifactId>log4j-web</artifactId>
			<version>2.9.1</version>
			<scope>runtime</scope>
		</dependency>
		<!--需要使用log4j2的AsyncLogger需要包含disruptor -->
		<dependency>
			<groupId>com.lmax</groupId>
			<artifactId>disruptor</artifactId>
			<version>3.2.0</version>
		</dependency>

2、src添加log4j2.xml
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章