반응형

2019/11/04 2

Java ORM JPA과 객체지향 쿼리 사용(JPQL, Criteria, QueryDSL)

개요 예전부터 객체지향 언어인 자바와 관계형 데이터베이스간 패러다임의 불일치로 개발자들이 많은 불편함을 겪여왔다. 객체지향 추상화, 캡슐화, 정보은닉, 상속, 다형성 등 시스템의 복잡성 줄여주는 장치들을 제공 관계형 데이터베이스는 데이터 중심으로 구조화, 집합적인 사고가 필요하고 추상화, 상속, 다형성 같은 개념이 없음 연관관계를 표현할 때 객체는 타 객체 참조 (reference) 로, 관계형 DB 는 외래키로 표현하는 등 연관관계를 표현 객체를 테이블에 맞춰 모델링 class Member { String id; // MEMBER_ID 컬럼 사용 Long teamId; // TEAM_ID FK 컬럼 사용 String userName; } class Team { Long id; // TEAM_ID PK ..

Back-End/JPA 2019.11.04

Reflection Type을 활용해 JPA 공통 AttributeConverter 구현

얼마전에 JPA에서 사용할 공통 AttributeConverter 를 구현하면서 고민했던 점들을 정리한다. 공통 AttributeConverter 의 필요성 Entity와 테이블을 매핑하다보면 String, Integer, Long, LocalDateTime 외에 Json값이 저장되어있는 컬럼이나 코드값이 저장되어있는 컬럼의 경우 AttributeConverter 를 통해 Json 모델, Enum 과 매핑을 시킨다. // Entity @Entity public class UserEntity { @Converter(converter = UserStatusAttributeConverter.class) private Status status; @Converter(converter = UserOptionAttr..

Back-End/JPA 2019.11.04