본문 바로가기

반응형

Spring Data JPA

(5)
[하이버네이트 유저 가이드 파헤치기] @Basic 어노테이션 & @Column 어노테이션 - 2.3.1 ~ 2.3.3 2.3 Basic types Basic value type은 보통 단일 데이터베이스 칼럼과 집계되지 않는 단일 자바 타입(JAVA type)을 매핑한다. 하이버네이트는 JDBC 명세서에서 추천하는 자연스러운 매핑을 따르는 여러가지 내장된 기본 타입(basic type)을 제공한다. 내부적으로 하이버네이트는 특정한 org.hibernate.type.Type을 자바 타입과 데이터베이스 칼럼로 매핑할 떄 BasicTypeRegistry를 사용한다. 원문 Basic value types usually map a single database column, to a single, non-aggregated Java type. Hibernate provides a number of built-in basic type..
[하이버네이트 유저 가이드 파헤치기] 매핑 타입 - 2.1 2.1 매핑 타입 (Mapping types) 하이버네이트는 애플리케이션 데이터의 자바와 JDBC 표현을 모두 이해한다. 애플리케이션 데이터를 데이터베이스에서 조회하고 입력하는 기능은 하이버네이트 타입의 기능이다. 이런 사용 사례에서 타입은 org.hibernate.type.Type interface의 구현이다. 또한, 이 하이버네이트 타입은 자바 타입의 동등성 확인 방법이나 값 복사와 같은 다양한 행동적 측면을 설명한다. 필자 해설 잘 이해가 안 될 수 있는 대목이다. 이후 유저 가이드에서 자세하게 다룰 부분이지만 대략적으로 설명하겠다. 하이버네이트 타입 중 StringType은 JDBC 타입 VARCHAR과 자바 타입 java.lang.String를 연결해준다. 그렇기 때문에 애플리케이션 데이터를 D..
[하이버네이트 유저 가이드 파헤치기] 들어가며 - 0 들어가며 처음 개발자로 일을 시작한 시점(2017년)에는 mybatis라는 SQL Mapper를 사용해서 개발을 했었습니다. 아무래도, 당시에는 한국 IT 개발이 SI 중심으로 이루어져서 그런 것 같습니다. 그런데 최근 몇년간 IT 서비스를 개발하는 스타트업들이 많아지고 투자도 많아져서 그런지 JPA를 많이들 사용하기 시작한 것 같습니다. 많은 개발자들이 입사하고 싶어하는 네카라쿠배당토 같은 회사들에서 JPA를 적극적으로 사용하고 있기 때문에 그런지도 모르겠습니다. 아래 구글 트렌드를 보니, 확실히 JPA의 관심도가 꾸준히 올라갔고 최근에는 마이바티스와 거의 비등해지고 있는 것을 알 수 있습니다. 저는 개인 프로젝트에 JPA를 적용하기 시작해 실무에서 JPA를 사용한지 2년이 넘었습니다. 처음에는 김영한..
@DataJpaTest를 이용해 Lazy loading 테스트할 때 주의할 점 0. 들어가며 현재 JPA에서 일대일 연관관계 매핑에 대한 글을 적고 있다. 그래서 코드를 작성해서 테스트하는데. 내가 원하는 테스트 결과가 안 나와서 헤매다가 해법을 찾았다. 해법을 찾으면서 몰랐던 지식을 습득하기도 했다 그런데 돌이켜보니 2년전에 이미 문제를 겪어서 거기에 대한 조치를 취한 적도 있었다는 것을 알았다. 그래서 기록으로 남기려고 한다. 1. 문제 상황 아래는 이번에 문제가 생겼던 코드이다. 일단 엔티티 Post와 PostDetails의 관계는 일대일 연관관계로 Post가 연관관계의 주인으로 외래키를 가지고 있는 구조이다. @Entity class Post( @Id @GeneratedValue val id: Long? = null, var title: String? = null, @Col..
코틀린(Kotlin) data class를 JPA에서 사용시 주의할 점 코틀린(Kotlin) data class를 JPA에서 사용시 주의할 점 들어가며 코틀린(Kotlin)을 회사 웹 서비스에 도입하기 위해 공부하던 중 kotlin의 data class를 spring data jpa에서 사용시 주의할 점을 알게 되었다. data class란 무엇인가? lombok에서 사용하는 @Data 어노테이션과 비슷한 기능을 코틀린(Kotlin) 언어 자체에서 지원한다고 보면 된다. 지원 기능은 대표적으로 아래와 같다. equals() / hashCode() 자동 선언 toString() 자동 선언 copy() 함수 구현 반복되는 코드 구현을 줄여주는 좋은 기능이다. 실제로 웹상의 많은 예제에서 data class의 장점으로 spring data jpa의 entity를 예시로 들었다. ..

반응형