JPA
-
[JPA] No converter found capable of converting from type [org.springframework.data.jpa.repository.query.AbstractJpaQuery$TupleConverter$TupleBackedMap] to type [com.web.blog.dto.post.PostidandviewcntWrapperclass] 오류JPA 2023. 7. 9. 15:18
No converter found capable of converting from type [org.springframework.data.jpa.repository.query.AbstractJpaQuery$TupleConverter$TupleBackedMap] to type [com.web.blog.dto.post.PostidandviewcntWrapperclass 오류 안녕하세요? 장장스입니다. 오늘은 JPA 사용 도중 발생한 오류 처리 방법을 정리입니다. JPQL 프로젝션에서 발생하는 문제 List memberDtoList = em.createQuery("select MemberDto(m.username, m.age) from Member m", MemberDto.class) .getResultLis..
-
[JPA] 공통 매핑 정보 @MappedSuperclassJPA 2023. 7. 9. 10:59
[JPA] 공통 매핑 정보 @MappedSuperclass 안녕하세요? 장장스입니다. 오늘은 JPA에서 공통 매핑 정보를 편리하게 사용하는 @MappedSuperclass 에 대해 정리해보겠습니다. 실무에서 공통으로 사용되는 칼럼들 실무에서 테이블을 만들 때 보통 최초생성자와 생성시간, 최종수정자와 수정시간을 저장하는 칼럼들을 사용한다. 매번 반복되는 테이블 칼럼을 반복해서 사용하는 것은 개발자에게 꽤나 번거로운 일이 될 것이라 생각한다. JPA에는 이처럼 공통적으로 매핑되는 칼럼을 쉽게 사용할 수 있도록 @MappedSuperclass 어노테이션을 통해 기능을 제공합니다. @MappedSuperclass 위에서 언급한 최초생성자와 생성시간, 최종수정자와 수정시간을 공통으로 작성할 수 있도록 BaseEn..
-
[JPA] 상속관계 맵핑 @Inheritance, @DiscriminatorColumnJPA 2023. 6. 25. 15:03
상속관계 맵핑 @Inheritance, @DiscriminatorColumn 안녕하세요? 장장스입니다. JPA 상속관계 맵핑 @MappedSuperclass 에 대해 정리해보겠습니다. 상속관계 맵핑 일반적인 관계형 데이터베이스는 슈퍼타입 서브타입 관계라는 모델링 기법이 있습니다. JPA에서는 슈퍼타입 서브타입 관계를 상속을 활용하여 구현할 수 있습니다. @Inheritance @Inheritance 어노테이션의 strategy 속성을 통해 전략을 선택 할 수 있습니다. @DiscriminatorColumn 어노테이션은 부모 클래스에 선언합니다. 하위클래스를 구분하는 용도의 칼럼을 사용합니다. name 속성을 통해 이름을 설정할 수 있습니다. default 값은 DTYPE 입니다. @Entity @Get..
-
[JPA] 단방향 양방향 연관관계와 다중성 #다대일 #일대다 #일대일 #다대다JPA 2023. 6. 25. 01:16
[JPA] 단방향 양방향 연관관계와 다중성 #다대일 #일대다 #일대일 #다대다 안녕하세요? 장장스입니다. JPA는 자바 진영의 표준 ORM(Object Relational Mapping)입니다. ORM에서 가장 중요한 것이 객체와 모델 사이의 관계를 정의하는 것입니다. 각 모델과의 연관 관계를 자바 코드로서 객체로 옮기는 것에 백퍼센트 정답은 없습니다. 구현하고자 하는 서비스의 도메인과 요구사항에 따라 적절하게 연관 관계를 정의해야 합니다. 단방향 관계, 양방향 관계 데이터베이스에서 테이블과 조인할때, 외래키(FK)로 하나로 양쪽 테이블을 조인이 가능합니다. 때문에 데이터베이스에서 테이블과 다른 테이블에는 방향이 없습니다. 반면에 JPA에서는 객체(엔티티)를 통해 또다른 객체(엔티티)를 참조합니다. Or..
-
[JPA] 기본키(PK) 매핑 전략 IDENTITY, SEQUENCE, TABLE, AUTOJPA 2023. 5. 20. 16:28
[JPA] 기본키(PK) 매핑 전략 GenerationType.IDENTITY GenerationType.SEQUENCE GenerationType.TABLE GenerationType.AUTO 안녕하세요? 장장스입니다. 오늘은 기본키(PK) 매핑 전략에 대해 정리해보겠습니다. 기본키 맵핑 어노테이션 @Id 기본키를 사용자가 직접 할당하여 사용한다. @Id private String id; @GeneratedValue 기본키를 자동생성할때 사용한다. @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; 기본키를 자동생성하는 @GeneratedValue 어노테이션은 4가지 전략이 있다. @GeneratedValue (strategy = ..
-
[JPA] 필드와 컬럼 매핑 @Column, @Enumerated, @Temporal, @LobJPA 2023. 5. 15. 21:03
[JPA] 필드와 컬럼 매핑 @Column, @Enumerated, @Temporal, @Lob, @Transient 안녕하세요? 장장스입니다. JPA 필드와 컬럼 매핑 어노테이션에 대해 정리하겠습니다. @Column 테이블의 컬럼 정보와 매핑하는 어노테이션이다. 속성 설명 기본값 name 필드와 매핑할 테이블의 컬럼 이름 객체의 필드 이름 insertable, updatable insertable, updatable 가능 여부 TRUE nullable (DDL) null 값의 허용 여부를 설정한다. false로 설정하면 DDL 생성 시에 not null 제약조건이 붙는다. unique (DDL) @Table의 uniqueConstraints와 같지만 한 컬럼에 간단히 유니크 제 약조건을 걸 때 사용한다..
-
[JPA] 데이터베이스 스키마 자동 생성 옵션 (hibernate.hbm2ddl.auto)JPA 2023. 5. 14. 00:34
[JPA] 데이터베이스 스키마 자동 생성 옵션 (hibernate.hbm2ddl.auto) 안녕하세요? 장장스입니다. 데이터베이스 스키마 자동 생성 JPA는 애플리케이션 실행 시점에 테이블을 자동 생성 할 수 있는 기능을 제공한다. 데이터베이스 방언(dialect)을 설정하여 데이터베이스에 맞는 적절한 DDL을 생성 할 수 있다. 스키마 자동 생성 hibernate.hbm2ddl.auto 속성 옵션 설명 create 기존테이블 삭제 후 다시 생성 (DROP + CREATE) create-drop create와 같으나 종료시점에 테이블 DROP update 변경분만 반영(운영DB에는 사용하면 안됨) validate 엔티티와 테이블이 정상 매핑되었는지만 확인 none 사용하지 않음 운영서버에서는 절대 cre..
-
[JPA] 영속성 컨텍스트(Persistence Context)와 주요 기능JPA 2023. 5. 13. 00:02
[JPA] 영속성 컨텍스트(Persistence Context)와 주요 기능 안녕하세요? 장장스입니다. 오늘은 JPA 영속성 컨텍스트와 주요 기능에 대해 정리해보겠습니다. 영속성 컨텍스트(Persistence Context)란? JPA(Java Persistence API)에서 영속성 컨텍스트(Persistence Context)란 엔티티(Entity)를 영구 저장하는 환경을 말한다. 여기서 엔티티(Entity)는 데이터베이스의 테이블에 대응하는 클래스로. JPA에서는 @Entity 어노테이션이 붙은 클래스를 엔티티라 한다. @Entity public abstract class Item{ @Id @GeneratedValue @Column(name = "ITEM_ID") private Long id; pr..