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쿼리가 날아간다.
'간단한 가상화폐 거래소 만들기' 카테고리의 다른 글
엔티티 설계에 의문이 생김 (0) | 2021.06.09 |
---|---|
일대다 단방향을 다대일 양방향 매핑으로 사용하는 이유. (0) | 2021.06.07 |
Uncaught ReferenceError: $ is not defined 문제 spring security forbidden error 403, ajax 클릭 무반응 (0) | 2021.05.24 |
localDatetime이 null으로 전달되는 경우 (0) | 2021.05.23 |
새로고침할때마다 게시판 글이 늘어나는 문제 PostMapping (0) | 2021.05.23 |