Reference. 자바 ORM 표준 JPA 프로그래밍
책 목차 및 이전 글
더보기
들어가기 전 JPA 특징, Q&A
1. JPA 소개
3. 영속성 관리
4. 엔티티 매핑
4.1 - 4.3 @Entity, @Table, 다양한 매핑
4.4 - 4.5 데이터베이스 스키마 자동 생성, DDL 생성 기능
5. 연관관계 매핑 기초
6. 다양한 연관관계 매핑
7. 고급매핑
8. 프록시와 연관관계 관리
9. 값 타입
9.3~5 값 타입과 불변 객체, 값 비교, 값 타입 컬렉션
10. 객체지향 쿼리 언어
11. 웹 애플리케이션 제작
11.1 프로젝트 환경설정
11.2 도메인 모델과 테이블 설계
11.3 애플리케이션 구현
12. 스프링 데이터 JPA
12.1~3 스프링 데이터 JPA 소개, 공통 인터페이스 기능
12.5~10 명세, 사용자 정의 리포지토리, Web 확장...
13. 웹 애플리케이션과 영속성 관리
14. 컬렉션과 부가기능
- 컨버터(converter)를 사용하면 엔티티의 데이터를 반환해서 데이터베이스에 저장 가능
- 예시) VIP를 Y와N으로 지정하고 싶은 경우 (JPA boolean은 0, 1로 저장)
CREATE TABLE MEMBER ( ID VARCHAR(255) NOT NULL, USERNAME VARCHAR(255), VIP VARCHAR(1) NOT NULL, PRIMARY KEY (ID) )
@Entity public class Member { @Id private String id; private String username; @Convert(converter=BooleanToYNConverter.class) private boolean vip; //Getter, Setter ... }
- @Convert를 적용해서 데이터베이스에 저장되기 직전
BooleanToYNConverter
컨버터가 동작
- @Convert를 적용해서 데이터베이스에 저장되기 직전
- BooealnToYnConverter.java 구현체
@Convert public class BooealnToYnConverter implements AttributeConverter<Booelan, String> { @Override public String convertToDatebaseColumn(Boolean attribute) { return (attribute != null && attribute) ? "Y" : "N"; } @Override public Boolean convertToEntityAttribute(String dbData) { return "Y".equals(dbData); } }
- 컨버터 클래스는 @Convert 어노테이션을 사용하고
AttributeConvert
인터페이스 구현 필요
- AttributeConvert에 제네릭에는 현재 타입과 변환할 타입을 지정 ( <Boolean, String> )
public interface AttributeConverter<X, Y> { public Y convertToDatabaseColumn (X attribute); public X convertToEntityAttribute (Y dbData); }
convertToDatabaseColumn()
: 엔티티 데이터를 DB 컬럼에 저장할 데이터로 변환
convertToEntityAttribute()
: DB에서 조회한 컬럼 데이터를 엔티티의 데이터로 변환
- 컨버터는 클래스 레벨에도 설정 가능, 단 이때는 attributeName 속성 사용이 필요 (적용 속성명)
@Entity @Convert(converter=BooleanToYNConverter.class, attributeName = "vip") public class Member { @Id private String id; private String username; private boolean vip; ... }
14.2.1 글로벌 설정
- 모든 Boolean 타입에 컨버터를 적용하려면
@Converter(autoApply = true)
옵션을 적용@Converter(autoApply = true) public class BooleanToYNConverter implements AttributeConverter<Boolean, String> { ... }
@Entity public class Member { @Id private String id; private String username; //@Convert를 지정하지 않아도 저동으로 컨버터 적용 private boolean vip; //Getter, Setter }
@Convert 속성 정리
속성 | 기능 | 기본값 |
---|---|---|
converter | 사용할 컨버터를 지정 | |
attributeName | 컨버터를 적용할 필드를 지정 | |
disableConversion | 글로벌 컨버터나 상속 받은 컨버터를 사용하지 않음 | false |
'개발서적 > 자바 ORM 표준 JPA' 카테고리의 다른 글
[자바 ORM 표준 JPA 프로그래밍] 14.4 엔티티 그래프 (0) | 2021.10.25 |
---|---|
[자바 ORM 표준 JPA 프로그래밍] 14.3 리스너 (0) | 2021.10.25 |
[자바 ORM 표준 JPA 프로그래밍] 14.1 컬렉션 (0) | 2021.10.25 |
[자바 ORM 표준 JPA 프로그래밍] 13.4 너무 엄격한 계층 (0) | 2021.09.21 |
[자바 ORM 표준 JPA 프로그래밍] 13.3 OSIV (0) | 2021.09.21 |