본문 바로가기
반응형

프로그래밍이야기/JPA6

[JPA] Converter 활용하기 Converter 활용을 통한 내용을 일전에 작성한적이 있었습니다. - [리팩토링] 코드 JPA Converter 두번째 내용으로 @Enumerated 를 활용할 수 없을때 @Converter 를 활용하는 방법에 대해서 공유드리려고 합니다. Jpa에서 Enum 활용 하나의 필드가 요소, 멤버라 불리는 명명된 값의 집합을 이루는 상수 역할을 하는 식별자가 필요할 때 enum과 @Enumerated 를 활용하였습니다. 예를 들어, 아이템을 저장하는 테이블에는 아이템의 상태를 관리하는 필드가 있습니다. Status 라는 필드는 활성화(ENABLE)와 비활성화(DISABLE) 상태를 갖고 있습니다. public enum Status { ENABLE, DISABLE } 그래서 해당 필드는 @Enum.. 2022. 8. 21.
[JPA] 엔티티 식별자 생성 방식 테이블을 설계하면서 기본키는 어떠한 논리적 근거를 가지고 설계를 해야할까요? 먼저 기본키의 제약 조건의 특징부터 알아본다면 다음과 같습니다. null일 수 없습니다. 유일해야 합니다. 변하면 안됩니다. 그래서, 이러한 값을 현실세계에서의 값을 가져와서 기본키로 설정하곤 합니다. 주민등록번호 사원번호 주문번호 등등 다음 보도자료는 주민등록번호를 금지하는 제도입니다. - 주민등록번호, 이제는 함부로 수집하지 못한다! 이 제도 도입을 통해서 기존에 주민등록번호를 기본키로 설정한 시스템들은 힘들게 수정을 하였을 것입니다. 기본키는 수많은 외래키와 인덱스와 연관관계가 있기 때문에 수정을 하는 것에 있어서 많은 문제를 불러올 수 있습니다. 그리고 지금 현실세계에서 주민등록번호 또는 사원번호가 기본키를 만족할지 몰라.. 2022. 7. 9.
[리팩토링] 코드 JPA Converter 회사에서 개발 중인 소스를 살펴보면서 리팩토링할 영역을 찾아보다가 JPA Converter를 활용하여서 변경할 포인트를 찾게 되어서 해당 내용을 공유하려고 합니다. 아래에서 공유하는 내용은 실제 회사에서 개발하는 내용은 아니며 재구성한 것입니다. 모든 소스는 GitHub를 통해서 확인하실 수 있습니다. - 링크 개발 환경 JDK 11 Spring Boot 2.6.4 IntelliJ IDEA 상황 사용자 도메인이 아래와 같이 존재합니다. 그 중 hobby 필드는 다음과 같이 Database에 저장됩니다. 기능 hobby 필드를 이용한 조회 기능은 다음과 같습니다. 취미를 입력 받는다. 입력 받은 취미로 해당 취미를 보유한 사용자를 조회한다. 사용자의 저장된 hobby 필드 중에 일치하는 취미가 하나라도 있.. 2022. 3. 5.
[JPA] 상속 전략 정리 JPA에서 상속 관계 전략을 세우는 방법 정리 자바에서 상속의 대해서는 많이 접해보았지만 최근 JPA를 통해서 상속에 대해서 어떻게 대응을 해야되는지 공부를 하다가 관련 내용을 정리하려고 합니다. 자바 ORM 표준 JPA 프로그래밍에서는 다음과 같이 설명을 하고 있습니다. 관계형 데이터베이스에는 객체지향 언어에서 다루는 상속이라는 개념이 없다. 대신에 슈퍼타입과 서브타입 관계라는 모델링 기법이 객체의 상속 개념과 가장 유사하다. ORM에서 이야기하는 상속 관계 매핑은 객체의 상속 구조와 데이터베이스의 슈퍼타입 서브타입 관계를 매핑하는 것이다. 그렇다면 객체의 상속 관계 매핑을 위해서 어떻게 해야 할까요? 슈퍼타입 서브타입 논리 모델을 실제 물리 모델인 테이블로 구현하기 위해서는 3가지 방법을 선택할 수 .. 2022. 2. 6.
[JPA] @Enumerated 사용법 자바의 enum 타입을 엔티티 클래스의 속성으로 사용할 수 있습니다. 예를 들어, 실무에서 사용하였을때 주문의 상태를 임시저장, 진행중, 완료, 취소 등으로 주문의 상태의 따라서 분리할 수 있습니다. 그래서 각 주문의 상태를 enum으로 생성을 하였고 해당 enum 타입을 엔티티 클래스의 속성으로 설정할 수 있습니다. 사용법과 주의할점에 대해서 알아보도록 하겠습니다. 해당 내용을 정리하기 위해서 사용한 소스는 Github에서 확인하실 수 있습니다. - 소스 종류 @Enumerated는 enum의 값을 Database의 저장하는 방법을 2가지 제공합니다. 아래는 클래스 파일의 내용입니다. public enum EnumType { /** Persist enumerated type property or fie.. 2022. 2. 4.
[JPA] JPA와 Mybatis 비교 개발자로서 일을 시작하면서 Mybatis의 사용은 거의 80 ~ 90%였습니다. 왜냐하면 어느 프로젝트에서든지 쉽게 접할 수 있었습니다. 그러다보니 어느 프로젝트를 진행하든 Mybatis라는 프레임워크를 만났기 때문에 어렵지 않게 진행할 수 있어서 사실 반가웠습니다. 그래서 JPA는 미지의 영역이었습니다. 그리고 시간이 흘러서 프로젝트를 새롭게 진행하면서 JPA를 접하게 되었습니다. 그때까지만 해도 JPA를 이렇게 알고 있었습니다. Database의 제약없이 변경되도 사용할 수 있다는 것 그러다 이러한 생각이 들었습니다. 단순히 위 기능때문에 그 많은 서비스 기업에서 JPA를 사용하는 것일까? 그리고 나는 개발자로서 Java의 기능을 맞게 사용하고 있는것인가? 라는 생각이 들었고 좋은 기회로 우아한 테크.. 2022. 1. 23.
반응형