분류 전체보기

·Framework/JPA
필드와 컬럼 매핑 분류 매핑 어노테이션 설명 필드와 컬럼 매핑 @Column 컬럼을 매핑한다. @Enumerated 자바의 enum 타입을 매핑한다. @Temporal 날짜 타입을 매핑한다. @Lob BLOB, CLOB 타입을 매핑한다. @Transient 특정 필드를 데이터베이스에 매핑하지 않는다. 기타 @Access JPA가 엔티티에 접근하는 방식을 지정한다. @Column @Column은 객체 필드를 테이블 컬럼에 매핑한다. 가장 많이 사용되며 기능도 많다. 속성 기능 기본값 name 필드와 매핑할 테이블의 칼럼 이름 객체의 필드 이름 insertable(거의 사용되지 않음) 엔티티 저장 시 이 필드도 같이 저장한다. false 설정 시 이 필드는 데이터베이스에 저장하지 않는다. false 옵션을 ..
·Framework/JPA
DDL 자동 생성 데이터베이스 스키마 자동생성은 객체에 정의한 정보를 바탕으로 테이블을 만들어주는 기능이다. JPA가 DDL(Data Definition Language, 데이터 베이스의 스키마(테이블명, 열 이름 등)를 만들어주는 SQL문 집합)을 자동으로 생성해 준다. 특징 및 사용 애플리케이션 실행 시점에 객체에 지정한 정보를 바탕으로 DDL을 자동으로 생성한다. 데이터베이스 테이블 중심에서 객체 중심의 개발이 가능해진다. 데이터베이스 방언(SQL Dialect)에 맞는 적절한 DDL을 생성한다. 예를 들어 String 값은 일반적으로 varchar타입으로 분류되지만 Oracle 데이터베이스인 경우 varchar2로 해당 데이터베이스 언어에 맞게 생성이 된다. 편리하지만 실제 운영 서버에서 사용하기..
·Framework/JPA
JPA 사용에 있어 가장 중요한 일은 엔티티와 테이블을 정확히 매핑하는 것이다. 따라서 매핑 어노테이션을 숙지하고 있어야 한다. 대표 어노테이션 객체와 테이블 매핑 : @Entity, @Table 필드와 컬럼 매핑 : @Column 기본 키 매핑 : @Id 연관관계 매핑 : @ManyToOne, @JoinColumn 객체와 테이블 매핑 @Entity JPA를 사용해서 테이블과 매핑할 클래스는 @Entity를 붙여서 사용한다. @Entitiy가 붙은 클래스는 JPA가 관리하며, 엔티티라고 한다. 적용 시 주의사항 기본 생성자는 필수이다(파라미터가 없는 public 또는 protected 생성자). final 클래스, enum, interface, inner 클래스에는 사용할 수 없다. 저장할 필드에 fin..
·Framework/JPA
준영속은 영속 상태의 엔티티가 영속성 컨텍스트에서 분리된 것을 준영속 상태라고 한다. 따라서 준영속 상태의 엔티티는 영속성 컨텍스트가 제공하는 기능을 사용할 수 없다. 영속상태를 준영속 상태로 만드는 방법 영속상태를 준영속으로 만드는 방법은 3가지이다. em.detach(entity) : 특정 엔티티만 준영속 상태로 전환한다. em.clear() : 영속성 컨텍스트를 완전히 초기화한다. em.close() : 영속성 컨텍스트를 종료한다. 엔티티를 준영속 상태로 전환: detach() public void testDetached() { ... //회원 엔티티 생성, 비영속 상태 Member memberA = new Member(); memberA.setId("memberA"); //회원 엔티티 영속 상태 ..
·Framework/JPA
플러시(flush)는 영속성 컨텍스트의 변경내용을 데이터베이스에 반영하는 것을 말한다. 플러시가 발생하면 다음과 같은 일이 발생되게 된다. 변경 감지가 동작하여 영속성 컨텍스트에 있는 모든 엔티티의 스냅샷과 비교하여 수정된 엔티티를 찾는다. 수정된 엔티티는 수정 쿼리를 만들어 쓰기 지연 SQL 저장소에 등록한다. 쓰기 지연 SQL 저장소의 쿼리를 데이터베이스에 전송한다. (등록, 수정, 삭제 쿼리) 영속성 컨텍스트를 플러시 하는 방법 직접호출 엔티티 매니저의 flush() 메소드를 직접 호출해서 영속성 컨텍스트를 강제로 플러시한다. 테스트나 다른 프레임워크와 JPA를 함께 쓰는 경우를 제외하고 거의 사용되지 않는다. 트랜잭션 커밋 시 플러시 자동 호출 트랜잭션을 커밋하지 않으면 데이터베이스에 SQL이 전..
·Framework/JPA
2024.03.12 - [Framework/JPA] - [JPA] 영속성 컨텍스트 [JPA] 영속성 컨텍스트 JPA에서 가장 중요한 두 가지는 객체와 관계형 데이터베이스 매핑과 영속성 컨텍스트이다. 영속성 컨텍스트를 알면 JPA가 내부적으로 어떻게 동작하는지에 대한 이해를 할 수 있게 된다. 엔티티 jh7722.tistory.com 이전 포스팅에서는 영속성 컨텍스트의 기본 개념에 대해 알아봤다. 이번에 특징을 알아보자. 영속성 컨텍스트의 특징 영속성 컨텍스트의 특징은 다음과 같다. 영속성 컨텍스트와 식별자 값 영속성 컨텍스트는 엔티티를 식별자 값(@Id로 매핑된 값)으로 구분한다. 따라서 영속 상태는 식별자 값이 반드시 있어야 한다. 영속성 컨텍스트와 데이터베이스 저장 JPA는 보통 영속성 컨텍스트에 새..
·Framework/JPA
JPA에서 가장 중요한 두 가지는 객체와 관계형 데이터베이스 매핑과 영속성 컨텍스트이다. 영속성 컨텍스트를 알면 JPA가 내부적으로 어떻게 동작하는지에 대한 이해를 할 수 있게 된다. 엔티티 매니저 팩토리와 엔티티 매니저 영속성 컨텍스트를 알기 전에 먼저 엔티티 매니저팩토리와 엔티티 매니저를 알아야 할 필요가 있다. 엔티티 매니저 팩토리는 이름 그래도 엔티티 매니저를 만드는 공장이다. 공장을 하나 만드는데 시간적 소요가 크듯이 엔티티 매니저 팩토리도 생성 비용이 크다. 따라서 한 개만 만들어 애플리케이션 전체 공유한다. 반면에 엔티티 매니저를 생성하는 것은 비용이 크지 않다. (거의 들지 않는다고 표현) 주의할 점은 엔티티 매니저 팩토리는 여러 스레드 동시 접근해도 안전하므로 공유해도 상관없지만 (스레드..
·Framework/JPA
2024.03.11 - [Knowledge/개발지식] - [개발지식] 객체와 관계형 데이터베이스와의 차이 with JPA [개발지식] 객체와 관계형 데이터베이스와의 차이 with JPA 2023.11.10 - [Knowledge/개발지식] - [스진초 5기/개발지식] DDD 설계와 SQL 중심 설계 [스진초 5기/개발지식] DDD 설계와 SQL 중심 설계 오늘의 주제는 DDD 설계이다. DDD 설계는 워낙 요즘 많이 사용하고 팀프 jh7722.tistory.com 이전 포스팅에서 관계형 데이터베이스를 객체지향적으로 모델링식 발생할 수 있는 문제를 알아봤다. 자바진영에서 그러한 문제를 해결할 수 있는 ORM인 JPA에 대해 본격적으로 공부하기 전에 JPA가 무엇인지 알아보자. JPA 란 무엇일까? 1. J..
JH_DEV77
'분류 전체보기' 카테고리의 글 목록 (4 Page)