반응형
객체와 테이블 매핑 @Entity @Entity가 붙은 클래스를 엔티티라고 하고 JPA가 관리 한다. JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 필수이다. 속성 값 속성 설명 기본값 name JPA에서 사용할 엔티티 이름을 지정한다 클래스 이름을 그대로 사용 주의할점 기본 생성자 필수이다. (파라미터가 없는 public 또는 protected 생성자) final, enum, interface, inner 클래스에서는 사용할 수 없다. 저장할 필드의 변수에 final을 사용할 수 없다. @Table 엔티티와 매핑할 테이블 지정한다. 속성 값 속성 설명 기본값 name 매핑할 테이블 이름을 지정한다 엔티티 이름 사용 catalog catalog 기능이 있는 DB에서 catalog를 매핑한다. ..
spring.jpa.hibernate.ddl-auto 데이터베이스 ddl 자동 생성 옵션으로 Entity 설정을 참고하여 애플리케이션 실행시점에 Hibernate에서 자동으로 DDL을 생성하여, 필요한 Database의 Table 설정들을 자동으로 수행해주는 기능이다. application.yml spring: jpa: hibernate: ddl-auto: 옵션 ddl-auto의 옵션으로는 5가지가 있다. ddl-auto 옵션 종류 create: 기존테이블 삭제 후 다시 생성 (DROP 후에 CREATE) create-drop: create와 같으나 종료시점에 테이블 DROP (테스트 코드 실행 시 주로 사용) update: 변경분만 반영, 추가만 반영되고 삭제는 반영되지 않는다. (DB Lock을 방지..
JPA의 가장 큰 장점은 객체 매핑을 통해 자동으로 SQL 쿼리를 작성해 DB에 전달해준다. 그런데 DB의 종류는 한가지가 아닌 정말 다양한 DB의 벤더들이 있고 각 DB마다 SQL 문법이 다르다. 그럼 JPA는 어떻게 이 수많은 DB들에 우리가 사용하는 DB에 맞는 SQL을 작성하여 전달해줄까? 이 때 사용되는 것이 바로 "Dialect (방언)"이다. dialect는 JPA 구현체(ex: hibernate)가 사용하는 SQL 방언을 추상화한 것으로, 각 DB마다 다른 SQL 문법을 처리해준다. DB마다 맞은 SQL 언어를 JPA가 알아서 자동으로 인지하는 것이 아니라 다음과 같이 DB에 맞는 dialect를 설정해줘야한다. application.yml spring: jpa: properties: hi..
JPA를 사용하다보면 "영속성 컨텍스트"라는 단어를 많이 보게 된다. 하지만 대충 어떤방식인줄은 알지만, 정확히는 이해하지 못했다. 이번에 JPA에서 가장 중요하고 핵심 개념인 "영속성 컨텍스트"에 대해 다뤄보려한다. 영속성 컨텍스트 영속성 컨텍스트를 한국어로 번역하면 "엔티티를 영구 저장하는 환경"이라는 뜻이다. EntityManager.persist(entity) 우리가 Spring Data JPA를 사용할 때는 우리가 직접 EntityManager을 생성해서 객체를 저장하지는 않는다. 하지만 영속성 컨텍스트를 이해하기 위해서는 EntityManager에 대한 이해가 필요하다. EntityManager의 persist() 메서드는 객체를 저장하는 역할을 한다. 하지만 저장하는 곳이 DB가 아닌 바로,..
QueryDSL이란 ? SQL, JPQL 등을 코드로 작성할 수 있도록 해주는 프레임워크로 쿼리를 type-safe(컴파일시 에러 체크 가능)하게 Java 코드로 작성할 수 있습니다. QueryDSL은 동적 쿼리를 아주 편리하게 작성할 수 있어 복잡한 동적 쿼리를 사용해야 할 때 QueryDSL을 사용하고 단순한 경우에는 Spring Data JPA를 사용합니다. QueryDSL은 JPA가 제공하는 JPQL을 코드로 작성할 수 있도록 도와주는 빌더 역할을 하기 때문에 JPQL의 문법에 대한 이해가 필요합니다. SQL과 JPQL의 문제점 QueryDSL을 이해하기 전에 먼저 SQL과 JPQL의 문제점을 알아봅시다. # SQL String sql = "select id, item_name, price, qu..
JPA(Java Persistent API)란 ? ORM (Object Relational Mapping) 객체 관계 매핑 기술의 표준으로 인터페이스의 모음입니다. 따라서 실제로 동작하는 것이 아니기 때문에 구현체가 필요한데, JPA 표준을 구현한 구현체는 아래와 같이 Hibernate, EclipseLink, DataNucleus가 있으며 대표적으로 Hibernate를 사용합니다. ORM 이란 ? ORM 기술은 말 그대로 객체와 관계형 데이터 베이스를 매핑해 주는 기술으로 객체는 객체대로 설계할 수 있고 관계형 데이터베이스는 관계형 데이터베이스대로 설계가 가능하도록 ORM 프레임워크가 중간에서 매핑을 해줍니다. JPA의 동작 과정 JPA는 JAVA 애플리케이션과 JDBC 사이에서 동작하는데 JAVA 애..