본문 바로가기

학습 일지130

DTO vs VO 그리고 Entity와 DTO를 분리하는 이유 DTO와 VO를 당연 시 사용했지만 막상 DTO와 VO의 차이에 대해 뚜렷하게 설명할 수 없었고 이번 포스팅을 통해 정리해보려고 한다. 먼저, DTO와 VO는 전혀 다른 용도의 객체이다. 📌 VO 란? VO는 Value Object로 값 그 자체를 표현하는 객체이다. VO는 객체의 참조값이 다르더라도 값이 같다면 동일한 것으로 봐야한다. 예를 들어 서로 고유번호가 다른 10000원 지폐가 2장이 있다고 할 때, 10000원 지폐의 고유 번호가 서로 다르다고 해서 다른 10000원 이라고 하지 않고 똑같은 10000원이라 한다. 이처럼 값으로만 비교되는 객체를 VO라고 한다. 📌 VO의 특징. Read-Only속성을 가진다. 값 자체를 표현하기 때문에 불변 객체여야한다. 불변성이 보장되어야 하기 때문에 s.. 2023. 4. 26.
[JPQL] 다형성 쿼리, 엔티티 직접 사용, Named 쿼리, 벌크 연산 📌 다형성 쿼리 Album, Movie, Book이 Item을 상속받는 구조 설계. Type 조회 대상을 특정 자식으로 한정 ex. Item 중에 Book, Movie를 조회해라 [JPQL] select i from Item i where type(i) IN (Book, Movie) [SQL] select i from i where i.DTYPE IN ('B', 'M') TREAT(JPA 2.1) 자바 타입 캐스팅과 유사 상속구조에서 부모타입을 특정 자식타입으로 다룰 때 사용 FROM, WHERE, SELECT(Hibernate 지원) 사용 ex. 부모인 Item과 자식 Book이 있다. [JPQL] select i from Item i where treat(i as Book).auther = 'kim'.. 2023. 4. 26.
[JPQL] 경로 표현식, 페치 조인(N+1문제 해결) 📌 경로 표현식 .(점)을 찍어 객체 그래프를 탐색하는 것 select m.username → 상태 필드 from Member m join m.team t → 단일 값 연관 필드 join m.orders o → 컬렉션 값 연관 필드 where t.name ='팀A' 경로 표현식 용어 정리 상태 필드(state field) : 단순히 값을 저장하기 위한 필드 (ex: m.username) 연관 필드(association field) : 연관관계를 위한 필드 단일 값 연관 필드 : @ManyToOne, @OneToOne, 대상이 엔티티(ex: m.team) 컬렉션 값 연관 필드 : @OneToMany, @ManyToMany, 대상이 컬렉션(ex: m.orders) 경로 표현식 특징 상태 필드(state fi.. 2023. 4. 26.
[JPQL] 타입 표현과 기타식, 조건식(CASE 등등), 기타 함수 📌 JPQL 타입 표현과 기타식 문자 : 'HELLO', 'She"s' 숫자: 10L(Long), 10D(Double), 10F(Float) Boolean: TRUE, FALSE ENUM: jpql.MemberType.Admin(패키지명 포함) select m.username, 'HELLO', true from Member m where m.type = jpql.MemberType.ADMIN // 파라미터 바인딩 경우 String query = "select m.username, 'HELLO', true from Member m " + "where m.type = :userType"; List result = em.createQuery(query) .setParameter("userType",Member.. 2023. 4. 25.