精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Hibernate的cache緩存解析

開發(fā) 后端
Hibernate cache分為二級(jí),第一級(jí)存放于session中稱為一級(jí)緩存,默認(rèn)帶有且不能卸載。第二級(jí)是由sessionFactory控制的進(jìn)程級(jí)緩存。是全局共享的緩存,凡是會(huì)調(diào)用二級(jí)緩存的查詢方法 都會(huì)從中受益。

本文向大家介紹Hibernate cache緩存,可能好多人還不了解Hibernate cache,沒有關(guān)系,看完本文你肯定有不少收獲,希望本文能教會(huì)你更多東西。

1. 關(guān)于hibernate緩存的問題:
1.1基本的緩存原理
Hibernate緩存分為二級(jí),***級(jí)存放于session中稱為一級(jí)緩存,默認(rèn)帶有且不能卸載。第二級(jí)是由sessionFactory控制的進(jìn)程級(jí)緩存。是全局共享的緩存,凡是會(huì)調(diào)用二級(jí)緩存的查詢方法 都會(huì)從中受益。只有經(jīng)正確的配置后二級(jí)緩存才會(huì)發(fā)揮作用。同時(shí)在進(jìn)行條件查詢時(shí)必須使用相應(yīng)的方法才能從緩存中獲取數(shù)據(jù)。比如Query.iterate()方法、load、get方法等。必須注意的是session.find方法永遠(yuǎn)是從數(shù)據(jù)庫中獲取數(shù)據(jù),不會(huì)從二級(jí)緩存中獲取數(shù)據(jù),即便其中有其所需要的數(shù)據(jù)也是如此。

查詢時(shí)使用緩存的實(shí)現(xiàn)過程為:首先查詢一級(jí)緩存中是否具有需要的數(shù)據(jù),如果沒有,查詢二級(jí)緩存,如果二級(jí)緩存中也沒有,此時(shí)再執(zhí)行查詢數(shù)據(jù)庫的工作。要注意的是:此3種方式的查詢速度是依次降低的。

1.2. 存在的問題
一級(jí)緩存的問題以及使用二級(jí)緩存的原因
因?yàn)镾ession的生命期往往很短,存在于Session內(nèi)部的***級(jí)最快緩存的生命期當(dāng)然也很短,所以***級(jí)緩存的命中率是很低的。其對(duì)系統(tǒng)性能的改善也是很有限的。當(dāng)然,這個(gè)Session內(nèi)部緩存的主要作用是保持Session內(nèi)部數(shù)據(jù)狀態(tài)同步。并非是hibernate為了大幅提高系統(tǒng)性能所提供的。

為了提高使用hibernate的性能,除了常規(guī)的一些需要注意的方法比如:使用延遲加載、迫切外連接、查詢過濾等以外,還需要配置hibernate的二級(jí)緩存。其對(duì)系統(tǒng)整體性能的改善往往具有立竿見影的效果?。ń?jīng)過自己以前作項(xiàng)目的經(jīng)驗(yàn),一般會(huì)有3~4倍的性能提高)

 N+1次查詢的問題
執(zhí)行條件查詢時(shí),iterate()方法具有著名的 “n+1”次查詢的問題,也就是說在***次查詢時(shí)iterate方法會(huì)執(zhí)行滿足條件的查詢結(jié)果數(shù)再加一次(n+1)的查詢。但是此問題只存在于***次查詢時(shí),在后面執(zhí)行相同查詢時(shí)性能會(huì)得到極大的改善。此方法適合于查詢數(shù)據(jù)量較大的業(yè)務(wù)數(shù)據(jù)。

但是注意:當(dāng)數(shù)據(jù)量特別大時(shí)(比如流水線數(shù)據(jù)等)需要針對(duì)此持久化對(duì)象配置其具體的緩存策略,比如設(shè)置其存在于緩存中的***記錄數(shù)、緩存存在的時(shí)間等參數(shù),以避免系統(tǒng)將大量的數(shù)據(jù)同時(shí)裝載入內(nèi)存中引起內(nèi)存資源的迅速耗盡,反而降低系統(tǒng)的性能!??!

1.3. 使用hibernate二級(jí)緩存的其他注意事項(xiàng):
 關(guān)于數(shù)據(jù)的有效性
另外,hibernate會(huì)自行維護(hù)二級(jí)緩存中的數(shù)據(jù),以保證緩存中的數(shù)據(jù)和數(shù)據(jù)庫中的真實(shí)數(shù)據(jù)的一致性!無論何時(shí),當(dāng)你調(diào)用save()、update()或 saveOrUpdate()方法傳遞一個(gè)對(duì)象時(shí),或使用load()、 get()、list()、iterate() 或scroll()方法獲得一個(gè)對(duì)象時(shí), 該對(duì)象都將被加入到Session的內(nèi)部緩存中。 當(dāng)隨后flush()方法被調(diào)用時(shí),對(duì)象的狀態(tài)會(huì)和數(shù)據(jù)庫取得同步。

也就是說刪除、更新、增加數(shù)據(jù)的時(shí)候,同時(shí)更新緩存。當(dāng)然這也包括二級(jí)緩存!

只要是調(diào)用hibernate API執(zhí)行數(shù)據(jù)庫相關(guān)的工作。hibernate都會(huì)為你自動(dòng)保證 緩存數(shù)據(jù)的有效性??!

但是,如果你使用了JDBC繞過hibernate直接執(zhí)行對(duì)數(shù)據(jù)庫的操作。此時(shí),Hibernate不會(huì)/也不可能自行感知到數(shù)據(jù)庫被進(jìn)行的變化改動(dòng),也就不能再保證緩存中數(shù)據(jù)的有效性!!

這也是所有的ORM產(chǎn)品共同具有的問題。幸運(yùn)的是,Hibernate為我們暴露了Cache的清除方法,這給我們提供了一個(gè)手動(dòng)保證數(shù)據(jù)有效性的機(jī)會(huì)??!

一級(jí)緩存,二級(jí)緩存都有相應(yīng)的清除方法。

其中二級(jí)緩存提供的清除方法為:

◆按對(duì)象class清空緩存

◆按對(duì)象class和對(duì)象的主鍵id清空緩存

◆清空對(duì)象的集合中的緩存數(shù)據(jù)等。

適合使用的情況
并非所有的情況都適合于使用二級(jí)緩存,需要根據(jù)具體情況來決定。同時(shí)可以針對(duì)某一個(gè)持久化對(duì)象配置其具體的緩存策略。

適合于使用二級(jí)緩存的情況:

1、數(shù)據(jù)不會(huì)被第三方修改;

一般情況下,會(huì)被hibernate以外修改的數(shù)據(jù)***不要配置二級(jí)緩存,以免引起不一致的數(shù)據(jù)。但是如果此數(shù)據(jù)因?yàn)樾阅艿脑蛐枰痪彺妫瑫r(shí)又有可能被第3方比如SQL修改,也可以為其配置二級(jí)緩存。只是此時(shí)需要在sql執(zhí)行修改后手動(dòng)調(diào)用cache的清除方法。以保證數(shù)據(jù)的一致性

2、數(shù)據(jù)大小在可接收范圍之內(nèi);

如果數(shù)據(jù)表數(shù)據(jù)量特別巨大,此時(shí)不適合于二級(jí)緩存。原因是緩存的數(shù)據(jù)量過大可能會(huì)引起內(nèi)存資源緊張,反而降低性能。

如果數(shù)據(jù)表數(shù)據(jù)量特別巨大,但是經(jīng)常使用的往往只是較新的那部分?jǐn)?shù)據(jù)。此時(shí),也可為其配置二級(jí)緩存。但是必須單獨(dú)配置其持久化類的緩存策略,比如***緩存數(shù)、緩存過期時(shí)間等,將這些參數(shù)降低至一個(gè)合理的范圍(太高會(huì)引起內(nèi)存資源緊張,太低了緩存的意義不大)。

3、數(shù)據(jù)更新頻率低;

對(duì)于數(shù)據(jù)更新頻率過高的數(shù)據(jù),頻繁同步緩存中數(shù)據(jù)的代價(jià)可能和 查詢緩存中的數(shù)據(jù)從中獲得的好處相當(dāng),壞處益處相抵消。此時(shí)緩存的意義也不大。

4、非關(guān)鍵數(shù)據(jù)(不是財(cái)務(wù)數(shù)據(jù)等)

財(cái)務(wù)數(shù)據(jù)等是非常重要的數(shù)據(jù),絕對(duì)不允許出現(xiàn)或使用無效的數(shù)據(jù),所以此時(shí)為了安全起見***不要使用二級(jí)緩存。因?yàn)榇藭r(shí) “正確性”的重要性遠(yuǎn)遠(yuǎn)大于 “高性能”的重要性。

2. 目前系統(tǒng)中使用hibernate cache的建議


1.4. 目前情況
一般系統(tǒng)中有三種情況會(huì)繞開hibernate執(zhí)行數(shù)據(jù)庫操作:

1、多個(gè)應(yīng)用系統(tǒng)同時(shí)訪問一個(gè)數(shù)據(jù)庫

此種情況使用hibernate二級(jí)緩存會(huì)不可避免的造成數(shù)據(jù)不一致的問題,

此時(shí)要進(jìn)行詳細(xì)的設(shè)計(jì)。比如在設(shè)計(jì)上避免對(duì)同一數(shù)據(jù)表的同時(shí)的寫入操作,

使用數(shù)據(jù)庫各種級(jí)別的鎖定機(jī)制等。

2、動(dòng)態(tài)表相關(guān)

所謂“動(dòng)態(tài)表”是指在系統(tǒng)運(yùn)行時(shí)根據(jù)用戶的操作系統(tǒng)自動(dòng)建立的數(shù)據(jù)表。

比如“自定義表單”等屬于用戶自定義擴(kuò)展開發(fā)性質(zhì)的功能模塊,因?yàn)榇藭r(shí)數(shù)據(jù)表是運(yùn)行時(shí)建立的,所以不能進(jìn)行hibernate的映射。因此對(duì)它的操作只能是繞開hibernate的直接數(shù)據(jù)庫JDBC操作。

如果此時(shí)動(dòng)態(tài)表中的數(shù)據(jù)沒有設(shè)計(jì)緩存,就不存在數(shù)據(jù)不一致的問題。

如果此時(shí)自行設(shè)計(jì)了緩存機(jī)制,則調(diào)用自己的緩存同步方法即可。

3、使用sql對(duì)hibernate持久化對(duì)象表進(jìn)行批量刪除時(shí)

此時(shí)執(zhí)行批量刪除后,緩存中會(huì)存在已被刪除的數(shù)據(jù)。

分析:

當(dāng)執(zhí)行了第3條(sql批量刪除)后,后續(xù)的查詢只可能是以下三種方式:

1.session.find()方法:

根據(jù)前面的總結(jié),find方法不會(huì)查詢二級(jí)緩存的數(shù)據(jù),而是直接查詢數(shù)據(jù)庫。

所以不存在數(shù)據(jù)有效性的問題。

2. 調(diào)用iterate方法執(zhí)行條件查詢時(shí):

根據(jù)iterate查詢方法的執(zhí)行方式,其每次都會(huì)到數(shù)據(jù)庫中查詢滿足條件的id值,然后再根據(jù)此id 到緩存中獲取數(shù)據(jù),當(dāng)緩存中沒有此id的數(shù)據(jù)才會(huì)執(zhí)行數(shù)據(jù)庫查詢;

如果此記錄已被sql直接刪除,則iterate在執(zhí)行id查詢時(shí)不會(huì)將此id查詢出來。所以,即便緩存中有此條記錄也不會(huì)被客戶獲得,也就不存在不一致的情況。(此情況經(jīng)過測試驗(yàn)證)

3. 用get或load方法按id執(zhí)行查詢:

客觀上此時(shí)會(huì)查詢得到已過期的數(shù)據(jù)。但是又因?yàn)橄到y(tǒng)中執(zhí)行sql批量刪除一般是針對(duì)中間關(guān)聯(lián)數(shù)據(jù)表,對(duì)于中間關(guān)聯(lián)表的查詢一般都是采用條件查詢 ,按id來查詢某一條關(guān)聯(lián)關(guān)系的幾率很低,所以此問題也不存在!

如果某個(gè)值對(duì)象確實(shí)需要按id查詢一條關(guān)聯(lián)關(guān)系,同時(shí)又因?yàn)閿?shù)據(jù)量大使用 了sql執(zhí)行批量刪除。當(dāng)滿足此兩個(gè)條件時(shí),為了保證按id 的查詢得到正確的結(jié)果,可以使用手動(dòng)清楚二級(jí)緩存中此對(duì)象的數(shù)據(jù)的方法!!(此種情況出現(xiàn)的可能性較小)

1.5. 建議
1)、建議不要使用sql直接執(zhí)行數(shù)據(jù)持久化對(duì)象的數(shù)據(jù)的更新,但是可以執(zhí)行 批量刪除。(系統(tǒng)中需要批量更新的地方也較少)

2)、如果必須使用sql執(zhí)行數(shù)據(jù)的更新,必須清空此對(duì)象的緩存數(shù)據(jù)。調(diào)用SessionFactory.evict(class) 、SessionFactory.evict(class,id)等方法。

3)、在批量刪除數(shù)據(jù)量不大的時(shí)候可以直接采用hibernate的批量刪除,這樣就不存在繞開hibernate執(zhí)行sql產(chǎn)生的緩存數(shù)據(jù)一致性的問題。

4)、不推薦采用hibernate的批量刪除方法來刪除大批量的記錄數(shù)據(jù)。

原因是hibernate的批量刪除會(huì)執(zhí)行1條查詢語句外加 滿足條件的n條刪除語句。而不是一次執(zhí)行一條條件刪除語句??!

當(dāng)待刪除的數(shù)據(jù)很多時(shí)會(huì)有很大的性能瓶頸?。?!如果批量刪除數(shù)據(jù)量較大,比如超過50條,可以采用JDBC直接刪除。這樣作的好處是只執(zhí)行一條sql刪除語句,性能會(huì)有很大的改善。同時(shí),緩存數(shù)據(jù)同步的問題,可以采用 hibernate清除二級(jí)緩存中的相關(guān)數(shù)據(jù)的方法。

調(diào)用 SessionFactory.evict(class) ;SessionFactory.evict(class,id)等方法。

所以說,對(duì)于一般的應(yīng)用系統(tǒng)開發(fā)而言(不涉及到集群,分布式數(shù)據(jù)同步問題等),因?yàn)橹辉谥虚g關(guān)聯(lián)表執(zhí)行批量刪除時(shí)調(diào)用了sql執(zhí)行,同時(shí)中間關(guān)聯(lián)表一般是執(zhí)行條件查詢不太可能執(zhí)行按id查詢。所以,此時(shí)可以直接執(zhí)行sql刪除,甚至不需要調(diào)用緩存的清除方法。這樣做不會(huì)導(dǎo)致以后配置了二級(jí)緩存引起數(shù)據(jù)有效性的問題。

退一步說,即使以后真的調(diào)用了按id查詢中間表對(duì)象的方法,也可以通過調(diào)用清除緩存的方法來解決。

4、具體的配置方法

根據(jù)我了解的很多hibernate的使用者在調(diào)用其相應(yīng)方法時(shí)都迷信的相信“hibernate會(huì)自行為我們處理性能的問題”,或者“hibernate會(huì)自動(dòng)為我們的所有操作調(diào)用緩存”,實(shí)際的情況是hibernate雖然為我們提供了很好的緩存機(jī)制和擴(kuò)展緩存框架的支持,但是必須經(jīng)過正確的調(diào)用其才有可能發(fā)揮作用!!所以造成很多使用hibernate的系統(tǒng)的性能問題,實(shí)際上并不是hibernate不行或者不好,而是因?yàn)槭褂谜邲]有正確的了解其使用方法造成的。相反,如果配置得當(dāng)hibernate的性能表現(xiàn)會(huì)讓你有相當(dāng)“驚喜的”發(fā)現(xiàn)。下面我講解具體的配置方法.

ibernate提供了二級(jí)緩存的接口:
net.sf.hibernate.cache.Provider,
同時(shí)提供了一個(gè)默認(rèn)的 實(shí)現(xiàn)net.sf.hibernate.cache.HashtableCacheProvider,
也可以配置 其他的實(shí)現(xiàn) 比如ehcache,jbosscache等。

具體的配置位置位于hibernate.cfg.xml文件中
true
net.sf.hibernate.cache.HashtableCacheProvider

很多的hibernate使用者在 配置到 這一步 就以為 完事了,
注意:其實(shí)光這樣配,根本 就沒有使用hibernate的二級(jí)緩存。

同時(shí)因?yàn)樗麄冊谑褂胔ibernate時(shí)大多時(shí)候是馬上關(guān)閉session,所以,一級(jí)緩存也沒有起到任何作用。結(jié)果就是沒有使用任何緩存,所有的hibernate操作都是直接操作的數(shù)據(jù)庫??!性能可以想見。

正確的辦法是除了以上的配置外還應(yīng)該配置每一個(gè)vo對(duì)象的具體緩存策略,在影射文件中配置。例如:

  1. <hibernate-mapping> 
  2. <class name="com.sobey.sbm.model.entitySystem.vo.DataTypeVO" table="dcm_datatype"> 
  3. <cache usage="read-write"/> 
  4. <id name="id" column="TYPEID" type="java.lang.Long"> 
  5. <generator class="sequence"/> 
  6. id> 
  7. <property name="name" column="NAME" type="java.lang.String"/> 
  8. <property name="dbType" column="DBTYPE" type="java.lang.String"/> 
  9. class> 
  10. hibernate-mapping> 

關(guān)鍵就是這個(gè),其有幾個(gè)選擇read-only,read-write,transactional,等然后在執(zhí)行查詢時(shí) 注意了 ,如果是條件查詢,或者返回所有結(jié)果的查詢,此時(shí)session.find()方法 不會(huì)獲取緩存中的數(shù)據(jù)。只有調(diào)用query.iterate()方法時(shí)才會(huì)調(diào)緩存的數(shù)據(jù)。同時(shí) get 和 load方法 是都會(huì)查詢緩存中的數(shù)據(jù) .

對(duì)于不同的緩存框架具體的配置方法會(huì)有不同,但是大體是以上的配置(另外,對(duì)于支持事務(wù)型,以及支持集群的環(huán)境的配置我會(huì)爭取在后續(xù)的文章中中發(fā)表出來)

總結(jié)
總之是根據(jù)不同的業(yè)務(wù)情況和項(xiàng)目情況對(duì)hibernate進(jìn)行有效的配置和正確的使用,揚(yáng)長避短。不存在適合于任何情況的一個(gè)“***”的方案。

以上結(jié)論及建議均建立在自己在對(duì) Hibernate 2.1.2中的測試結(jié)果以及以前的項(xiàng)目經(jīng)驗(yàn)的基礎(chǔ)上。如有謬處,請打家提出指正:)!


 

責(zé)任編輯:仲衡 來源: diybl
相關(guān)推薦

2018-07-14 21:59:57

緩存數(shù)據(jù)庫數(shù)據(jù)

2009-06-17 16:08:58

Hibernate C

2009-06-29 09:00:42

Hibernate的Q

2009-09-21 17:09:38

Hibernate C

2012-02-03 11:31:33

HibernateJava

2009-09-23 09:37:07

Hibernate緩存

2009-06-29 08:48:41

Hibernate緩存

2009-09-21 17:17:11

Hibernate二級(jí)

2009-06-18 14:51:12

Hibernate緩存Hibernate

2009-06-17 15:43:03

Hibernate緩存

2009-09-23 17:03:08

Hibernate S

2009-09-25 13:51:13

Hibernate S

2009-09-25 10:25:54

Hibernate緩存

2024-08-29 08:28:17

2009-06-30 14:08:00

Hibernate緩存

2014-11-04 10:34:27

JavaCache

2009-09-22 11:24:07

Hibernate查詢

2009-06-03 10:02:53

Hibernate批量刪除

2009-06-16 16:27:22

Hibernate優(yōu)化

2009-09-23 15:12:41

Hibernate視圖
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

尤物yw午夜国产精品视频| 精品久久久久久久久久久久| 成人a免费视频| 妺妺窝人体色www婷婷| 日韩深夜影院| 欧美日韩国产另类一区| 久久成人福利视频| 日韩aaaaa| 玛雅亚洲电影| 一区二区三区在线不卡| 美日韩精品免费| 国产美女www爽爽爽视频| 亚洲第一精品影视| www.亚洲一区| 37p粉嫩大胆色噜噜噜| 日韩第二十一页| 欧美日韩激情视频| 在线不卡视频一区二区| 无码精品在线观看| 韩国成人在线视频| 欧洲成人免费视频| 免费看一级一片| 成人女性视频| 亚洲精品动漫100p| 午夜福利123| 欧美xxxx做受欧美护士| 午夜精品久久久久久久99水蜜桃| 亚洲精品在线视频观看| 天堂资源中文在线| 亚洲性图久久| 日韩在线激情视频| 亚洲熟妇一区二区三区| 成人香蕉社区| 日韩欧美色电影| 色一情一区二区| 自拍偷自拍亚洲精品被多人伦好爽 | 五月花丁香婷婷| 波多野结衣久久精品| 亚洲成人你懂的| 欧美黄网在线观看| 日韩在线资源| 韩国精品久久久| 国产精品免费在线免费 | 欧美熟乱第一页| 99色精品视频| 超碰国产一区| 欧美日韩日本国产| 免费看国产一级片| 免费av不卡在线观看| 成人午夜av在线| 亚洲一区久久久| 国产免费无遮挡| 久久成人精品无人区| 国产精品爽黄69| 日韩欧美国产另类| 日本aⅴ精品一区二区三区| 欧美一级免费视频| 亚洲免费黄色网址| 欧美日韩免费| 欧美激情xxxx性bbbb| 久草网在线观看| 欧美日韩国产一区精品一区| 久久久久久亚洲| 日本在线观看视频网站| 亚洲第一区色| 欧洲s码亚洲m码精品一区| 天堂网中文字幕| 天堂成人国产精品一区| 国产精品jvid在线观看蜜臀| 国产精华7777777| 久久99久久精品欧美| 成人av在线亚洲| 成人毛片在线精品国产| av电影在线观看完整版一区二区| 久久国产精品-国产精品| 你懂的在线免费观看| 国产人久久人人人人爽| 亚洲永久一区二区三区在线| 久操视频在线观看| 亚洲国产综合视频在线观看| 国产在线精品91| 亚洲精品国产嫩草在线观看| 欧美另类久久久品| 日批视频在线看| 女同一区二区三区| 国产一区二区三区丝袜| 免费看特级毛片| 亚洲天堂激情| 国产精品激情av在线播放| 国产精品探花视频| av在线播放不卡| 亚洲不卡1区| 日本免费视频在线观看| 亚洲在线一区二区三区| 毛片av免费在线观看| 激情不卡一区二区三区视频在线| 亚洲丁香婷深爱综合| 精品成人无码一区二区三区| 中文不卡在线| 777午夜精品福利在线观看| 中文字幕777| 国产河南妇女毛片精品久久久| 欧美日韩电影一区二区| 亚洲产国偷v产偷v自拍涩爱| 97久久精品人人做人人爽50路| 色姑娘综合网| wwwww亚洲| 欧美唯美清纯偷拍| 欧美性生交xxxxx| 久久在线视频| 欧美综合一区第一页| 国产丝袜视频在线观看| 久久久久久99久久久精品网站| 永久免费看av| 欧美日韩亚洲国产| 亚洲二区在线播放视频| 婷婷伊人五月天| 日韩av电影免费观看高清完整版| 99免费在线观看视频| 激情小视频在线| 午夜激情一区二区三区| 成年人网站av| 日韩专区精品| 国产www精品| 少妇av在线播放| 一区二区三区丝袜| 黄色一级片免费的| 欧美日韩黑人| 青青草国产精品一区二区| 国产黄色大片网站| 国产精品免费视频网站| 日本久久精品一区二区| 日韩精品免费一区二区三区竹菊| 欧美成人精品在线观看| 中文字幕日韩第一页| 久久亚洲私人国产精品va媚药| 青青在线免费观看| 日本高清精品| 欧美久久精品一级黑人c片| 91成品人影院| 国产精品欧美久久久久一区二区 | 免费无遮挡无码永久在线观看视频| 青青国产91久久久久久| 青青成人在线| 偷拍中文亚洲欧美动漫| 亚洲欧洲日本专区| 中文字幕av影院| a亚洲天堂av| 少妇人妻大乳在线视频| 第四色中文综合网| 97免费中文视频在线观看| 天天综合在线视频| 欧美日韩国产精品一区| 青青草视频成人| 噜噜爱69成人精品| 欧美日韩天天操| 欧美日韩五区| 色午夜这里只有精品| 91福利在线观看视频| 国产精品青草久久| 国产精品久久久久久久99| 亚洲第一偷拍| 国产激情一区二区三区在线观看| 欧洲一区二区三区| 亚洲高清久久网| 欧美videossex极品| 国产婷婷一区二区| 亚洲久久中文字幕| 中文字幕免费一区二区| 国产伦精品一区二区三区照片91| zzzwww在线看片免费| 亚洲免费中文字幕| 中文字幕精品无| 一区在线观看视频| 国产一级二级av| 亚洲欧美日韩在线观看a三区| 蜜桃网站成人| 95精品视频| 97国产在线视频| 加勒比一区二区三区在线| 欧美日韩一区在线| 久久久久久久久久久97| 久久蜜桃av一区二区天堂| 国产又黄又猛又粗| 欧美区国产区| 任我爽在线视频精品一| 亚洲青青久久| **欧美日韩vr在线| 欧美jizz18性欧美| 亚洲第一福利视频| 懂色av蜜臀av粉嫩av喷吹| 亚洲欧洲综合另类| 五月婷婷综合在线观看| 狠狠狠色丁香婷婷综合激情| 免费看毛片的网址| 日韩系列欧美系列| 国产乱码精品一区二区三区中文| 亚州一区二区三区| 欧美激情视频在线免费观看 欧美视频免费一| 少妇一区二区三区四区| 欧美日韩激情在线| 青青国产在线观看| 中文字幕日韩欧美一区二区三区| 污污污www精品国产网站| 麻豆精品视频在线观看视频| 欧美综合在线播放| 婷婷激情图片久久| 日本免费高清一区二区| 66精品视频在线观看| 国产精品爽黄69| 亚洲国产欧美日本视频| 欧美精品日韩三级| 香蕉视频免费在线播放| 亚洲免费av电影| 亚洲精品国产精品乱码不卡| 欧美日韩高清影院| 日日夜夜操视频| 亚洲国产视频网站| 久久中文免费视频| 国产精品久久久久久久久久久免费看| 在线视频 日韩| 国产.欧美.日韩| 做a视频在线观看| 日本欧美久久久久免费播放网| 精品少妇一区二区三区在线| 国产一区二区三区自拍| 一级黄色录像免费看| 久久亚洲国产| 亚洲国产欧美不卡在线观看| 国产欧美一区二区三区精品观看 | 香蕉视频网站在线观看| 亚洲欧美日韩精品久久亚洲区| 日韩在线观看视频网站| 日韩精品一区二区三区蜜臀| 一本色道久久综合精品婷婷| 欧美亚洲一区二区在线观看| 高潮毛片又色又爽免费 | 制服丝袜在线一区| 色综合久久久久网| 一级片中文字幕| 婷婷久久综合九色国产成人 | 亚洲激情午夜| 成年人网站国产| 影音先锋久久| 欧美日韩二三区| 国产精品久久久亚洲一区| 久操网在线观看| 亚洲精品影视| 超碰97人人射妻| 日韩精品一二三| 欧美日韩亚洲一二三| 三级成人在线视频| 天天色综合社区| 极品尤物av久久免费看| 亚洲综合20p| 国产精品1024| 色综合久久五月| 91麻豆成人久久精品二区三区| 特大黑人巨人吊xxxx| 久久夜色精品国产欧美乱极品| japanese中文字幕| 国产精品美女一区二区在线观看| 三级黄色片在线观看| ●精品国产综合乱码久久久久| 911国产在线| 亚洲黄色片在线观看| 国产成人啪精品午夜在线观看| 午夜精品免费在线观看| 免费又黄又爽又猛大片午夜| 欧美老年两性高潮| 亚洲AV无码一区二区三区性| 亚洲国模精品一区| 久久经典视频| 精品国产一区二区三区久久狼黑人| 国产在线高清视频| 欧美精品成人91久久久久久久| 女人让男人操自己视频在线观看 | 精品久久久久久久久久岛国gif| 91九色视频在线观看| 日本在线中文字幕一区| 亚洲第一导航| 亚洲激情综合| 午夜免费高清视频| 国产精品亚洲午夜一区二区三区 | 亚洲综合视频在线| 福利网址在线观看| 91精品国产综合久久久久久漫画 | 久久一区二区精品| 欧美日韩国产在线观看网站 | 精品国产乱码久久久久久蜜臀| 色视频在线观看免费| 久久精品国亚洲| 鲁鲁在线中文| 成人性生交大片免费看视频直播| 风间由美中文字幕在线看视频国产欧美 | 中文乱码免费一区二区| 久草免费在线观看视频| 在线亚洲人成电影网站色www| av中文字幕免费| 亚洲性夜色噜噜噜7777| 欧美性受ⅹ╳╳╳黑人a性爽| 国产精品久久精品| 欧美调教在线| 日本老太婆做爰视频| 视频一区二区三区入口| 无码人妻一区二区三区在线| 欧美激情资源网| 国产精品7777777| 欧美一级精品在线| 福利成人在线观看| 97精品国产97久久久久久免费 | 永久av免费网站| 欧美色欧美亚洲高清在线视频| 国产肥老妇视频| 综合欧美国产视频二区| 校园春色亚洲| 国产欧美日韩一区二区三区| 91精品国产91久久久久久黑人| 精品久久久久久中文字幕2017| eeuss影院一区二区三区 | 精品动漫一区二区三区| av网站免费大全| 日韩亚洲一区二区| 亚洲一区二区三区四区| 久久精品国产一区二区三区日韩 | 96精品视频在线| 亚洲成人影音| 在线观看av的网址| 国产一区二区三区久久久 | 亚洲五码中文字幕| 精品人妻无码一区二区三区蜜桃一| 中文字幕亚洲综合| 日韩成人亚洲| 亚洲成人自拍视频| 秋霞影院一区二区| 午夜在线观看一区| 91国内精品野花午夜精品| 青青国产在线| 茄子视频成人在线| 丝袜美腿综合| 凹凸国产熟女精品视频| 成人av在线观| 在线观看亚洲欧美| 亚洲女成人图区| 偷拍视频一区二区三区| 日韩一区二区三区资源| 日韩中文字幕一区二区三区| 人人妻人人澡人人爽| 色婷婷av一区二区三区软件 | www.日日操| 国产亚洲一二三区| 欧美性受xxx黑人xyx性爽| 国产亚洲精品日韩| 国产精品黄色片| 中文字幕剧情在线观看一区| 激情综合色综合久久| 久久久精品视频免费观看| 精品少妇一区二区三区日产乱码| 日韩专区av| 国产欧美日韩一区| 免费在线观看成人av| 色欲狠狠躁天天躁无码中文字幕 | 91国内在线播放| 亚洲欧美激情视频在线观看一区二区三区| 国产肥老妇视频| 91精品国产乱码久久久久久久久| 亚洲aaa级| 孩娇小videos精品| 亚洲欧美国产三级| 五月婷婷在线播放| 国产精品观看在线亚洲人成网| 欧美一区2区| 三级av免费看| 天天综合天天做天天综合| 国产专区在线| 91香蕉国产在线观看| 国语自产精品视频在线看8查询8| 少妇光屁股影院| 欧美三级在线看| 欧美卡一卡二| 品久久久久久久久久96高清| 麻豆freexxxx性91精品| 精品午夜福利在线观看| 亚洲男人第一网站| 久久精品一级| 欧美日韩在线不卡视频| 日韩毛片一二三区| 亚洲欧美日韩精品永久在线| 国产一区二区丝袜| 亚洲国产日本| 亚洲天堂网av在线| 日韩成人av在线| 亚洲一区二区av| 国产免费观看高清视频| 国产精品天美传媒沈樵| 黄色一级大片在线免费看国产一| 国产精品久久久久免费a∨大胸| 欧美精品福利| 激情无码人妻又粗又大| 亚洲高清在线观看|