본문 바로가기

Entity2

DTO를 사용하는 이유 ? 1. DTO DTO(Data Transfer Object)란 계층간 데이터 교환을 위해 사용하는 객체(Java Beans)입니다. 2. 사용하는 이유 ? DTO를 사용하는 가장 큰 이유는, 자바 domain 객체를 바로 접근하지 않기 위해서 입니다. 고로! 가볍게 생각헤서, 테이블을 조작하기 위해 한단계더 거쳐가는 완충제라고 생각하면 됩니다. * 테이블을 직접적으로 접근하지 않음으로써 데이터를 보호. 1) Entity 캡슐화 Entity가 getter와 setter를 갖게 된다면, controller와 같은 비즈니스 로직과 크게 상관없는 곳에서 자원의 속성이 실수로라도 변경될 수 있다. Entity의 값이 변하면 Repository 클래스의 Entity Manager의 flush가 호출될 때 DB에 값이..
[JPA] Entity를 설계할때 주의점(N+1) 1. Entity에는 가급적 Setter를 사용하지 말자 Setter를 무분별하게 사용하게 되면 어디서 해당 값이 변경되었는지 추적하기가 어렵다. 변경 포인트가 너무 많아서, 유지보수가 어렵다. Setter가 필요할 경우에는 추적하기 쉽도록 메서드를 따로 생성해주는것도 좋은 방법이다. 2. 모든 연관관계는 지연로딩으로 설정 즉시로딩( EAGER )은 예측이 어렵고, 어떤 SQL이 실행될지 추적하기 어렵다. 특히 JPQL을 실행할 때 N+1 문제가 자주 발생한다. 실무에서 모든 연관관계는 지연로딩( LAZY )으로 설정한다. 연관된 엔티티를 함께 DB에서 조회해야 하면, fetch join 또는 엔티티 그래프 기능을 사용한다. @XToOne(OneToOne, ManyToOne) 관계는 기본이 즉시로딩이므로..