본문 바로가기

Spring52

Entity-Table 매핑 - 필드 매핑(@Column) JPA에서는 Entity의 속성과 테이블의 컬럼의 매핑을 위해 다양한 옵션(애너테이션)을 지원하고 있다 JPA에서 지원하는 옵션은 다음과 같다 이번 페이지에서는 컬럼에 대한 옵션을 살펴보겠다 @Column name - 컬럼이름 insertable/updatable - 등록/수정 가능 여부 unique - unique 제약조건 columnDefinition - 컬럼에 대한 DDL을 직접 주는 옵션 ex) varchar(100) default ‘EMPTY' length - 문자열 길이 precision - 소수점을 포함한 전체 자릿 수 scale - 소수 자리수 위 옵션들은 아래와 같이 Entity의 속성위에 @Column 애너테이션을 붙여서 설정할 수 있다 @Entity class Report{ @Id p.. 2023. 2. 23.
스키마 자동생성 옵션 JPA에서는 테이블을 자동생성해주는 기능이 존재한다 자동생성옵션은 아래와 같다 스키마 자동생성 옵션 create 애플리케이션 시작 시에 기존 테이블을 Drop 한 뒤, 테이블을 생성 create-drop 애플리케이션 시작 시에 테이블을 생성한 뒤, 애플리케이션 종료 시에 테이블을 Drop update 테이블에 변경사항이 있다면 Update(컬럼추가, 제약조건 추가 등) 컬럼 삭제는 안 됨 validate 테이블과 엔티티 매핑정보가 일치한 지 검증 일치하지 않을 경우 에러 발생 none 아무동작 하지 않음 none 자체는 아무의미 없음 "asdl;kfj;asdkljfl;adksjfkl;j"와 같은 문자열을 입력한 거랑 동일함 운영환경 별 권장옵션 운영환경 권장옵션 개발 create, update 테스트 u.. 2023. 2. 14.
Entity-Table 매핑 - Entity와 테이블 매핑방법 JPA가 제공하려는 기능인 ORM은 Object-Relational Mapping이다 여기서 Object는 Entity, Relational은 테이블을 의미한다 ORM은 객체(Entity)와 테이블 간 매핑의 괴리를 해결하기 위해 나온 개념이다 이 페이지에서는 Entity와 테이블이 어떻게 매핑될 수 있는지 살펴보려고 한다 Entity는 클래스로 표현되며, @Entity 애너테이션이 붙는다 @Entity class Member{ /** ID */ @Id private Long id; /** 이름 */ private String name; /** 나이 */ private Long age; /** 성별 */ private GenderCode genderCode; //Entity는 기본 생성자가 필요하다 pu.. 2023. 2. 12.
영속성 컨텍스트 이점 영속성 컨텍스트의 이점 1차 캐시 데이터를 가져올 때 1차 캐시에 데이터가 있으면 1차 캐시에서 데이터를 가져온다 DB 접근을 최소화하여 성능향상 동일성(identity) 보장 자바 컬렉션에서 객체를 가져오는 것과 같이 엔티티의 동일성을 보장한다 같은 트랜잭션 내의 엔티티는 유일성을 가진다 "=="과 같은 연산자로 동일한 엔티티인지 확인이 가능하다 트랜잭션을 지원하는 쓰기 지연 (transactional write-behind) 데이터를 Insert/Update 시, 쿼리를 Commit 시점에 모아서 보낼 수 있다 DB 커넥션을 맺고 끊는 비용을 아낄 수 있다 변경 감지(Dirty Checking) 따로 Update 쿼리를 요청하지 않아도 데이터 변경 발생 시, 변경을 감지하여 자동으로 Update 쿼리.. 2023. 2. 12.