JPA 3

Querydsl DTO 조회하는 방법(Projection, @QueryProjection)

Projection 연산이란, - 한 Relation의 Attribute들의 부분 집합을 구성하는 연산자입니다. - 결과로 생성되는 Relation은 스키마에 명시된 Attribute들만 가집니다. - 결과 Relation은 기본 키가 아닌 Attribute에 대해서만 중복된 tuple들이 존재할 수 있습니다. => 쉽게 Projection이란, '테이블에서 원하는 컬럼만 뽑아서 조회하는 것'이라고 할 수 있습니다. * Relation 데이터를 원자 값으로 갖는 이차원 테이블 * Column = Attribute (프로젝션 대상이 하나일 때는 그 대상의 타입으로 반환되지만, 프로젝션 대상이 둘 이상일 때는 Tuple 또는 DTO로 변환할 수 있습니다.) Querydsl DTO로 조회하는 방법(Projec..

JPA와 Spring Data JPA 구분하기

해당 포스팅은 JPA에 대해 세부적으로 다루기보다는 전체적인 개념과 함께 JPA와 Spring Data JPA를 구분하는데 초점을 두었습니다. 참고 부탁드리겠습니다. - ORM(Object Relational Mapping) JPA에 대해 알아보기 전 더 큰 개념인 ORM 부터 간단하게 살펴보겠습니다. 객체 관계 매핑(Object Relational Mapping)이란? 객체와 관계형 데이터베이스의 데이터를 ORM 프레임워크가 중간에서 자동으로 매핑해주는 것을 말합니다. (대부분의 대중적인 언어에는 ORM 기술이 존재) 객체를 객체대로 설계하고, 관계형 데이터베이스는 관계형 데이터베이스대로 설계했을 때 객체 모델과 관계형 모델 간의 불일치가 존재하는데, 이때 ORM을 통해 객체 간의 관계를 바탕으로 SQ..

JPA @CreatedDate @LastModifiedDate 생성 시간, 수정 시간이 저장되는 원리

@CreatedDate, @LastModifiedDate 데이터를 저장할 때 '생성된 시간 정보'와 '수정된 시간 정보'는 여러모로 많이 사용되고 또 중요합니다. JPA를 사용하면서 @CreatedDate, @LastModifiedDate를 사용하여 생성된 시간 정보, 수정된 시간 정보를 자동으로 저장할 수 있는데요. 오늘 작업 중에 createAt, updatedAt 값이 계속 null로 들어가던 문제를 해결하면서 동작 원리에 대해 조금 더 살펴본 내용을 정리합니다. (null이 들어간 원인은 main method가 실행되는 Application class에 @EnableJpaAuditing 어노테이션을 적용하지 않아서였습니다.) * 내용 중 자주 등장할 'audit' 는 심사, 감사하다는 뜻입니다. ..