
JPA는 ORM 기술 중 하나.ORM은 Object-relational-mapping(객체 관계 매핑)의 약자. 말그대로 객체를 이용하여 매핑하는 것.애플리케이션과 데이터베이스 사이에서 객체 지향 페러다임을 이용 데이터베이스를 다룰 수 있는 프레임워크.따라서, JPA는

저번 시간에 작성했던 코드에 대해 더 자세히 알아보자.persistence.xml 파일에 정의한 영속 단위 기준으로 초기화필요한 자원을 생성어플리케이션 처음 실행 시 한번만 실행팩토리 닫기사용한 자원 반환 후, 팩토리 닫아야함!UserUpdateMain에서 쿼리문이 언
우선, EntityManagerFactory를 자주 사용해서, 별도에 클래스로 작성해준다.persist()find()remove()merge()저번 시간에 배웠던 내용과 다르지 않다.find(Class entityClass, Object PrimaryKey)첫번째 파라

@Entity : 엔티티 클래스에 설정 (필수)@Table : 매핑할 테이블 지정@Id : 식별자 속성에 설정 (필수)@Column : 매핑할 칼럼명 지정 (지정안하면 필드명/프로퍼티명 사용)@Enumerated : enum 타입 매핑할 때 설정애노테이션을 생략하면 클

직접 할당 방식식별 칼럼 방식시퀀스 사용 방식테이블 사용 방식@Id 설정 대상에 직접 값을 설정저장하기 전에 생성자를 할당 (생성 시점에 전달)위 코드에서 hotel 엔티티를 생성하는 시점에 id를 식별자로 전달!쿼리문은 persist()가 아닌 commit() 시에

지금까지 테이블의 칼럼과 클래스의 속성을 1:1로 매핑했다.그러나, 실제 모델에선 여러 개의 속성을 모아서 하나의 값으로 표현한다.이처럼 여러 속성을 하나의 타입으로 지정할 때, @Embeddable 을 사용한다.엔티티가 아닌 타입을 한 개 이상의 필드와 매핑할 때 사

다른 테이블에 값을 저장해야 할 경우가 존재한다.writer의 id를 writer_intro와 writer_address 두 곳에서 사용하려고 한다.이때 @Embeddable를 이용한 intro와 address에서 필드를 매핑 (엔티티가 아니다.)@Embeddable이

role : 역할, role_perm : 해당 role의 권한perm을 하나의 Set으로 보관하는 모델을 만들고 싶다. 이때 role_perm을 콜렉션 테이블이라고 표현한다.단순 값을 매핑할 때에는 @ElementCollection과 @CollectionTable 사용

Set과 다르게 순서대로 저장됨.set과 다르게 @OrderColumn을 통해 리스트 인덱스 값을 저장할 칼럼을 지정하면 끝!text와 input을 choice로 해서 Embeddable 타입을 List로 받고 싶다.Set과 마찬가지로 List 타입을 Choice로 바

똑같이 Map에 name과 value를 저장하려고 한다.기존과의 차이점은 @MapKeyColumn 을 이용해 Key 값을 저장한 칼럼을 지정해준다.value와 enabled를 하나의 Embeddable 타입으로 만들어서, 이 PropValue를 List에 넣으려고 한다

위 @ElementColelction의 fetch를 EAGER로 주었지만, 실행하면 Lazy 처럼 role과 role-form이 따로 된다.permission을 처리하지 않기 위해 join fetch를 사용한다.그러면 role과 role_perm을 join해서 읽어 올

영속 엔티티/객체 : DB 데이터에 매핑된 메모리상의 객체영속 컨텍스트 :일종의 메모리 저장소EntityManager가 관리하는 엔티티 객체를 보관Map같은 형태로 저장 (엔티티타입, 식별자) = 엔티티 객체첫번째 find()한 객체와 두번째 find()한 객체는 같은

연관이란?엔티티가 다른 엔티티를 필드/프로퍼티로 참조하는 것위 코드처럼 MembershipCard에서 User 타입의 owner 객체를 사용하는 것이 그 예이다.본 강의에선 1-1, 1-N, N-1 세 종류의 연관만 다룬다.그 이유는 엔티티 간 연관을 잘 사용하지 않는

Member (1) : Car (N) 관계의 테이블이 있다고 가정하자.Member 의 자동차 목록을 가져오기 위해선 List< Car > cars 필드값이 필요하다.이를 Member -> Car 1-1 단방향 연관라고 한다.참조키(외래키) 방식식별자 공유 방식단방

관광명소인 sight와 리뷰인 여러개의 sight_review를 N-1 단방향 연관 매핑을 하려고 한다. 중요한 것은 N-1 단방향은 사용할 일이 거의 없다@ManyToOne 애노테이션과 @JoinColumn 애노테이션을 여러 개인 필드에 붙인다.JoinColumnSi

콜렉션 (Set, List, Map) 을 사용한 매핑에 대해서 배워보자.N-1은 Review(N) 객체에 Sight(1) 객체의 주소를 입력받아 Reivew(N) 객체를 Db와 연관매핑하는 방식1-N은 Team(1)에 Player(N)을 묶음으로 받아서 이를 DB와 연

아래 코드는 Player 객체를 새로 만들어서 Team을 저장하게 된다.이 경우, DB에 저장된 해당 Player가 없기 때문에 익셉션이 발생한다.이때 필요한 것이 영속성 전파이다.연관된 엔티티에 영속 상태를 전파하는 것예) 저장할 때 연관된 엔티티도 저장@OneToM
테이블에는 두가지 값 타입이 있다.엔티티 타입임베디드 타입엔티티 타입@Entity를 선언한 엔티티 객체는 EntityManager를 통해 관리 되기 위해 사용하는 값 타입(= 영속 컨텍스트에서 변경추척을 하기 위해 사용)임베디드 타입EntityManager에 의해 관리