애정코딩 💻

[MapStruct] 내가 찾아 쓰려고 정리한 글

🏃‍♂️ 계속해서 업데이트 하기 🏃‍♂️ 1. 공식문서 2. 왜 사용할까? 3. 동작방식 4. 의존성 5. Mapper Inteface 작성 6. Mapper 구현체 살펴보기 공식문서 https://mapstruct.org/documentation/stable/reference/pdf/mapstruct-reference-guide.pdf MapStruct 왜 사용할까? 보통 DB에서 데이터를 조회하고 서비스단에서 로직을 설계 하기 위해 Entity -> Dto , Dto -> Entity 작업을 하게 되는데 이러한 Mapping 작업을 해주는 라이브러리가 많이 존재한다 그중 아래의 링크를 확인해보면 MapStruct 퍼포먼스가 빠른 것을 확인할 수 있다. https://www.baeldung.com/j..

WEB/JAVA 2022.03.16 Joana

[Querydsl] 내가 찾아 쓰려고 정리한 글

🏃‍♂️ 계속해서 업데이트 하기 🏃‍♂️ 마지막 업데이트 2022/03/29 1. Querydsl 을 왜 사용할까? 2. 작동방식? 3. 의존성 4. Repository 구조 5. Projection 의 대한 고찰 ... 6. 동적쿼리 (BooleanBuilder) 7. ExpressionUtils 8. 정렬 타입에 따른 정렬 처리 Querydsl 을 왜 사용할까? JPA 를 사용하면서 (@Query 포함) 조회 기능에 대한 한계가 있다. 동적인 쿼리인 경우인데 예를 들어 주문 페이지를 검색 한다고 했을 때 카테고리 or 상품명 or 기업명 등등... 으로 검색 조건이 달라지는 부분이다. 그래서 사용하게 된 것이 바로 Querydsl 프레임워크 이다. - 타입 체크가 바로 가능하다 - 자바 코드를 기반으..

WEB/JPA 2022.03.15 Joana

3. 연관관계 - ManyToOne

Coupon Entity package so.ego.re_darling.domains.coupon.domain; import lombok.*; import so.ego.re_darling.domains.user.domain.User; import javax.persistence.*; import java.time.LocalDateTime; @AllArgsConstructor(access = AccessLevel.PROTECTED) @NoArgsConstructor(access = AccessLevel.PROTECTED) @Table(name = "coupon") @Entity public class Coupon { @Id @GeneratedValue(strategy = GenerationType.IDEN..

Project/DARLING 2022.01.23 Joana

2. Entity

package so.ego.re_darling.domains.coupon.domain; import lombok.*; import javax.persistence.*; import java.time.LocalDateTime; @AllArgsConstructor(access = AccessLevel.PROTECTED) @NoArgsConstructor(access = AccessLevel.PROTECTED) @Table(name = "coupon") @Entity public class Coupon { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @NonNull private String title; private Str..

Project/DARLING 2021.12.03 Joana

5. 자바 ORM 표준 JPA 프로그래밍 - 다양한 연관관계 매핑

연관관계 매핑시 고려사항 3가지 1. 다중성 2. 단방향, 양방향 3. 연관관계의 주인 - 객체 양방향 관계는 참조가 2군데 있기 때문에 둘중 테이블의 외래 키를 관리할 곳을 지정해야함 - 외래 키를 관리하는 참조 - 주인의 반대편 : 외래 키에 영향을 주지 않음, 단순 조회 다대일[N:1] 가장 많이 사용함 단반향 아래와 같이 [N]에서 외래 키를 관리하고 Team을 조회 하고 추가할 수 있다. Team에 서는 조회하지 못함 -> Team에서 Member을 조회하는일이 빈번하다고 하면 -> 양반향 으로 매핑해주는게 좋음. 양반향 단반향에서 TEAM이 MEMBER를 mapped by 를 추가하여 MEMBER를 조회할 수 있다. (읽기 전용) 일대다[1:N] 1이 연관관계의 주인이다. 단방향 TEAM 에서..

WEB/JPA 2021.05.14 Joana

JPA Auditing 으로 생성/수정시간 자동화하기

교육과정 동안 언제 만들어졌는지, 언제 수정되었는지에 따른 유지보수 중요성을 배우진 못했다. 이제 모델링할 때 고려해서 짜야겠군... 같은 내용인데 매번 DB에 insert/update을 하기에는 코드가 여기저기 들어가게 되니까 생성될 때 같이 생성되면 편리하다! domain 폴더에 BaseTimeEntity클래스를 만들어주고 모든 Entity의 상위 클래스가 되게 하면 된다. 1. @MappedSpuerclass 를 이용하면 JPA Entity클래스들이 BaseTimeEntity를 상속할 경우 필드들도 컬럼으로 인식하도록 한다. 2. @EntityListeners(AuditingEntityListener.class)로 해당 클래스에 Auditing기능을 포함한다. 3. @CreatedDate priva..

WEB/Spring 2020.04.14 Joana