본문 바로가기

hibernate

(5)
[Hibernate] Spring Boot Querydsl 설정하기 1. Querydsl 이란? JPA를 이용해서 복잡한 쿼리나 동적 쿼리를 작성할 경우 소스코드가 지저분해지는 경우가 많습니다. 이때 Querydsl 라이브러리를 이용해면 쿼리문자가 아니라 자바코드로 쿼리를 작성할 수 있습니다. 2. Querydsl의 장점 1. 자바코드로 쿼리를 작성하기 때문에 가독성이 좋아집니다. 2. 문법 오류를 컴파일 시점에서 잡아줍니다. 3. 동적 쿼리를 쉽게 만들 수 있습니다. 3. Querydsl 설정하기 테스트 환경은 다음과 같습니다. (버전을 모두 맞춰 주어야합니다!) spring boot 2.2.2 RELEASE maven java 11 h2 1) pom.xml ... org.springframework.boot spring-boot-starter-data-jpa org...
[JPA] @MappedSuperclass 사용법 1. @MappedSuperclass란? 엔티티 별로 공통 필드가 존재하는 경우 불 필요한 중복 코드를 제거하기 위해 사용합니다. 2. 사용방법 1) BaseEntity.java import javax.persistence.MappedSuperclass; import java.time.LocalDateTime; @MappedSuperclass public abstract class BaseEntity { private LocalDateTime createDt; private LocalDateTime updateDt; } @MappedSuperclass 어노테이션을 클래스명 위에 선언하며, 공통 클래스를 별도로 생성하는 일이 없다면 추상 클래스로 선언하는 것이 좋습니다. 등록일, 수정일 같이 여러 테이블에..
[JPA] 상속 관계 매핑 1. 상속 관계 매핑이란? 슈퍼타입 테이블, 서브타입 테이블을 자바에서 상속관계인 것 처럼 사용하는 방법입니다. 2. 상속 관계 매핑 전략의 종류 1) JOINED (조인전략) 슈퍼타입과 서브타입을 식별관계로 사용하는 방법입니다. 2) SINGLE_TABLE (단일 테이블 전략) 슈퍼타입과 서브타입을 하나의 테이블로 생성하는 전략입니다. 3) TABLE_PER_CLASS (타입 별 테이블 생성 전략) (비추천) 파일 타입 별로 테이블을 생성하는 전략입니다. 3. 상속 관계 매핑 적용 1) FileInfo.java import javax.persistence.*; @Entity @Table(name = "file_info") @Inheritance(strategy = InheritanceType.JOINE..
[Spring Boot] Hibernate Open Session In View Spring Boot에서 Hibernate 테스트를 하고 있던 도중 예기치못한 상황을 마주했습니다. 영속성이 끝났다고 생각되는 시점에서 프록시 객체를 조회하면 LazyInitializationException - No Session에러가 발생해야 하는데 Select Query가 실행되는 것이었습니다. 웹 검색을 통해 다음과 같은 사실을 알았습니다. Open Session In View Transaction이 종료된 후에도 Controller의 Session이 close되지 않았기 때문에, 영속 객체는 Persistence 상태를 유지할 수 있으며, Session이 열려있고 Persistence 상태이기 때문에 프록시 객체에 대한 Lazy Loading을 수행할 수 있게 됩니다. 출처: https://ki..
[Spring Boot] Hibernate 연동 방법 1. Hibernate란 Boss에서 개발한 ORM(Object Relation Mapping)프레임워크 중 한개입니다. ORM이란 객체와 DB 테이블의 매핑을 의미합니다. ORM 매핑을 이용하면 객체로 DB 테이블 조작할 수 있습니다. 2. pom.xml ... org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-tomcat provided org.springframework.boot spring-boot-starter-data-jpa org.mariadb.jdbc mariadb-java-client ... Spring Boot 버전 - 2.1.0.RELEASE hibernate-core..