質問編集履歴
5
_
    
        title	
    CHANGED
    
    | 
            File without changes
         | 
    
        body	
    CHANGED
    
    | @@ -10,6 +10,7 @@ | |
| 10 10 |  | 
| 11 11 | 
             
            いろんな記事を見て、RuntimeExceptionを明示的に起こしてロールバックさせようとしているのですが、DBの値は更新されていました。
         | 
| 12 12 | 
             
            参考:[https://www.qoosky.io/techs/400f6b6f09](https://www.qoosky.io/techs/400f6b6f09)
         | 
| 13 | 
            +
            [springbootのトランザクション管理について](https://teratail.com/questions/120515)
         | 
| 13 14 |  | 
| 14 15 | 
             
            @Transactionalは実際にうまくいくのでしょうか?また他のやり方で実装した方がいいのでしょうか?オススメのやり方があれば教えていただけますでしょうか?
         | 
| 15 16 |  | 
4
・
    
        title	
    CHANGED
    
    | 
            File without changes
         | 
    
        body	
    CHANGED
    
    | @@ -9,6 +9,7 @@ | |
| 9 9 | 
             
            serviceクラス内のメソッドに@Transactionalを設定し、controllerクラスから@AutowiredでserviceクラスをDIしています。またメソッドはpublicです。
         | 
| 10 10 |  | 
| 11 11 | 
             
            いろんな記事を見て、RuntimeExceptionを明示的に起こしてロールバックさせようとしているのですが、DBの値は更新されていました。
         | 
| 12 | 
            +
            参考:[https://www.qoosky.io/techs/400f6b6f09](https://www.qoosky.io/techs/400f6b6f09)
         | 
| 12 13 |  | 
| 13 14 | 
             
            @Transactionalは実際にうまくいくのでしょうか?また他のやり方で実装した方がいいのでしょうか?オススメのやり方があれば教えていただけますでしょうか?
         | 
| 14 15 |  | 
3
・
    
        title	
    CHANGED
    
    | 
            File without changes
         | 
    
        body	
    CHANGED
    
    | @@ -6,9 +6,9 @@ | |
| 6 6 | 
             
            経緯として、
         | 
| 7 7 | 
             
            2つのテーブルを同一メソッド内で更新する処理があります。
         | 
| 8 8 | 
             
            それを@Transactionalを使ってトランザクション処理を実装しようとしていました。
         | 
| 9 | 
            -
            serviceクラス内のメソッドに@Transactionalを設定し、 | 
| 9 | 
            +
            serviceクラス内のメソッドに@Transactionalを設定し、controllerクラスから@AutowiredでserviceクラスをDIしています。またメソッドはpublicです。
         | 
| 10 10 |  | 
| 11 | 
            -
            いろんな記事を見て、 | 
| 11 | 
            +
            いろんな記事を見て、RuntimeExceptionを明示的に起こしてロールバックさせようとしているのですが、DBの値は更新されていました。
         | 
| 12 12 |  | 
| 13 13 | 
             
            @Transactionalは実際にうまくいくのでしょうか?また他のやり方で実装した方がいいのでしょうか?オススメのやり方があれば教えていただけますでしょうか?
         | 
| 14 14 |  | 
2
・
    
        title	
    CHANGED
    
    | 
            File without changes
         | 
    
        body	
    CHANGED
    
    | @@ -16,19 +16,17 @@ | |
| 16 16 |  | 
| 17 17 | 
             
            ```Java
         | 
| 18 18 | 
             
            @Transactional
         | 
| 19 | 
            -
                public void update( | 
| 19 | 
            +
                public void update(List<Item> iList,Store sDto) {
         | 
| 20 | 
            -
                    List<Item>  | 
| 20 | 
            +
                    List<Item> tempList = new ArrayList<>();
         | 
| 21 21 |  | 
| 22 | 
            -
                     | 
| 22 | 
            +
                    iList.forEach(i -> 
         | 
| 23 | 
            -
                         | 
| 23 | 
            +
                        i.setUsedFlag(true);
         | 
| 24 24 | 
             
                        tList.add(t);
         | 
| 25 25 | 
             
                    });
         | 
| 26 26 |  | 
| 27 | 
            -
                     | 
| 27 | 
            +
                    iDao.batchUpdate(tempList);
         | 
| 28 | 
            -
             | 
| 29 | 
            -
                   
         | 
| 30 28 |  | 
| 31 | 
            -
             | 
| 29 | 
            +
                    sDao.update(sDto);
         | 
| 32 30 |  | 
| 33 31 | 
             
                    throw new RuntimeException();
         | 
| 34 32 | 
             
                }
         | 
1
    
        title	
    CHANGED
    
    | 
            File without changes
         | 
    
        body	
    CHANGED
    
    | @@ -12,4 +12,24 @@ | |
| 12 12 |  | 
| 13 13 | 
             
            @Transactionalは実際にうまくいくのでしょうか?また他のやり方で実装した方がいいのでしょうか?オススメのやり方があれば教えていただけますでしょうか?
         | 
| 14 14 |  | 
| 15 | 
            -
            お願い致します。
         | 
| 15 | 
            +
            お願い致します。
         | 
| 16 | 
            +
             | 
| 17 | 
            +
            ```Java
         | 
| 18 | 
            +
            @Transactional
         | 
| 19 | 
            +
                public void update(Store uDto, List<Item> hogeList) {
         | 
| 20 | 
            +
                    List<Item> tList = new ArrayList<>();
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                    hogeList.forEach(t -> 
         | 
| 23 | 
            +
                        t.setUsed(1);
         | 
| 24 | 
            +
                        tList.add(t);
         | 
| 25 | 
            +
                    });
         | 
| 26 | 
            +
             | 
| 27 | 
            +
                    tDao.batchUpdate(tList);
         | 
| 28 | 
            +
             | 
| 29 | 
            +
                   
         | 
| 30 | 
            +
              
         | 
| 31 | 
            +
                     sDao.update(uDto);
         | 
| 32 | 
            +
                 
         | 
| 33 | 
            +
                    throw new RuntimeException();
         | 
| 34 | 
            +
                }
         | 
| 35 | 
            +
            ```
         | 
