国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

關(guān)于Java中分層中遇到的一些問題

wuaiqiu / 583人閱讀

摘要:我可能會(huì)這么寫然后在整個(gè)的實(shí)現(xiàn)類上面注解實(shí)現(xiàn)的代碼就是問題就來(lái)了,如果按照這樣的寫法,那么首先的一級(jí)緩存似乎就沒有起到作用了。也就是說(shuō)如果的一個(gè)方法中調(diào)用了的兩個(gè)方法,這兩個(gè)方法的不一樣,一級(jí)緩存根本沒用。

Java分層中遇到的問題

陸陸續(xù)續(xù)寫了一些Java的項(xiàng)目,用了Spring系列和Hibernate這樣的框架。在設(shè)計(jì)Service層和Dao層的時(shí)候碰到了一些想不清楚的問題。
以一個(gè)簡(jiǎn)單的用戶信息管理功能為例,如果不用Spring Data之類的東西。那么我一般會(huì)這么寫代碼
controller往上沒什么好說(shuō)的,controller調(diào)用service就好了,service調(diào)用dao。
關(guān)鍵在于service這里。我可能會(huì)這么寫

...
@Autowired
UserDao userDao;

public void saveUser(String userName){
    userDao.save(userName);
}
public User findUser(String userName){
    return userDao.findUser(userName);
}
...

然后在整個(gè)service的實(shí)現(xiàn)類上面注解@Transaction
Dao實(shí)現(xiàn)的代碼就是

...
@Autowired
SessionFactory sessionFactory;

public void save(String userName){
    Session session=sessionFactory.getCurrentSession();
    session.save(userName);
}
...

問題就來(lái)了,如果按照這樣的寫法,那么首先Hibernate的一級(jí)緩存似乎就沒有起到作用了
因?yàn)樵贒ao中,每一個(gè)方法都獲取一個(gè)Session來(lái)進(jìn)行操作,方法間并不共享Session。也就是說(shuō)如果Service的一個(gè)方法中調(diào)用了Dao的兩個(gè)方法,這兩個(gè)方法的Session不一樣,一級(jí)緩存根本沒用。

其次就是Service層中查找出來(lái)的對(duì)象是游離態(tài)的
在Service的方法中如果find了一個(gè)對(duì)象然后調(diào)用這個(gè)的對(duì)象的Set方法,數(shù)據(jù)庫(kù)中是不會(huì)更新的。因?yàn)檎{(diào)用Dao的find方法后Session關(guān)閉,對(duì)象從持久態(tài)變成了游離態(tài),所以這時(shí)候要更新對(duì)象的信息只能手動(dòng)再寫一句update(User u),就是這樣:

public void update(String userName,String password){
    User u=userDao.findUser(userName);
    u.setPassword(password);
    userDao.update(u);
}

這顯然是不好的一種方式。
但是如果想改掉前面兩個(gè)缺點(diǎn),就必須把Session提到Service層,讓Service的一個(gè)方法用一個(gè)Session,這樣上面提到的兩個(gè)問題就都能解決。可是Session本應(yīng)該是Dao層的東西,提升到Service層似乎也是不好的做法。

不知道這里頭的矛盾到底怎么解決?

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/69067.html

相關(guān)文章

  • Spring Web

    摘要:認(rèn)證鑒權(quán)與權(quán)限控制在微服務(wù)架構(gòu)中的設(shè)計(jì)與實(shí)現(xiàn)一引言本文系認(rèn)證鑒權(quán)與權(quán)限控制在微服務(wù)架構(gòu)中的設(shè)計(jì)與實(shí)現(xiàn)系列的第一篇,本系列預(yù)計(jì)四篇文章講解微服務(wù)下的認(rèn)證鑒權(quán)與權(quán)限控制的實(shí)現(xiàn)。 java 開源項(xiàng)目收集 平時(shí)收藏的 java 項(xiàng)目和工具 某小公司RESTful、共用接口、前后端分離、接口約定的實(shí)踐 隨著互聯(lián)網(wǎng)高速發(fā)展,公司對(duì)項(xiàng)目開發(fā)周期不斷縮短,我們面對(duì)各種需求,使用原有對(duì)接方式,各端已經(jīng)很...

    Kosmos 評(píng)論0 收藏0
  • 如何開發(fā)一款以太坊(安卓)錢包系列1 - 通過助記詞創(chuàng)建賬號(hào)

    摘要:本文首發(fā)于深入淺出區(qū)塊鏈社區(qū)原文鏈接以太坊安卓錢包系列通過助記詞創(chuàng)建賬號(hào)原文已更新,請(qǐng)讀者前往原文閱讀上周我開源了一款錢包,反映很好,一周時(shí)間不到已經(jīng)快到。的功能和類似,它是比特幣協(xié)議的實(shí)現(xiàn),他實(shí)現(xiàn)了及相關(guān)協(xié)議。 本文首發(fā)于深入淺出區(qū)塊鏈社區(qū)原文鏈接:以太坊(安卓)錢包系列1 - 通過助記詞創(chuàng)建賬號(hào)原文已更新,請(qǐng)讀者前往原文閱讀 上周我開源了一款錢包,反映很好,一周時(shí)間不到已經(jīng)快到10...

    bbbbbb 評(píng)論0 收藏0
  • 如何開發(fā)一款以太坊(安卓)錢包系列1 - 通過助記詞創(chuàng)建賬號(hào)

    摘要:本文首發(fā)于深入淺出區(qū)塊鏈社區(qū)原文鏈接以太坊安卓錢包系列通過助記詞創(chuàng)建賬號(hào)原文已更新,請(qǐng)讀者前往原文閱讀上周我開源了一款錢包,反映很好,一周時(shí)間不到已經(jīng)快到。的功能和類似,它是比特幣協(xié)議的實(shí)現(xiàn),他實(shí)現(xiàn)了及相關(guān)協(xié)議。 本文首發(fā)于深入淺出區(qū)塊鏈社區(qū)原文鏈接:以太坊(安卓)錢包系列1 - 通過助記詞創(chuàng)建賬號(hào)原文已更新,請(qǐng)讀者前往原文閱讀 上周我開源了一款錢包,反映很好,一周時(shí)間不到已經(jīng)快到10...

    genefy 評(píng)論0 收藏0
  • Java開發(fā)

    摘要:大多數(shù)待遇豐厚的開發(fā)職位都要求開發(fā)者精通多線程技術(shù)并且有豐富的程序開發(fā)調(diào)試優(yōu)化經(jīng)驗(yàn),所以線程相關(guān)的問題在面試中經(jīng)常會(huì)被提到。將對(duì)象編碼為字節(jié)流稱之為序列化,反之將字節(jié)流重建成對(duì)象稱之為反序列化。 JVM 內(nèi)存溢出實(shí)例 - 實(shí)戰(zhàn) JVM(二) 介紹 JVM 內(nèi)存溢出產(chǎn)生情況分析 Java - 注解詳解 詳細(xì)介紹 Java 注解的使用,有利于學(xué)習(xí)編譯時(shí)注解 Java 程序員快速上手 Kot...

    LuDongWei 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<