免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
如何使用二級(jí)緩存將JPA DAO遷移到Spring Data?

我有一堆希望遷移到Spring Data JPA的JPA DAO.我的某些DAOS具有第二級(jí)/查詢緩存設(shè)置.

我有一個(gè)過程,我只在查詢中檢索ID,然后使用findByID()查找實(shí)體.這樣,只有ID會(huì)在不同的查詢緩存中相乘,而整個(gè)實(shí)體都在第二級(jí)緩存中.

例:

@NamedQuery(name = "SystemUser.findByEmail",            query = "SELECT u.id FROM SystemUser u WHERE email=:email"),…public SystemUser findByEmail(String email) {    TypedQuery<Long> q = getEntityManager().createNamedQuery("SystemUser.findByEmail", Long.class);    q.setParameter("email", email);    q.setHint("org.hibernate.cacheable", true);    q.setHint("org.hibernate.cacheRegion", "query.systemUser");    List<Long> res = q.getResultList();    if (res != null && res.size() > 0) {        return findById(res.get(0));    }    return null;}

我還有更多的findBy…方法,所有方法都是這樣.感覺這是降低緩存內(nèi)存消耗的好方法.

我是Spring Data JPA業(yè)務(wù)的新手,但是我看不到如何在這里實(shí)現(xiàn)它? @Cacheable批注似乎只處理查詢緩存,對(duì)我而言,這些副本將復(fù)制每個(gè)查詢緩存中的實(shí)體嗎?

Spring Data有什么辦法做到這一點(diǎn)?指針將不勝感激.

解決方法:

在Spring Data JPA中,只需創(chuàng)建一個(gè)findByEmail方法,Spring Data JPA就會(huì)找到您的命名查詢或自行創(chuàng)建一個(gè)查詢.

public class SystemUserRepository extends CrudRepository<SystemUser, Long> {    SystemUser findByEmail(String email);}

應(yīng)該是執(zhí)行查詢和所需結(jié)果所需要的.現(xiàn)在使用@QueryHints,您可以添加您現(xiàn)在設(shè)置的提示.

public class SystemUserRepository extends CrudRepository<SystemUser, Long> {    @QueryHints(        @QueryHint(name="org.hibernate.cacheable", value="true"),        @QueryHint(name="org.hibernate.cacheRegion", value="query.systemUser")        )    SystemUser findByEmail(String email);}

結(jié)果將被緩存,而用戶仍然來自第二級(jí)緩存(如果可用,則創(chuàng)建其他).假設(shè)您的實(shí)體當(dāng)然是@Cacheable.

可以找到有關(guān)07個(gè)不同緩存如何一起工作的很好的讀物here.有關(guān)查詢緩存如何工作的小片段.

The query cache looks conceptually like an hash map where the key is composed by the query text and the parameter values, and the value is a list of entity Id’s that match the query:

如果您想要更復(fù)雜的邏輯(并真正實(shí)現(xiàn)您所做的優(yōu)化),則始終可以實(shí)現(xiàn)own repository.

來源:https://www.icode9.com/content-4-529601.html
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
使用 Spring Data JPA 簡化 JPA 開發(fā)
微服務(wù)SpringDATA筆記
spring+hibernate整合
將Spring和Hibernate 與WAS一起使用
使用hibernate的優(yōu)勢
spring boot整合redis實(shí)現(xiàn)緩存機(jī)制
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服