본문 바로가기
728x90

DataBase6

엔티티 매핑 JPA가 지원하는 매핑 어노테이션은 다음과 같이 4가지로 분류할 수 있다. 1. 객체와 테이블 매핑: @Entity, @Table 2. 기본 키 매핑: @Id 3. 필드와 컬럼 매핑: @Column 4. 연관관계 매핑: @ManyToOne, @JoinColumn @Entity JPA를 사용해 테이블과 클래스를 매핑할 때 사용한다. @Entity 속성은 다음과 같다. 속성 기능 기본값 name JPA에서 사용할 엔티티 이름을 지정한다. 보통은 디폴드값인 클래스 이름을 사용한다. 다른 패키지에 이름이 같은 엔티티 클래스가 있으면 이 속성으로 이름을 지정해 충돌을 피할 수 있다. 클래스 이름 @Entity를 적용하기 위해선 다음과 같은 점을 따라야 한다. 1. 기본 생성자가 존재해야 한다. 접근자는 publi.. 2022. 7. 26.
연관관계 매핑 기초 테이블들은 FK를 통해 관계를 맺고 객체는 참조를 통해 관계를 맺는다. 이 둘은 완전히 다른 특징을 가진다. 그때문에 ORM에서 가장 어려운 부분이 객체 연관 관계와 테이블 연관관계를 매핑하는 일이다. 용어 정리 객체 참조와 테이블 FK를 매핑하기 전에 용어 정리부터하자. 방향(direction): 양방향, 단방향이 존재한다. 단방향: 하나의 관계에서 한 쪽만 참조한다. x -> y 이거나 y -> x 이다. 양방향: 하나의 관계에서 양쪽이 모두 참조하고 있다. x -> y 임과 동시에 y -> x이다. 방향은 객체관계에만 존재하고 테이블 관계는 항상 양방향이다. 다중성(Multiplicity): N:1, 1:N, 1:1, N;M 연관관계의 주인(owner): 객체를 양방향 연관관계로 만들면 연관관계의 .. 2022. 7. 18.
영속성 컨텍스트 엔티티 매니저는 엔티티를 저장하고, 삭제하는 등 엔티티와 관련된 모 든 일을 처리한다. 개발자 입장에서 엔티티 매니저는 엔티티를 저장하는 가상의 DB이다. 엔티티 매니저 팩토리와 엔티티 매니저 DB를 하나만 사용하는 애플리케이션은 통상적으로 EntityManagerFactory를 하나만 생성한다. 엔티티 매니저 팩토리를 생성하는 비용은 상당히 크다. 그때문에 한 개만 만들어 애플리케이션 전체가 공유하게 설계되 있다. 반면, 엔티티 매니저를 생성하는 비용은 크지 않다. 엔티티 매니저 팩토리는 thread-safe 하므로 스레드 간에 공유가 가능하다. 엔티티 매니저는 멀티 스레드 환경에서 동시성 문제가 존재하므로 스레드 간의 공유가 안된다. 엔티티 매니저는 DB 연결이 꼭 필요한 시점까지 커넥션을 얻지 않는.. 2022. 7. 4.
트랜잭션(Transaction) 트랜잭션은 작업의 완전성을 보장해준다. 논리적인 작업 셋을 모두 완벽하게 처리하지 못했을 경우 원 상태로 복구해서 작업의 일부만 적용되는 현상이 발생하지 않게 만들어준다. MySql에서는 InnoDB 스토리지 엔진이 트랜잭션을 지원하며 MyISAM, MEMORY 스토리지 엔진은 트랜잭션을 지원하지 않는다. 트랜잭션은 반드시 여러 개의 변경 작업을 수행하는 쿼리가 조합돼야 하는 것은 아니다. 하나의 논리 적인 작업 셋에 하나 이상의 쿼리가 적용될 수 있다. 트랜잭션의 특징 원자성(Atomicity) 트랜잭션이 DB에 모두 반영이 되던가, 모두 되지 않아야 한다. 부분적으로 반영된다면 값을 예측할 수 없게 된다. 일관성(Consistency) 작업 처리 결과는 항상 일정해야 한다. 트랜잭션이 진행되는 동안 .. 2022. 5. 1.
728x90