JPA

    JPA - 하나의 컬럼에 여러 개의 데이터를 저장하기

    배경 프로젝트를 진행하면서 인스타그램의 Feed와 같은 기능을 구현중이었다. Feed에는 여러 장의 Image를 업로드할 수 있다. MultiPartFile로 전달 받은 Image들은 S3에 저장된 후 S3에 저장된 url을 String 값으로 반환한다. 이 ImageUrl들은 별도로 커스텀할 일이 없기 때문에 Entity로 만들 필요를 못느꼈다. 그래서 여러 개의 imageUrl을 하나의 컬럼에 저장할 수 있는 방법에 대해 알아보았고 Converter를 사용하는 방법을 알게되어서 정리한다. 구현 AttributeConverter는 JPA(Java Persistence API)에서 엔티티 클래스와 테이블 간 데이터 변환을 도와주는 인터페이스다. JPA에서는 엔티티 클래스의 필드와 데이터베이스 테이블의 컬..

    JPA - Querydsl를 사용해 DTO 받환 받는 방법

    프로젝트를 진행하면서 조회한 도메인을 Mapstruct 라이브러리를 사용해 DTO로 매핑했었다. 하지만 점점 비즈니스 로직이 복잡해면서 매핑을 위한 코드도 같이 복잡해지다보니 도메인을 거치지 않고 DTO로 반환하는 방법이 있는지 찾아보게 되었다. 그러다 Querydsl로 DTO를 조회하는 방법을 알게 되었고 그 방법에 대해 정리해보려고 한다. Queyrdsl란? Querydsl은 JPA와 같은 ORM 프레임워크를 사용할 때 쿼리 작성을 더 편하게 해주는 라이브러리다. Querydsl을 사용하면 동적 쿼리 작성이 가능하다. Querydsl을 사용하면 SQL과 JPA의 복잡한 문법을 피할 수 있으며, 코드 작성이 간결해진다. Queyrdsl은 동적 쿼리 작성이 가능하며, 도메인 객체를 DTO로 변환하여 반환..

    Spring Data JPA - Auditing으로 생성일, 수정일 자동화하는 법

    JPA Auditing 생성일, 수정일은 거의 모든 엔티티에 사용되고 있다. 이런 공통적인 기능을 엔티티마다 생성해서 관리하는 것은 굉장히 비효율적이다. JPA Auditing을 사용해 하나의 엔티티로 효율적으로 사용해보자. JPA Auditing은 데이터의 생성 또는 수정이 발생하면 자동으로 값을 넣어주는 아주아주 고마운 친구다. @EnableJpaAuditing 추가 @EnableJpaAuditing @SpringBootApplication public class TodoApplication { public static void main(String[] args) { SpringApplication.run(TodoApplication.class, args); } } Spring Boot을 실행시키는 ..