1. 程式人生 > >Spring Boot框架-使用 @Transactional 進行事務管理

Spring Boot框架-使用 @Transactional 進行事務管理

往資料庫裡存兩個資料,要求一個存失敗另一個也不能成功怎麼做?

通過對類進行事務註解,可以做到
    @Transactional
    public void insertTwo(){

        Gril girlA = new Gril();
        girlA.setCupSize("A");
        girlA.setAge(18);
        girlRepository.save(girlA);

        Gril girlB = new Gril();
        girlB.setCupSize("B");
        girlB.setAge(19);
        girlRepository.save(girlB);
    }

預設spring事務只在發生未被捕獲的 RuntimeException 時才回滾,實際上這麼寫是不會成功的,坑好多,emmmmm

我們可以通過丟擲 RuntimeException 的異常來解決

    @Transactional
    public void insertTwo(){
        try{
            Gril girlA = new Gril();
            Gril girlB = new Gril();

            girlA.setCupSize("A");
            girlA.setAge(18);
            girlB.setCupSize("B");
            girlB.setAge(19);

            
            girlRepository.save(girlA);
            girlRepository.save(girlB);
        }
        catch(Exception ex){
            throw new RuntimeException();
        }
    }
解決,撒花~