日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 前端技术 > javascript >内容正文

javascript

使用Spring Data Cassandra缓存的预备语句

發(fā)布時(shí)間:2023/12/3 javascript 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用Spring Data Cassandra缓存的预备语句 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

今天,我有一篇簡(jiǎn)短的文章,內(nèi)容涉及在Spring Data Cassandra中使用Prepared Statements。 Spring為您提供了一些實(shí)用程序,使您可以更輕松地使用“預(yù)備語(yǔ)句”,而不必依靠自己使用Datastax Java驅(qū)動(dòng)程序手動(dòng)注冊(cè)查詢。 Spring代碼提供了一個(gè)緩存來(lái)存儲(chǔ)經(jīng)常使用的準(zhǔn)備好的語(yǔ)句。 允許您通過(guò)緩存執(zhí)行查詢,緩存可以從緩存中檢索準(zhǔn)備好的查詢,也可以在執(zhí)行之前添加一個(gè)新查詢。

為了簡(jiǎn)短起見(jiàn),我們可能應(yīng)該開(kāi)始看一些代碼。

依存關(guān)系

<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.5.RELEASE</version> </parent><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-cassandra</artifactId></dependency> </dependencies>

使用Spring Boot 2.0.5.RELEASE將拉入Spring Data Cassandra的2.0.10.RELEASE 。

使用準(zhǔn)備好的語(yǔ)句

讓我們直接進(jìn)入:

@Repository public class PersonRepository extends SimpleCassandraRepository<Person, PersonKey> {private final Session session;private final CassandraOperations cassandraTemplate;private final PreparedStatementCache cache = PreparedStatementCache.create();public PersonRepository(Session session,CassandraEntityInformation entityInformation,CassandraOperations cassandraTemplate) {super(entityInformation, cassandraTemplate);this.session = session;this.cassandraTemplate = cassandraTemplate;}// using ORMpublic List<Person> findByFirstNameAndDateOfBirth(String firstName, LocalDate dateOfBirth) {return cassandraTemplate.getCqlOperations().query(findByFirstNameAndDateOfBirthQuery(firstName, dateOfBirth),(row, rowNum) -> cassandraTemplate.getConverter().read(Person.class, row));}private BoundStatement findByFirstNameAndDateOfBirthQuery(String firstName, LocalDate dateOfBirth) {return CachedPreparedStatementCreator.of(cache,select().all().from("people_by_first_name").where(eq("first_name", bindMarker("first_name"))).and(eq("date_of_birth", bindMarker("date_of_birth")))).createPreparedStatement(session).bind().setString("first_name", firstName).setDate("date_of_birth", toCqlDate(dateOfBirth));}private com.datastax.driver.core.LocalDate toCqlDate(LocalDate date) {return com.datastax.driver.core.LocalDate.fromYearMonthDay(date.getYear(), date.getMonth().getValue(), date.getDayOfMonth());}// without ORMpublic List<Person> findByFirstNameAndDateOfBirthWithoutORM(String firstName, LocalDate dateOfBirth) {return cassandraTemplate.getCqlOperations().query(findByFirstNameAndDateOfBirthQuery(firstName, dateOfBirth),(row, rowNum) -> convert(row));}private Person convert(Row row) {return new Person(new PersonKey(row.getString("first_name"),toLocalDate(row.getDate("date_of_birth")),row.getUUID("person_id")),row.getString("last_name"),row.getDouble("salary"));}private LocalDate toLocalDate(com.datastax.driver.core.LocalDate date) {return LocalDate.of(date.getYear(), date.getMonth(), date.getDay());} }

這里有相當(dāng)數(shù)量的樣板代碼,因此我們可以訪問(wèn)Spring Data的ORM。 我還提供了代碼來(lái)演示如何在不使用ORM的情況下實(shí)現(xiàn)相同的目標(biāo)(無(wú)論如何,直接將查詢直接映射到對(duì)象)。

讓我們更仔細(xì)地研究一種方法:

public List<Person> findByFirstNameAndDateOfBirth(String firstName, LocalDate dateOfBirth) {return cassandraTemplate.getCqlOperations().query(findByFirstNameAndDateOfBirthQuery(firstName, dateOfBirth),(row, rowNum) -> cassandraTemplate.getConverter().read(Person.class, row)); }private BoundStatement findByFirstNameAndDateOfBirthQuery(String firstName, LocalDate dateOfBirth) {return CachedPreparedStatementCreator.of(cache,select().all().from("people_by_first_name").where(eq("first_name", bindMarker("first_name"))).and(eq("date_of_birth", bindMarker("date_of_birth")))).createPreparedStatement(session).bind().setString("first_name", firstName).setDate("date_of_birth", toCqlDate(dateOfBirth)); }

CachedPreparedStatementCreator完全按照其說(shuō)的進(jìn)行操作...它創(chuàng)建緩存的Prepared Statements。 of方法采用實(shí)例化Bean時(shí)定義的cache ,并創(chuàng)建第二個(gè)參數(shù)定義的新查詢。 如果查詢是最近已經(jīng)注冊(cè)的查詢,即它已經(jīng)在緩存中。 然后,從那里開(kāi)始查詢,而不是完成注冊(cè)新語(yǔ)句的整個(gè)過(guò)程。

傳入的查詢是一個(gè)RegularStatement ,可以通過(guò)調(diào)用createPreparedStatement將它轉(zhuǎn)換為PreparedStatement (我猜是吧)。 現(xiàn)在,我們可以將值綁定到查詢,因此它實(shí)際上可以做一些有用的事情。

就緩存Prepared Statements而言,這就是您要做的全部。 還有其他方法可以執(zhí)行此操作,例如,您可以手動(dòng)使用PreparedStatementCache或定義自己的緩存實(shí)現(xiàn)。 無(wú)論您的船浮在水上。

您現(xiàn)在已經(jīng)到了這篇簡(jiǎn)短文章的結(jié)尾,希望它實(shí)際上包含了足夠有用的信息……

在本文中,我們介紹了如何使用CachedPreparedStatementCreator創(chuàng)建和將Prepared Statements放入高速緩存中,以便在以后更快地執(zhí)行。 使用Spring Data提供的類,我們可以減少需要編寫的代碼量。

這篇文章中使用的代碼可以在我的GitHub上找到 。

如果您認(rèn)為這篇文章有幫助,可以在Twitter上@LankyDanDev關(guān)注我,以跟上我的新文章。

翻譯自: https://www.javacodegeeks.com/2018/10/cached-prepared-statements-cassandra.html

總結(jié)

以上是生活随笔為你收集整理的使用Spring Data Cassandra缓存的预备语句的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 美女av免费观看 | 蜜臀av午夜精品 | 涩视频在线观看 | 琪琪免费视频 | 日韩欧美一二三四区 | 欧美午夜网 | 中文字幕一级 | 亚洲青青草| 日韩精品欧美精品 | 婷婷在线免费 | av污| 国产男男gay体育生白袜 | 欧美视频免费在线观看 | 美女在线国产 | 99久久久无码国产精品性色戒 | 亚洲人屁股眼子交1 | 梦梦电影免费高清在线观看 | 成人一区二区三区在线观看 | 97久久人澡人人添人人爽 | 99国产精品久久 | 性欧美精品男男 | 少妇一级淫免费观看 | 91久色 | 亚洲欧美综合一区二区 | 久久久久久久久久影院 | a天堂av| 女人18毛片水真多18精品 | 一边摸一边抽搐一进一出视频 | 免费操人视频 | 亚洲av熟女国产一区二区性色 | 日本中文字幕一区 | 男女吻胸做爰摸下身 | 色婷婷av一区二区三区软件 | 国产精品永久免费视频 | 玖玖久久 | 日韩在线观看一区 | 芒果视频在线观看免费 | 黄色av成人| 超碰黄色| 欧美视频在线免费看 | 久久亚洲熟女cc98cm | 中国人与拘一级毛片 | 国产真实交换夫妇视频 | 国内精品视频在线播放 | 麻豆一区二区在线观看 | 亚洲免费高清 | 激情综合五月天 | 最近中文字幕免费 | 欧美成人精品一区二区男人小说 | 国产又粗又长又硬免费视频 | 丰满少妇熟乱xxxxx视频 | 性欧美video另类hd尤物 | 色涩综合 | 日本成人免费 | 欧美卡一卡二卡三 | 天天爽一爽 | 欧美一级视频免费观看 | 亚洲伊人久久综合 | www.黄色网址.com | 在线看片中文字幕 | 性欧美又大又长又硬 | 免费在线观看污 | 四虎影视黄色 | 五十路在线| 美女裸体跪姿扒开屁股无内裤 | 亚洲骚图 | 91精品国产一区二区三竹菊影视 | 一级女性全黄久久生活片免费 | 9cao| 97综合| 色网在线看 | 黄色三级视频在线观看 | 特黄视频在线观看 | 久久久久久一级片 | 久久日视频 | 日日操夜夜 | 成人福利在线免费观看 | 女人被狂躁c到高潮喷水电影 | h视频免费在线观看 | 织田真子作品 | 日本一区二区三区在线观看视频 | 亚洲人xxxx | www.国产精品.com| 国产成人久久婷婷精品流白浆 | 日韩成人一级片 | 日本三级在线视频 | 日韩免费黄色片 | 成人午夜免费福利 | 污片视频在线观看 | 俺也来俺也去俺也射 | 国产在线观看免费视频今夜 | 黄色三级国产 | 99久久精品免费视频 | 在线观看免费av网站 | 蜜臀av一区二区三区 | 操小妹影院| 啪啪官网 | 日本免费一二三区 | 国产精品国产三级国产a |