6. 다양한 연관관계매핑

다대일 단방향 [N:1]

  • 가장 많이 사용되는 연관관계
  • 1
  • 회원은 Member.team 팀 엔티티 참조가 가능하지만 팀은 회원을 참조하는 필드가 없음. 따라서 단방향 연관관계
  • ```java // 회원 엔티티 @Entity public class Member { @Id @GeneratedValue @Column(name = “MEMBER_ID”) private Long id;

Continue reading

4. 엔티티 매핑

JPA에서 지원하는 매핑 어노테이션은 다음과 같이 크게 4가지로 분류할 수 있음

  • 객체와 테이블 매핑 : @Entity, @Table
  • 기본 키 매핑 : @Id
  • 필드와 컬럼 매핑 : @Column
  • 연관관계 매핑 : @ManyToOne, @JoinColumn

Continue reading

3. 영속성 관리

1. 엔티티 매니저 팩토리와 엔티티 매니저

  • 1
  • 엔티티 매니저 팩토리
    • persistence.xml로부터 데이터베이스 정보를 읽어와 엔티티 매니저 팩토리가 생성됨
    • 비용이 많이 들지만 여러 스레드가 동시에 접근해도 안전하기 때문에 한번만 생성하고 공유해서 사용해야 함
    • 하이버네이트를 포함한 대부분의 구현체가 엔티티 매니저 팩토리가 생성될 때 DB의 커넥션 풀도 같이 생성해줌
  • 엔티티 매니저
    • 테이블 접근이 필요할 때마다 엔티티 매니저를 생성해서 테이블에 접근, 비용이 거의 들지 않음
    • 동시성 문제가 있어 스레드 간에 공유하면 안됨
    • 데이터베이스 연결이 필요한 시점에 커넥션을 획득함(EntityManager2)
    • 연결이 필요한 시점? -> 트랜잭션을 시작할 때

Continue reading

1. JPA 소개

1. SQL을 직접 다룰 때 발생하는 문제점

  • 반복 작업
    • CRUD 각각의 기능에 해당하는 SQL문을 작성, 반복
    • 객체를 관계형 DB에 저장하기 위해 CRUD를 구현하려면 너무 많은 SQL과 JDBC API를 코드로 작성해야 함(반복)
  • SQL 의존적인 개발
    • 기존 구현 내용에 추가적인 요구사항을 반영할 경우 CRUD 모든 SQL문을 업데이트 해야 함
    • DAO(Data Access Object)의 계층 분할의 어려움
      • 아래 코드처럼 DAO의 메소드가 어떤 쿼리를 날리는지 일일이 확인해보면서 개발을 해야 함(의존)
      •   public class MemberDAO{
              public Member find(String memberID){
                  // SELECT MEMBER_ID, TEL FROM MEMBER M 
              }
              public Member findWithTeam(String memberID){
                  // SELECT MEMBER_ID, TEL, TEAM FROM MEMBER
              }
          }
        
    • 정리하면?
      • 진정한 의미의 계층 분할이 어려움 (애플리케이션과 DB의 계층 분할)
      • 엔티티를 신뢰할 수 없음 (DAO의 SQL을 하나 하나 열어봐야 하는 문제)
      • SQL에 의존적인 개발을 피하기 어려움

Continue reading

3. Process

프로세스의 개념

  • 실행중인 프로그램
  • 프로세스의 문맥(context)
    • CPU 수행 상태를 나타내는 하드웨어 문맥
      • Program counter
      • registers
    • 프로세스의 주소 공간
      • code, data, stack
    • 프로세스 관련 커널 자료 구조
      • PCB(Process Control Block) - 커널 주소공간(data)에 있음
      • Kernel stack - 프로세스별 kernel stack

Continue reading

Pagination


© 2020.02. by blupine