1
2
3
4
5
6
7
8
9
10
11
 
    public void deposit(Double krw) {
        this.getAccount().deposit(krw);
        BankTransaction bankTransaction= new BankTransaction().builder()
                .member(this)
                .transferAmount(krw)
                .status(BankTransactionStatus.DEPOSIT)
                .build();
        bankTransactions.add(bankTransaction);
    }
 
cs

위 코드는 Member class에서 입출금 내역을 더한뒤 MemberService에서 save하고 있다. 

 

잔액의 경우는 Member가 주인이고, 주인을 통해 Account를 방문하여 메서드를 실행하므로 기능이 제대로 작동하지만,  입출금 내역은  Member가 하수인이고 BankTransaction이 주인이므로 db에 반영이 되지 않는다..

 

양방향 매핑 규칙
객체의 두 관계 중 하나를 연관관계의 주인으로 지정한다.
연관관계의 주인만이 외래 키를 관리한다.
-주인만이 DB에 접근하여 값을 등록, 수정, 변경할 수 있다.
-주인이 아닌 객체가 값을 변경하더라도 DB에는 영향이 없다.
-주인이 아닌쪽은 읽기(SELECT)만 가능하다.
다음 규칙을 다시 고려하여 코드를 수정하였다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

계좌 잔액이 변경되는 경우는 수정이므로 update쿼리가 변경감지를 통해 날아가지만, 

bankTransaction은 새로 생성하므로 repository를 통해 save를 해줘야 insert쿼리가 날아간다.

+ Recent posts