JPA

·TIL
Soft Delete vs Hard Deletesoft delete(논리 삭제)실제 데이터를 삭제하는게 아니라 삭제용 칼럼을 두고 그 값을 변경해서 논리적으로 삭제를 구현하는 방식이다주로 isDeleted와 같은 boolean 필드를 만들거나 삭제 날짜 필드를 사용한다장점데이터 복구에 용이하다삭제된 데이터 이력을 유지할 수 있다관련 데이터의 참조 무결성을 유지하기 쉽다실수로 영구적 데이터 손실을 방지할 수 있다단점데이터베이스 크기가 계속 커진다인덱스 효율이 떨어질 수 있다실제 삭제를 위한 추가 작업이 필요할 수 있다hard delete(물리 삭제)실제 데이터를 테이블에서 삭제하는 방식이다장점데이터베이스 크기를 효율적으로 관리할 수 있다쿼리가 단순하고 직관적이다일반적으로 데이터베이스 성능이 더 좋다단점삭제..
·TIL
개인 프로젝트에서 엔티티 간의 관계를 다루면서 지연 로딩과 프록시를 조금 더 이해할 수 있는 순간을 경험했다. 프로젝에는 Match 엔티티는 inviter라는 Team 엔티티와 관계를 맺고 있다. 이 관계는 지연 로딩으로 설정되어 있다. 매칭을 수락하는 로직이 있는데 여기서 매칭을 보내온 inviter의 현재 상태를 확인해야 했는데, 여기서 생각과 다른 상황이 발생했다. matchValidator.validateTeamStatus(match.getInviter().getStatus());  위 코드가 그 상황이다. 지연 로딩을 사용할 때 조회되지 않은 엔티티는 프록시 객체 상태라는 개념은 알고는 있었다. 그리고 해당 엔티티가 필요한 순간에 조회 쿼리가 나간다는 사실도 알고 있었다. 그렇지만 정확히 어떤 ..
·TIL
이슈 정리 주문 관리 api를 만드는 중 등록 된 주문을 조회할 때 json이 거의 무한 반복으로 나왔다. 테이블 관계 때문에 쓴 @ManytoMany, @OneToMany 같은 관계 때문인가라고 고민해 보았다. { "products": [ { "id": 1, "name": "치즈버거", "description": "패티, 치즈", "price": "4000원", "stock": 9, "createdDate": "2022-02-25T00:00:00", "modifiedDate": "2022-02-25T00:00:00" }, { "id": 2, "name": "빅맥", "description": "시그니쳐 버거", "price": "6000원", "stock": 10, "createdDate": "2022..
삼공비
'JPA' 태그의 글 목록