最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring boot jpa 刪除數(shù)據(jù)和事務(wù)管理的問(wèn)題實(shí)例詳解

 更新時(shí)間:2017年09月25日 10:18:24   作者:hanghangde  
這篇文章主要介紹了Spring boot jpa 刪除數(shù)據(jù)和事務(wù)管理的問(wèn)題實(shí)例詳解,涉及業(yè)務(wù)場(chǎng)景的一些知識(shí)和遇到的的問(wèn)題,需要的朋友可以參考。

今天我們介紹的是jpa刪除和事務(wù)的一些坑,接下來(lái)看看具體內(nèi)容。

業(yè)務(wù)場(chǎng)景(這是一個(gè)在線考試系統(tǒng))和代碼:根據(jù)問(wèn)題的id刪除答案

repository層:

int deleteByQuestionId(Integer questionId);

service 層:

public void deleteChoiceAnswerByQuestionId(Integer questionId) {
choiceAnswerRepository.deleteByQuestionId(questionId);

測(cè)試層:

@Test
public void testDeleteByQuestionId() {
 choiceAnswerService.deleteChoiceAnswerByQuestionId(5);
 System.out.println("hehehhe");
 System.out.println("hehehhe");
 System.out.println("hehehhe");
 System.out.println("hehehhe");
 System.out.println("hehehhe");
 System.out.println("hehehhe");
 System.out.println("hehehhe");
}

問(wèn)題1:如果各層都不加事務(wù)管理的話
@Transactional

會(huì)報(bào)這個(gè)錯(cuò)誤

org.springframework.dao.InvalidDataAccessApiUsageException: No EntityManager with actual transaction available for current thread - cannot reliably process ‘remove' call; nested exception is javax.persistence.TransactionRequiredException: No EntityManager with actual transaction available for current thread - cannot reliably process ‘remove' call

當(dāng)我們除了query外的modiy和delete外如果沒(méi)有各層的方法中進(jìn)行事務(wù)管理的話也就是沒(méi)加@Transactional話會(huì)報(bào)錯(cuò)

問(wèn)題2:只在test層加@Transactional
沒(méi)有錯(cuò)誤但是數(shù)據(jù)并沒(méi)有被刪除,在用IDEA的調(diào)試是,在執(zhí)行這個(gè)測(cè)試方法的過(guò)程時(shí)還可以在choiceanswer表中進(jìn)行操作并沒(méi)有加鎖事務(wù)并沒(méi)有起作用

問(wèn)題3:只在 Repository層加@Transactional

public void deleteChoiceAnswerByQuestionId(Integer questionId) {
choiceAnswerRepository.deleteByQuestionId(questionId);
System.out.println(“hehehhe”);
System.out.println("hehehhe");
// questionRepository.delete(5);
System.out.println(“hehehhe”);
 System.out.println("hehehhe");
 System.out.println("hehehhe");
 System.out.println("hehehhe");
 System.out.println("hehehhe");
}

這時(shí)當(dāng)執(zhí)行完

choiceAnswerRepository.deleteByQuestionId(questionId);


數(shù)據(jù)里面被修改

問(wèn)題4:只在 service層加@Transactional

當(dāng)只有執(zhí)行完service內(nèi)的對(duì)應(yīng)方法時(shí)數(shù)據(jù)才會(huì)被刪除

問(wèn)題5:在service 層和Repository都加上@transactional

當(dāng)只有執(zhí)行完service內(nèi)的對(duì)應(yīng)方法時(shí)數(shù)據(jù)才會(huì)被刪除

問(wèn)題6:只要在test(或者是除了service層和Repository層)加上@Transactional,不管service層和Repository層加不加@Transactional數(shù)據(jù)都不會(huì)被刪除

問(wèn)題7:

@Modifying
@Query(“delete from ChoiceAnswer c where c.question.id=?1 “)
@Transactional
int deleteByQuestionId(Integer questionId);


@Transactional
int deleteByQuestionId(Integer questionId);

有什么區(qū)別,上面的會(huì)直接執(zhí)行delete語(yǔ)句

下面的會(huì)先執(zhí)行select 再執(zhí)行delete

總結(jié):

事務(wù)管理只有在service加上事務(wù)管理才起作用,query不需要事務(wù)管理但是delete update但需要事務(wù)管理為了不在Service層不加事務(wù)管理可以再Repository層的delete uodate加上@transactional 但這樣不能真正保持事務(wù)的完整性.

本文關(guān)于Spring boot jpa 刪除數(shù)據(jù)和事務(wù)管理的問(wèn)題實(shí)例詳解的介紹就到這里,希望對(duì)大家有所幫助,歡迎大家參閱本站其他專(zhuān)題。

相關(guān)文章

  • SpringBoot Bean花式注解方法示例上篇

    SpringBoot Bean花式注解方法示例上篇

    這篇文章主要介紹了SpringBoot Bean花式注解方法,很多時(shí)候我們需要根據(jù)不同的條件在容器中加載不同的Bean,或者根據(jù)不同的條件來(lái)選擇是否在容器中加載某個(gè)Bean
    2023-02-02
  • Java基礎(chǔ)之不簡(jiǎn)單的數(shù)組

    Java基礎(chǔ)之不簡(jiǎn)單的數(shù)組

    數(shù)組(Array)是有序的元素序列。 若將有限個(gè)類(lèi)型相同的變量的集合命名,那么這個(gè)名稱(chēng)為數(shù)組名。組成數(shù)組的各個(gè)變量稱(chēng)為數(shù)組的分量,也稱(chēng)為數(shù)組的元素,有時(shí)也稱(chēng)為下標(biāo)變量
    2021-09-09
  • Java中實(shí)現(xiàn)文件上傳下載的三種解決方案(推薦)

    Java中實(shí)現(xiàn)文件上傳下載的三種解決方案(推薦)

    這篇文章主要介紹了Java中實(shí)現(xiàn)文件上傳下載的三種解決方案的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-07-07
  • Java簡(jiǎn)易計(jì)算器程序設(shè)計(jì)

    Java簡(jiǎn)易計(jì)算器程序設(shè)計(jì)

    這篇文章主要為大家詳細(xì)介紹了Java簡(jiǎn)易計(jì)算器程序設(shè)計(jì)的相關(guān)參考資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2015-10-10
  • Mybatis有查詢(xún)結(jié)果但存不進(jìn)實(shí)體類(lèi)的解決方案

    Mybatis有查詢(xún)結(jié)果但存不進(jìn)實(shí)體類(lèi)的解決方案

    這篇文章主要介紹了Mybatis有查詢(xún)結(jié)果但存不進(jìn)實(shí)體類(lèi)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-11-11
  • Java中數(shù)學(xué)相關(guān)類(lèi)的使用教程

    Java中數(shù)學(xué)相關(guān)類(lèi)的使用教程

    Java是一種廣泛使用的編程語(yǔ)言,它提供了許多數(shù)學(xué)運(yùn)算的函數(shù)和方法,使得開(kāi)發(fā)者可以輕松地進(jìn)行各種數(shù)學(xué)計(jì)算,下面這篇文章主要給大家介紹了關(guān)于Java中數(shù)學(xué)相關(guān)類(lèi)使用的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05
  • 使用Java后端操作Docker的詳細(xì)教程

    使用Java后端操作Docker的詳細(xì)教程

    Docker 是現(xiàn)代開(kāi)發(fā)和部署流程中不可或缺的一部分,它簡(jiǎn)化了應(yīng)用程序的環(huán)境配置、打包和分發(fā),使得在不同機(jī)器上運(yùn)行相同的應(yīng)用變得更加輕松和一致,本文將詳細(xì)介紹如何使用命令行工具(CMD)操控 Docker 來(lái)配置環(huán)境,需要的朋友可以參考下
    2025-02-02
  • IDEA生成patch和使用patch的方法實(shí)現(xiàn)

    IDEA生成patch和使用patch的方法實(shí)現(xiàn)

    比如你本地修復(fù)的 bug,需要把增量文件發(fā)給客戶(hù),很多場(chǎng)景下大家都需要手工整理修改的文件,并整理好目錄,這個(gè)很麻煩,那有沒(méi)有簡(jiǎn)單的技巧呢?本文主要介紹了IDEA生成patch和使用patch的方法實(shí)現(xiàn),感興趣的可以了解一下
    2023-08-08
  • 淺談使用Maven插件構(gòu)建Docker鏡像的方法

    淺談使用Maven插件構(gòu)建Docker鏡像的方法

    本篇文章主要介紹了淺談使用Maven插件構(gòu)建Docker鏡像的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-12-12
  • Spring中@Autowired注解的原理詳解

    Spring中@Autowired注解的原理詳解

    這篇文章主要介紹了Spring中@Autowired注解的原理詳解,對(duì)于spring配置一個(gè)bean時(shí),如果需要給該bean提供一些初始化參數(shù),則需要通過(guò)依賴(lài)注入方式,所謂的依賴(lài)注入就是通過(guò)spring將bean所需要的一些參數(shù)傳遞到bean實(shí)例對(duì)象的過(guò)程,需要的朋友可以參考下
    2023-11-11

最新評(píng)論

宁国市| 翁牛特旗| 获嘉县| 台州市| 阜康市| 郧西县| 特克斯县| 偃师市| 迁西县| 宁阳县| 米易县| 虹口区| 施甸县| 容城县| 宿松县| 凌源市| 桦甸市| 明水县| 乌拉特后旗| 万源市| 深水埗区| 常州市| 门头沟区| 宕昌县| 沽源县| 金山区| 磐石市| 桂东县| 庐江县| 炎陵县| 乳山市| 延寿县| 滨州市| 大厂| 十堰市| 桑日县| 贵定县| 云霄县| 汪清县| 开化县| 新野县|