본문 바로가기

Spring/JPA6

필드와 컬럼 매핑 필드와 컬럼 매핑 @Column 컬럼 매핑 @Column(name = "{컬럼명}") 형태로 사용한다. 속성 name 매핑할 테이블의 컬럼 이름 (기본값: 객체의 필드명) insertable, updatable 등록, 변경 가능 여부 (기본값: True) @Column(insertable = true, updatable = false) nullable(DDL) null 값의 허용 여부를 설정한다. false로 설정하면 DDL 생성 시에 not null 제약조건이 붙는다. @Column(nullable = false) unique(DDL) @Table의 uniqueConstraints와 같지만 한 컬럼에 간단히 유니크 제약조건을 걸때 사용. 컬럼에 사용 시 유니크키의 이름을 설정하기 힘들기 때문에 잘 사용.. 2023. 6. 15.
스키마 자동 생성(Auto DDL) 데이터베이스 스키마 자동 생성 DDL을 애플리케이션 실행 시점에 자동 생성 테이블 중심 → 객체중심 데이터베이스 방언(Dialect)을 활용해서 데이터베이스에 맞는 적절한 DDL 생성 오라클 varchar2 mysql varchar ... 등 데이터베이스에 맞는 타입으로 생성 이렇게 생성된 DDL은 개발 장비에서만 사용 생성된 DDL은 운영서버에서는 사용하지 않거나, 적절히 다듬은 후 사용 hibernate.hbm2ddl.auto create 기존테이블 삭제 후 다시 생성(DROP + CREATE) create-drop create와 같으나 애플리케이션 종료시점에 테이블 DROP 주로 테스트케이스를 작성하는 환경에서 사용 update 변경분만 반영(운영 DB에는 사용하면 안됨) validate 엔티티와 .. 2023. 6. 15.
엔티티 매핑 @Entity @Entity가 붙은 클래스는 JPA가 관리 한다. JPA를 사용해서 테이블과 매핑할 클래스는 해당 어노테이션을 필수적으로 기재한다. 기본 생성자가 꼭 필요하다. @Entity public class Member { @Id private Long id; private String name; public Member() {} } 속성 name @Entity(name = “Member”) 형태로 사용한다. 기본값은 클래스의 이름을 그대로 사용한다. 같은 클래스 이름이 없으면 가급적 기본값을 사용한다 JPA 내부에서 엔티티 Alias로 사용하며, 실제 데이터베이스 Table명과는 관련없다. @Table @Table은 엔티티와 매핑할 테이블을 지정한다 @Entity @Table(name = "mb.. 2023. 6. 15.
JPA 란 무엇이고 왜 사용해야 하는가 JPA 소개 JPA? Java Persistence API (인터페이스의 모음이다.) Java 진영의 ORM 기술 표준 JPA 2.1 표준 명세를 구현한 3가지 구현체 - Hibernate, EclipseLink, DataNucleus JPA 버전 JPA 1.0(JSR 220) 2006년: 초기버전. 복합 키와 연관관계 기능이 부족 JPA 2.0(JSR 317) 2009년: 대부분의 ORM 기능을 포함, JPA Criteria 추가 JPA 2.1(JSR 338) 2013년: 스토어드 프로시저 접근, 컨버터(Converter), 엔티티 그래프 기능이 추가 ORM? Object-relational mapping(객체 관계 매핑) 객체는 객체대로 설계, 관계형 데이터베이스는 관계형 데이터베이스대로 설계를 해서.. 2021. 12. 24.