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

Hibernate單元測(cè)試的方法HSQLDB詳述

開(kāi)發(fā) 后端
在數(shù)據(jù)庫(kù)和目標(biāo)代碼之間傳輸數(shù)據(jù)的方法很多,在這里介紹一個(gè)利用HSQLDB進(jìn)行Hibernate單元測(cè)試的方法。

曾經(jīng)使用許多方法在數(shù)據(jù)庫(kù)和目標(biāo)代碼之間傳輸數(shù)據(jù)。從手動(dòng)編碼的SQL到JDO,然后再到EJB,我從未找到一種特別喜歡的方法。自從采用測(cè)試驅(qū)動(dòng)開(kāi)發(fā)(TDD)作為指導(dǎo)原則以來(lái),這種不滿情緒變得更加強(qiáng)烈。

單元測(cè)試的障礙應(yīng)盡可能少。在關(guān)系數(shù)據(jù)庫(kù)中,障礙的范圍從外部依賴(數(shù)據(jù)庫(kù)在運(yùn)行嗎?)到保持關(guān)系模型和對(duì)象模型同步的速度。由于這些原因,保持?jǐn)?shù)據(jù)庫(kù)訪問(wèn)代碼與核心對(duì)象模型分離且無(wú)需涉及真實(shí)數(shù)據(jù)庫(kù)而進(jìn)行盡可能多的測(cè)試是很重要的。

通常這會(huì)導(dǎo)致我們進(jìn)入下面兩種模式之一。***種是具體化所有訪問(wèn)域?qū)ο蟮臄?shù)據(jù)以及數(shù)據(jù)與單獨(dú)類或接口之間的關(guān)系。這就是典型的能夠檢索、編輯、刪除和添加域?qū)嶓w的數(shù)據(jù)存儲(chǔ)對(duì)象。這在單元測(cè)試中是最容易模擬出來(lái)的,但趨向于把域模型對(duì)象作為不帶有任何關(guān)系行為的純數(shù)據(jù)對(duì)象。直接從父對(duì)象訪問(wèn)子記錄是最理想的,而不是將父對(duì)象處理為第三方類來(lái)決定子記錄。

其他方法已經(jīng)使訪問(wèn)接口的域?qū)ο筮M(jìn)入數(shù)據(jù)映射層(一種la Martin Fowler的數(shù)據(jù)映象模式)。這具有推動(dòng)域模型中的對(duì)象關(guān)系的優(yōu)點(diǎn),在域模型中,對(duì)象關(guān)系型接口只需表達(dá)一次即可。使用域模型的類不支持持久性機(jī)制,因?yàn)樗旧韮?nèi)在化到域模型中。這使代碼集中在設(shè)法解決的業(yè)務(wù)問(wèn)題,而很少關(guān)注對(duì)象關(guān)系型映射機(jī)制。

我的當(dāng)前項(xiàng)目涉及到處理大量的棒球統(tǒng)計(jì)數(shù)據(jù),并使用這些數(shù)據(jù)進(jìn)行模擬。因?yàn)閿?shù)據(jù)已經(jīng)在關(guān)系數(shù)據(jù)庫(kù)中,所以對(duì)于我來(lái)說(shuō),有機(jī)會(huì)開(kāi)發(fā)Hibernate對(duì)象關(guān)系型映射系統(tǒng)。我曾對(duì)Hibernate有很深刻的印象,但我遇到的一個(gè)問(wèn)題是,在使用Hibernate進(jìn)行單元測(cè)試的數(shù)據(jù)映射時(shí),設(shè)法插入一個(gè)間接層。該附加層非常脆弱,編寫(xiě)起來(lái)感到非常困難。實(shí)際部署版本簡(jiǎn)單地通過(guò)了特定于Hibernate的實(shí)現(xiàn)。更壞的情況是,模擬版本比真正的“產(chǎn)品級(jí)”版本更復(fù)雜,只因?yàn)槟M版本里沒(méi)有基本對(duì)象存儲(chǔ)器和帶有Hibernate的映射。

我也使用很多復(fù)雜的Hibernate查詢,想要對(duì)應(yīng)用程序的重要部分進(jìn)行單元測(cè)試。然而,對(duì)活動(dòng)的數(shù)據(jù)庫(kù)進(jìn)行測(cè)試不是好主意,因?yàn)檫@幾乎總是產(chǎn)生維護(hù)問(wèn)題。另外,由于測(cè)試***互相獨(dú)立,在測(cè)試上下文數(shù)據(jù)中使用相同的主鍵意味著必須在每次測(cè)試前創(chuàng)建代碼來(lái)清理數(shù)據(jù)庫(kù),當(dāng)涉及到大量關(guān)系時(shí)就成為一個(gè)實(shí)際問(wèn)題。
通過(guò)使用HSQLDB和Hibernate強(qiáng)大的模式生成工具,能夠?qū)?yīng)用程序映射層進(jìn)行單元測(cè)試,并在對(duì)象查詢中找到不計(jì)其數(shù)的bug,這在以前手工測(cè)試時(shí)是做不到的。利用下面的技術(shù)概述,可以在開(kāi)發(fā)過(guò)程中對(duì)整個(gè)應(yīng)用程序進(jìn)行測(cè)試,并且在測(cè)試有效區(qū)域內(nèi)沒(méi)有損害。

設(shè)置HSQLDB

以前使用HSQLDB 1.7.3.0 版。為了使用數(shù)據(jù)庫(kù)的內(nèi)存版本,需要激活org.hsqldb.JDBCDriver的靜態(tài)加載程序。當(dāng)獲得JDBC連接時(shí),就可以使用JDBC url例如jdbc:hspldb:mem:yourdb,這里’yourdb’就是想要使用的內(nèi)存數(shù)據(jù)庫(kù)的名稱。

因?yàn)槭褂肏ibernate (3.0 beta 4),所以我?guī)缀鯚o(wú)需接觸實(shí)際活動(dòng)的JDBC對(duì)象。相反,我可以讓Hibernate完成很多繁重的任務(wù),包括從Hibernate映射文件中自動(dòng)創(chuàng)建數(shù)據(jù)庫(kù)模式。因?yàn)镠ibernate創(chuàng)建自身專有的連接池,所以它會(huì)基于TestSchema類中的配置代碼自動(dòng)加載HSQLDB JDBC驅(qū)動(dòng)程序。下面就是該類的靜態(tài)的初始化程序。

   public class TestSchema {
static {
Configuration config = new Configuration().
setProperty("hibernate.dialect", "org.hibernate.dialect.HSQLDialect").
setProperty("hibernate.connection.driver_class", "org.hsqldb.jdbcDriver").
setProperty("hibernate.connection.url", "jdbc:hsqldb:mem:baseball").
setProperty("hibernate.connection.username", "sa").
setProperty("hibernate.connection.passWord", "").
setProperty("hibernate.connection.pool_size", "1").
setProperty("hibernate.connection.autocommit", "true").
setProperty("hibernate.cache.provider_class", "org.hibernate.cache.HashtableCacheProvider").
setProperty("hibernate.hbm2ddl.auto", "create-drop").
setProperty("hibernate.show_sql", "true").
addClass(Player.class).
addClass(BattingStint.class).
addClass(FieldingStint.class).
addClass(PitchingStint.class);
HibernateUtil.setSessionFactory(config.buildSessionFactory());
}


Hibernate提供了許多不同的方式來(lái)配置該框架,包括程序方面的配置。上述代碼設(shè)置了連接池。注意,使用HSQLDB的內(nèi)存數(shù)據(jù)庫(kù)需要用戶名’sa’。還樣要確保指定一個(gè)空格作為口令。為了啟動(dòng)Hibernate的自動(dòng)模式生成功能,需設(shè)置hibernate.hbm2ddl.auto屬性為’creat-drop’。

實(shí)際測(cè)試 我的項(xiàng)目是處理將大量的棒球數(shù)據(jù),所以我添加了四個(gè)進(jìn)行映射的類(Player、PintchingStint、,BattingSint和FieldStint)。***創(chuàng)建Hibernate的會(huì)話工廠,并將其插入HibernateUtil類,該類只為Hibernate會(huì)話的整個(gè)應(yīng)用程序提供一個(gè)訪問(wèn)方法。HibernateUtil的代碼如下:

   import org.hibernate.*;
import org.hibernate.cfg.Configuration;
public class HibernateUtil {
private static SessionFactory factory;
public static synchronized Session getSession() {
if (factory == null) {
factory = new Configuration().configure().buildSessionFactory();
}
return factory.openSession();
}
public static void setSessionFactory(SessionFactory factory) {
HibernateUtil.factory = factory;
}
}

因?yàn)樗写a(經(jīng)過(guò)單元測(cè)試的產(chǎn)品級(jí)代碼)都是從HibernateUtil獲取Hibernate會(huì)話,所以能在同一個(gè)位置對(duì)其進(jìn)行配置。為了對(duì)代碼的***位進(jìn)行單元測(cè)試而訪問(wèn)TestSchema類將會(huì)激活靜態(tài)初始化程序,該程序?qū)惭bHibernate并且將測(cè)試SessionFactory插入到HibernateUtil中。對(duì)于產(chǎn)品級(jí)代碼,可以使用標(biāo)準(zhǔn)hibernate.cfg.XML配置機(jī)制來(lái)初始化 SessionFactory。那么單元測(cè)試中的外部特征是什么?下面的測(cè)試代碼片段是用來(lái)檢查邏輯的,決定運(yùn)動(dòng)員在棒球聯(lián)盟比賽中是哪個(gè)位置的人選:
   public void testGetEligiblePositions() throws Exception {
Player player = new Player("playerId");
TestSchema.addPlayer(player);
FieldingStint stint1 = new FieldingStint("playerId", 2004, "SEA", Position.CATCHER);
stint1.setGames(20);
TestSchema.addFieldingStint(stint1);
Set positions = player.getEligiblePositions(2004);
assertEquals(1, positions.size());
assertTrue(positions.contains(Position.CATCHER));
}

***次創(chuàng)建新Player實(shí)例并通過(guò)addPlayer()方法添加到TestSchema中。必須首先完成此步驟,因?yàn)镕idldStint類和Player類之間有外鍵關(guān)系。如果不首先添加該實(shí)例,在設(shè)法添加FieldingStint時(shí)將會(huì)出現(xiàn)外鍵約束違例。一旦測(cè)試上下文就位,就可以測(cè)試getEligiblePositions()方法來(lái)檢索校正數(shù)據(jù)。下面是在TsetSchema中addPlayer()方法的代碼。您將注意到使用Hibernate而不是bare-metal JDBC代碼:
    public static void addPlayer(Player player) {
if (player.getPlayerId() == null) {
throw new IllegalArgumentException("No primary key specified");
}
Session session = HibernateUtil.getSession();
Transaction transaction = session.beginTransaction();
try {
session.save(player, player.getPlayerId());
transaction.commit();
}

在單元測(cè)試中最重要的就是要保持測(cè)試實(shí)例是獨(dú)立的。因?yàn)樵摲椒ㄈ匀簧婕皵?shù)據(jù)庫(kù),所以需要一種方法在每個(gè)測(cè)試實(shí)例之前清理數(shù)據(jù)庫(kù)。在我的數(shù)據(jù)庫(kù)架構(gòu)中有四個(gè)表,所以我在TestSchemaz上編寫(xiě)了reset()方法,該方法從使用JDBC的表中刪除所有行。注意,因?yàn)镠SQLDB能識(shí)別外鍵,刪除表的順序是很重要的,下面是代碼:
    public static void reset() throws SchemaException {
Session session = HibernateUtil.getSession();
try {
Connection connection = session.connection();
try {
Statement statement = connection.createStatement();
try {
statement.executeUpdate("delete from Batting");
statement.executeUpdate("delete from Fielding");
statement.executeUpdate("delete from Pitching");
statement.executeUpdate("delete from Player");
connection.commit();
}
finally {
statement.close();
}
}
catch (HibernateException e) {
connection.rollback();
throw new SchemaException(e);
}
catch (SQLException e) {
connection.rollback();
throw new SchemaException(e);
}
}
catch (SQLException e) {
throw new SchemaException(e);
}
finally {
session.close();
}
}

當(dāng)確定在Hibernate 3.0中進(jìn)行大量刪除操作時(shí),應(yīng)該能從應(yīng)用程序中刪除直接JDBC的***一位。到此時(shí)為止,必須獲取數(shù)據(jù)庫(kù)連接并向數(shù)據(jù)庫(kù)直接提交SQL。 在確保沒(méi)有關(guān)閉連接的情況下,為了釋放資源,只關(guān)閉會(huì)話就足夠了。出于手工編寫(xiě)許多JCBC代碼來(lái)進(jìn)行開(kāi)發(fā)的習(xí)慣,***個(gè)版本關(guān)閉了JDBC連接。因?yàn)橥ㄟ^(guò)配置Hibernate創(chuàng)建的連接池只帶有一個(gè)鏈接,在***個(gè)之后就完全破壞了測(cè)試。一定要注意這種情況! 既然在測(cè)試類運(yùn)行時(shí)(設(shè)想運(yùn)行所有的測(cè)試實(shí)例)不能確定數(shù)據(jù)庫(kù)的狀態(tài),應(yīng)該在setUp()方法中包含數(shù)據(jù)庫(kù)清除,如下所示:
    public void setUp() throws Exception {
TestSchema.reset();
}

結(jié)束語(yǔ)

在使用像Hibernate這種復(fù)雜的O/R映射程序時(shí),必須能夠測(cè)試實(shí)際存在(real-live)的RDBMS,而不會(huì)發(fā)生任何針對(duì)已部署數(shù)據(jù)庫(kù)的爭(zhēng)論。雖然Hibernate有內(nèi)置模式生成工具,讓此類測(cè)試特別簡(jiǎn)單,但是在這里展示的例子并不排除Hibernate,并且可能與JDO或TopLink一起運(yùn)行。使用上面描述的設(shè)置,您不必離開(kāi)舒適的IDE環(huán)境,但仍然可以對(duì)代碼進(jìn)行大量測(cè)試。

【編輯推薦】

  1. Struts+Spring+Hibernate開(kāi)發(fā)入行真功夫
  2. 優(yōu)化Hibernate性能的幾點(diǎn)建議
  3. Hibernate 3新特性介紹及發(fā)展趨勢(shì)
您正在閱讀:
  • Hibernate單元測(cè)試的方法:HSQLDB
  • 責(zé)任編輯:張攀 來(lái)源: 考試大
    相關(guān)推薦

    2009-09-25 10:33:25

    Hibernate單元

    2009-09-29 16:21:31

    Hibernate單元

    2011-05-16 16:52:09

    單元測(cè)試徹底測(cè)試

    2023-07-26 08:58:45

    Golang單元測(cè)試

    2017-01-14 23:42:49

    單元測(cè)試框架軟件測(cè)試

    2009-09-01 10:20:06

    protected方法單元測(cè)試

    2009-12-23 15:03:52

    WPF單元測(cè)試

    2024-10-16 16:09:32

    2011-06-20 17:25:02

    單元測(cè)試

    2009-06-23 18:19:32

    單元測(cè)試Hibernate配置

    2017-01-16 12:12:29

    單元測(cè)試JUnit

    2017-01-14 23:26:17

    單元測(cè)試JUnit測(cè)試

    2011-06-14 15:56:42

    單元測(cè)試

    2022-05-12 09:37:03

    測(cè)試JUnit開(kāi)發(fā)

    2020-08-18 08:10:02

    單元測(cè)試Java

    2017-03-23 16:02:10

    Mock技術(shù)單元測(cè)試

    2021-05-05 11:38:40

    TestNGPowerMock單元測(cè)試

    2020-05-07 17:30:49

    開(kāi)發(fā)iOS技術(shù)

    2011-07-04 18:16:42

    單元測(cè)試

    2011-06-14 15:39:46

    單元測(cè)試
    點(diǎn)贊
    收藏

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

    国产探花在线精品| 蜜臀国产一区| 丁香天五香天堂综合| 亚洲特级片在线| 成人激情视频在线| 免费在线黄色片| 天堂俺去俺来也www久久婷婷| 色婷婷久久久久swag精品| 中文字幕免费在线不卡| 蜜桃av噜噜一区二区三区麻豆| 亚洲精品综合| 色偷偷av一区二区三区乱| 一区二区在线免费观看视频| 成人福利视频| 亚洲一区二区av在线| 日韩电影天堂视频一区二区| 国内老熟妇对白hdxxxx| 天堂在线亚洲视频| 久久久中文字幕| 亚洲女人毛茸茸高潮| 好吊妞视频这里有精品| 欧美综合一区二区| 日韩国产成人无码av毛片| av在线二区| 成人黄色小视频在线观看| 国产精品中文字幕在线观看| 黄色av网址在线观看| 主播大秀视频在线观看一区二区| 亚洲一区二区五区| 久久久国产精华液999999| 日韩av地址| 豆国产96在线|亚洲| 国产精品视频白浆免费视频| 五月天综合激情| 欧美激情1区2区3区| 色狠狠久久aa北条麻妃| 无码人妻精品一区二区中文| 精品欠久久久中文字幕加勒比| 91精品国产aⅴ一区二区| 日本激情视频在线播放| 东京一区二区| 精品久久香蕉国产线看观看亚洲| 免费极品av一视觉盛宴| caoporn97在线视频| 国产精品久久久久aaaa樱花 | 欧美激情亚洲精品| 日韩国产第一页| 久久福利综合| 中文字幕亚洲欧美日韩高清 | 老熟妇高潮一区二区高清视频| 国产中文字幕精品| 91夜夜揉人人捏人人添红杏| 91成年人视频| 激情亚洲综合在线| 91精品中国老女人| 国产三级伦理片| 国产乱人伦偷精品视频免下载| 国产在线观看91精品一区| 中文字幕视频免费观看| 麻豆精品视频在线观看免费| 国产精品揄拍500视频| 伊人成人在线观看| 久99久精品视频免费观看| 国产日本欧美一区二区三区在线| 一道本无吗一区| 国产毛片精品国产一区二区三区| 91大片在线观看| 免费国产精品视频| 26uuu国产日韩综合| 日本精品一区| 午夜在线观看视频| 亚洲欧美日韩国产综合| 国产成人艳妇aa视频在线 | 性欧美69xoxoxoxo| 欧美成人久久久| 日本五十路女优| 久久一区二区三区超碰国产精品| 国产精品久久久久久久久久| 一卡二卡在线视频| 国产高清亚洲一区| 美女被啪啪一区二区| 超碰免费在线| 樱花草国产18久久久久| 欧美在线一区视频| 欧美片第一页| 91精品视频网| 超碰男人的天堂| 成人情趣视频| 欧美激情一区二区三区久久久 | 激情高潮到大叫狂喷水| 真实国产乱子伦精品一区二区三区| 欧美国产亚洲精品久久久8v| 91丝袜一区二区三区| 久久99久久99精品免视看婷婷| 99久久伊人精品影院| 青青草免费在线| 亚洲人精品一区| 男人天堂网视频| 国产日韩欧美视频| 在线xxxxx| 激情五月色综合国产精品| 久久精品91久久香蕉加勒比| 日韩 国产 在线| 毛片不卡一区二区| 国产一区精品在线| 素人av在线| 精品久久久久久久大神国产| 色戒在线免费观看| 色爱综合av| 久久91亚洲精品中文字幕| 潘金莲一级淫片aaaaaa播放| 韩国毛片一区二区三区| 欧美一区二区三区四区夜夜大片 | 国产精品区一区二区三| 国产精品www在线观看| 久久精品国产福利| 亚洲男人第一网站| 豆国产97在线 | 亚洲| 乱一区二区av| 日本不卡一区二区三区在线观看 | 亚洲最大福利网| 国产日产精品久久久久久婷婷| 亚洲精品乱码久久久久久日本蜜臀| 北条麻妃av高潮尖叫在线观看| 亚洲一区二区三区中文字幕在线观看 | 国产精品亚洲美女av网站| 色婷婷av一区二区三区之红樱桃| 国产精品国产三级国产普通话99| 免费日韩视频在线观看| 欧美亚洲国产日韩| 欧美激情久久久| 国产成人精品a视频| 国产精品麻豆久久久| 男女视频一区二区三区| 亚洲亚洲免费| 欧美在线免费看| 亚洲欧美日韩精品永久在线| 亚洲一区av在线| www日本在线观看| 亚洲欧美色图| 亚洲一区二区三区sesese| 日本中文在线观看| 在线亚洲免费视频| 国产视频不卡在线| 女仆av观看一区| 欧美老少做受xxxx高潮| 国产手机视频在线| 亚洲欧美成aⅴ人在线观看 | 成人爽a毛片一区二区免费| 欧美性受xxxx黑人猛交88| 福利一区和二区| xvideos成人免费中文版| 一区二区www| 亚洲日本电影在线| 国产人妻精品久久久久野外| 欧美.日韩.国产.一区.二区| 亚洲字幕在线观看| 欧美xxx黑人xxx水蜜桃| 亚洲国产成人精品久久| 日韩精品一区二区亚洲av| 久久免费偷拍视频| 亚洲欧美在线精品| 中文字幕一区二区三区乱码图片| 91在线播放视频| av午夜在线观看| 亚洲国产精品推荐| 91porny九色| 中文字幕在线观看不卡视频| 久久久久无码精品| 日韩视频久久| 亚洲国产精品一区在线观看不卡| 国产精品久久久久久久久久齐齐| 久久精品国产欧美亚洲人人爽| 国产三级精品在线观看| 午夜视频久久久久久| 亚洲黄色小说视频| 国产麻豆91精品| 久久综合色视频| 成人在线国产| 97人摸人人澡人人人超一碰| 亚洲欧美电影| 久久久www成人免费精品张筱雨| 亚洲国产精品二区| 一本到一区二区三区| 亚洲AV成人无码精电影在线| 成人的网站免费观看| 国产一级不卡毛片| 欧美fxxxxxx另类| 另类欧美小说| 国产精品免费精品自在线观看| 国产69精品久久久| 无遮挡的视频在线观看| 亚洲国产精品成人精品| 中文资源在线播放| 午夜激情一区二区| 手机在线中文字幕| 91视频com| 两性午夜免费视频| 首页亚洲欧美制服丝腿| 成人免费看片'免费看| 精品国产aⅴ| 亚洲a中文字幕| 日韩一区二区三区在线免费观看| 九九久久精品一区| 亚洲成人影院麻豆| 亚洲激情在线观看| 精品乱子伦一区二区| 欧美优质美女网站| 久久久久久久极品| 一区二区三区在线视频观看| 日韩黄色中文字幕| 久久综合久久99| 精人妻一区二区三区| 九色porny丨国产精品| 美女福利视频在线| 亚洲人人精品| 国产一级不卡视频| 99久久久久久中文字幕一区| 日本不卡一区二区三区视频| 欧美黑人做爰爽爽爽| 成人av网站观看| 亚洲日韩中文字幕一区| 国产精品久久久久久久av电影| 一个人www视频在线免费观看| 欧美大奶子在线| 69xxx在线| 久久精品国产96久久久香蕉| 中文日本在线观看| 亚洲视频在线播放| 亚洲日本香蕉视频| 亚洲成人免费在线视频| 亚洲av无码一区二区三区dv| 欧美一区二区三区视频在线 | 亚洲第一级黄色片| 性生交生活影碟片| 日韩久久精品一区| 亚洲奶汁xxxx哺乳期| 日韩欧美一级在线播放| 精品国产999久久久免费| 日韩三级在线免费观看| 精品国产99久久久久久宅男i| 欧美日本在线一区| 一区二区三区精彩视频| 欧美精品在欧美一区二区少妇| 中文字幕在线视频第一页| 欧美午夜片在线观看| 国产偷人爽久久久久久老妇app| 日本韩国一区二区三区| 日韩不卡高清视频| 欧美三级韩国三级日本三斤| 亚洲永久精品一区| 欧美日韩五月天| 国产精品无码在线播放| 91精品欧美福利在线观看| 国产丝袜在线视频| 欧美成人一区二区| 色香蕉在线视频| 亚洲欧美日本精品| www日韩tube| 久久精品成人欧美大片古装| 超碰在线最新| 久久久天堂国产精品女人| а√在线中文在线新版| 热草久综合在线| 巨大黑人极品videos精品| 成人欧美一区二区三区黑人| 一区二区三区在线资源| 黄色小网站91| 欧美丝袜丝交足nylons172| 中文字幕一区二区三区乱码| 欧美日韩蜜桃| 日本在线观看a| 久久国产夜色精品鲁鲁99| 天堂在线精品视频| 99在线精品免费| 国产白丝一区二区三区| 一区二区三区免费网站| 久久久久女人精品毛片九一| 欧美日韩一区二区三区在线看| 国产黄色小视频在线观看| 日韩成人xxxx| 免费a级人成a大片在线观看| 久久人人看视频| 国产精品诱惑| 国产亚洲精品美女久久久m| av在线不卡免费观看| 成人在线免费观看视频网站| 国产欧美短视频| 亚洲免费黄色网| thepron国产精品| 欧美a级片免费看| 婷婷一区二区三区| 国产又爽又黄又嫩又猛又粗| 日韩欧美国产小视频| 黄色毛片在线观看| 欧美福利视频在线| 亚洲一区二区三区四区| a级国产乱理论片在线观看99| 精品在线91| 日韩网站在线免费观看| 免费成人在线影院| 成人h动漫精品一区| 亚洲老妇xxxxxx| 免费看av在线| 亚洲精品第一页| 污污的视频在线观看| 国产精品老女人视频| 欧美1区二区| 国产91沈先生在线播放| 另类专区欧美蜜桃臀第一页| 色天使在线视频| 一区二区三区国产精品| 亚洲一区中文字幕永久在线| 日韩精品免费一线在线观看| 四虎亚洲精品| 成人免费午夜电影| 成人在线免费小视频| av天堂永久资源网| 成人美女在线视频| 免费视频一二三区| 欧美男女性生活在线直播观看 | 久久久国产视频91| 色综合天天色| 欧美xxxx黑人又粗又长密月| 亚洲欧洲另类| 美女扒开腿免费视频| 亚洲精品一二三| 97超碰人人模人人人爽人人爱| 亚洲新中文字幕| 欧美三级网址| 欧美精品一区二区三区在线四季| 亚洲国内精品| 精品无码国产一区二区三区51安| 亚洲综合在线五月| 成人黄色免费视频| 欧美国产极速在线| 一区二区三区国产好| 日韩一级片一区二区| 精东粉嫩av免费一区二区三区| 国产综合精品久久久久成人av| 色综合中文综合网| 国际av在线| 国产精品精品视频| 日韩理论电影| 女人高潮一级片| 亚洲婷婷国产精品电影人久久| 91国内精品久久久| 久久精品久久久久电影| 国产精品美女久久久久人| 永久免费网站视频在线观看| 国产成人精品一区二| 国产真实的和子乱拍在线观看| 精品毛片乱码1区2区3区| av资源在线看片| 欧美日韩一区在线观看视频| 老司机精品久久| 亚洲国产精品一区二区久久hs| 欧美区视频在线观看| av网址在线| 久久av二区| 日本欧洲一区二区| 在线观看美女av| 精品国产成人在线影院| 美女搞黄视频在线观看| 日韩免费av电影| 狠狠久久亚洲欧美| 九九九在线视频| 日韩精品在线视频| 狠狠久久综合| 久久久久久av无码免费网站下载| 不卡欧美aaaaa| 中文字幕乱码人妻二区三区| www.亚洲天堂| 另类在线视频| 免费看污污网站| 亚洲一区二区三区小说| 欧美精品久久久久久久久久丰满| 国产精品人成电影| 亚洲午夜极品| 精品无人区无码乱码毛片国产 | 全色精品综合影院| 国产视频福利一区| 亚洲福利免费| 国产日韩精品中文字无码| 欧美r级在线观看| 朝桐光一区二区| 91网站在线观看免费| 久久久久国产精品厨房| 国产成人精品亚洲精品色欲| 欧美在线视频网| 欧美一区视频| 国产又粗又猛又爽视频| 日韩欧美久久久| 99re66热这里只有精品4| 日本精品福利视频| 国产三级精品三级在线专区| 亚洲国产综合网| 国产在线观看91精品一区| 欧美亚洲专区| www欧美com|