Setter 를 지양하는 이유아마 모두가 알고 있을것이다.setter 를 사용(남용) 하다 보면 객체의 불변성, 무결성, 캡슐화가 깨지기 쉽다.객체가 불변성을 가지면 상태가 변하지 않아 객체의 상태에 대한 예측 가능성이 높아진다. 객체가 불변하고 무결하면 여러 곳에서 동시에 접근했을때의 동시성 문제 부터로도 안전해진다.캡슐화-> 엔티티는 비지니스 로직을 가진 도메인 객체이다. setter 를 이용하면 단순 dto 처럼 이용될 가능성이 생긴다. 그래서?그래서 당시엔 프로젝트를 진행할때 쓰지 말라니깐 다른 방법들로 엔티티의 값을 업데이트 했다.주로 사용한 방식은1. dto에다 setter 를 두고 그 dto를 엔티티로 변경해 save 하기2. 엔티티의 constructor 를 이용해 새로운 객체를 만들어 s..

JPA 에서 두 객체는 단방향 혹은 양방향으로 방향성을 가질 수 있다. 하지만 이 객체들의 방향성은 데이터베이스 테이블들에 영향을 끼치지 않는다. 쉽게 말하면 객체는 방향성을 갖고 있으나, 데이터베이스 테이블끼리는 방향성을 가지지 않는다. 연관관계의 주인과 주인이 아닌 객체 연관관계에서 외래키를 가지고 있으며 관리하는 쪽이 주인이 된다. 대게 @ManyToOne 쪽이 주인이다. 주인쪽에서 외래키의 관리를 하기때문에 주인이 아닌쪽은 읽기(참조)만 가능하다. @JoinColumn 주인쪽에서 @JoinColumn 어노테이션을 이용해 사용자가 연관관계를 맺어 사용할 컬럼임을 명시한다. @MappedBy 주인이 아닌쪽에서 @MappedBy 어노테이션을 이용해 주인쪽과 관계를 이어준다. @Entity public ..