TIL.61

hyunki__ss·2022년 9월 16일
0
post-thumbnail

2022년 9월 16일 금요일

@ 프로젝트가 시작 되었음에도, 전투적인 마음가짐을
가지지 못한 부분에 반성을 느끼는 하루의 시작이다,
의욕이 우선 필요하기에, 나의 내면의 좋은 장점을
하루 빨리 끌어올려서 몰입할 수 있도록 해보자.

[수업 순서]

  • 기타사항
  • JPA

[JDBC API를 이용해 직접 SQL을 다룰 때 발생하는 문제점]
1. 데이터 변환, SQL 작성, JDBC API 코드 등을 반복적으로
일일히 다 작성해야 한다.
2. SQL에 의존적인 개발을 하게 된다.
3. 패러다임 불일치 문제(상속, 연관관계, 객체 그래프 탐색)
4. 동일성 보장

[JPA(Java Persistence API)]

  • 자바 어플리케이션에서 관계형 데이터 베이스를
    사용하는 방식을 정의한 인터페이스

[엔터티 매니저]

  • 엔터티를 저장하는 메모리상의 데이터베이스라고
    생각하면 된다, 엔터티를 저장하고 수정하고 삭제하고
    조회하는 등의 엔터티와 관련된 모든 일을 한다.
    엔터티 매니저는 스레드세이프 하지 않기 때문에
    동시성 문제가 발생할 수 있기 때문에 스레드간
    공유를 하면 안된다. web의 경우 일반적으로는
    request scope와 일치 시킨다.

[엔터티 매니저 팩토리]

  • 엔터티 매니저를 생성할 수 있는 기능을 제공하는
    팩토리 클래스이다. 스레드세이프이기 때문에
    여러 스레드가 동시에 접근해도 안전하기 때문에
    서로 다른 스레드간 공유해서 재사용한다.
    하지만 스레드 세이프 한 기능을 요청 스코프마다
    생성하기에는 비용(시간, 메모리) 부담이 크기 때문에
    application 스코프와 동일한 싱글톤으로 생성해서
    관리하게 된다, 따라서 데이터베이스를 사용하는 애플리케이션 당 한 개의 EntityManagerFactory를 생성한다.

[영속성 컨텍스트]

  • 영속성 컨텍스트는 엔터티를 영구 저장하는 환경을 말한다.
    엔터티 매니저에 엔터티를 저장하거나 조회하면
    엔터티 매니저는 영속성 컨텍스트에 엔터티를 보관하고
    관리한다, 영속성 컨텍스트는 엔터티 매니저를 생성할 때
    하나 만들어진다, 그리고 엔터티 매니저를 통해서
    영속성 컨텍스트에 접근할 수 있고, 영속성 컨텍스트를
    관리할 수 있다.

[엔티티의 생명주기]
1. 비영속(new) : 영속성 컨텍스트와 전혀 관계가 없는 상태
2. 영속(managed) : 영속성 컨텍스트에 저장된 상태
3. 준영속(detached) : 영속성 컨텍스트에 저장 되었다가
분리된 상태 (merge가 가능한 상태)
4. 삭제 (removed) : 삭제된 상태

※ 조금씩 감을 잡아가고는 있다, 프로젝트도 차근차근
진도를 밟아가고 있기 때문에, 앞으로 지치지말고
추진력을 받아서 나아가는 것이 중요하다, 주말 잘 활용하자!

profile
야구선수 출신 개발자

0개의 댓글