亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

業(yè)務(wù)場(chǎng)景(這是一個(gè)在線考試系統(tǒng))和代碼:根據(jù)問題的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");
}

問題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外如果沒有各層的方法中進(jìn)行事務(wù)管理的話也就是沒加@Transactional話會(huì)報(bào)錯(cuò)

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

問題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ù)里面被修改

問題4:只在 service層加@Transactional

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

問題5:在service 層和Repository都加上@transactional

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

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

問題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語句

下面的會(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ù)管理的問題實(shí)例詳解的介紹就到這里,希望對(duì)大家有所幫助,歡迎大家參閱本站其他專題。

相關(guān)文章

  • 詳解Java的面向?qū)ο蠛兔嫦蜻^程

    詳解Java的面向?qū)ο蠛兔嫦蜻^程

    我們知道,Java是面向?qū)ο蟮木幊陶Z言,但是至今仍有不少同學(xué)還不太懂”面向?qū)ο蟆暗拇_切含義,今天這篇文章就帶大家真正地認(rèn)識(shí)面向?qū)ο?,感興趣的同學(xué)可以跟著小編一起來學(xué)習(xí)
    2023-05-05
  • MyBatis插入數(shù)據(jù)返回主鍵的介紹

    MyBatis插入數(shù)據(jù)返回主鍵的介紹

    今天小編就為大家分享一篇關(guān)于MyBatis插入數(shù)據(jù)返回主鍵的介紹,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • Java實(shí)現(xiàn)的雙向匹配分詞算法示例

    Java實(shí)現(xiàn)的雙向匹配分詞算法示例

    這篇文章主要介紹了Java實(shí)現(xiàn)的雙向匹配分詞算法,結(jié)合完整實(shí)例形式詳細(xì)分析了雙向匹配分詞算法的原理與java實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2017-12-12
  • Java日志框架用法及常見問題解決方案

    Java日志框架用法及常見問題解決方案

    這篇文章主要介紹了Java日志框架用法及常見問題解決方案,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • 解決在Idea 2020.2下使用 Lombok的注解不生效的問題(插件安裝了,依賴也寫了,自動(dòng)注解也設(shè)置了)

    解決在Idea 2020.2下使用 Lombok的注解不生效的問題(插件安裝了,依賴也寫了,自動(dòng)注解也設(shè)置了)

    這篇文章主要介紹了在Idea 2020.2下使用 Lombok的注解不生效的問題(插件安裝了,依賴也寫了,自動(dòng)注解也設(shè)置了),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08
  • Java基礎(chǔ)知識(shí)之注解、元注解

    Java基礎(chǔ)知識(shí)之注解、元注解

    ava 注解,從名字上看是注釋,解釋。但功能卻不僅僅是注釋那么簡(jiǎn)單,下面這篇文章主要給大家介紹了關(guān)于Java基礎(chǔ)知識(shí)之注解、元注解的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-01-01
  • SpringBoot基于Sentinel在服務(wù)上實(shí)現(xiàn)接口限流

    SpringBoot基于Sentinel在服務(wù)上實(shí)現(xiàn)接口限流

    這篇文章主要介紹了SpringBoot基于Sentinel在服務(wù)上實(shí)現(xiàn)接口限流,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • 最新評(píng)論