ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Spring JPA(1) ORM, Hibernate(JPA), 영속성
    Spring 2020. 1. 22. 18:10

    ORM(Object Relational Mapping)

    객체형 데이터와 관계형 데이터베이스의 데이터를 자동으로 매핑해주는 것을 말한다.
    ( SQL을 따로 작성하지 않아도 매핑 설정만으로 데이터 베이스의 테이 블 데이터를 JAVA 객체로 전달받을 수 있다. )

      → ORM은 DBMS에 종속적이지 않음

      개발 로직 코드에 집중가능

    Hibernate

    ORM 프레임워크

      → DB가 변경되어도 SQL를 수정할 필요가 없음

     

    JPA(Java Persistent API)

    Hibernate, OpenJPA, TopLink, TopLink Essentials 등 ORM 구현체의 표준 인터페이스

    JavaSE, JavaEE를 위한 영속성 관리, ORM을 위한 표준 기술

      → DB변동이 생겨도 Entity만 변경해주면 됨

      → 자동으로 쿼리를 생산해서 처리해줌

      → 간편한 CRUD(Create, Read, Update, Delete)

     

    참고 블로그 https://dotheright.tistory.com/257

     

    영속성

    영속

      → 엔티티매니저를 통해서 엔티티를 영속성 컨테스트에 저장했다.

      → 영속성 컨텍스트가 관리하는 엔티티를 를 영속상태 라고 한다.

      → ORM을 사용해서 조회한 엔티티들은 영속성 컨텍스트가 관리하는 영속상태 이다.

    비영속

      순수한 객체 (아직 영속성 컨텍스트와 연관없는 상태) 이며 아직 저장하지 않았다.

      → 영속성 컨텍스트나 데이터베이스와는 관련이 없는 상태

    준영속

      → 영속성 컨텍스트가 관리하던 영속 상태의 엔티티를 영속성 컨텍스트가 관리하지 않으면 준영속 상태가 된다.

      → 세션(엔티티 매니저) 종료, 세션(엔티티 매니저) 초기화로 준영속 상태로 만들 수 있다.

    영속성 컨텍스트

    영속성 컨텍스트는 엔티티를 PK(식별자 값)로 구분한다. (@Id)

      → 영속상태의 엔티티는 반드시 PK(식별자 값)이 존재해야 한다. 없을경우 JPA가 예외를 발생시킨다.

    영속성 컨텍스트와 데이터베이스 저장

      → JPA는 보통 트랜잭션을 커밋하는 순간 영속성 컨텍스트에 새로 저장된 엔티티를 데이터베이스에 반영한다.(이 과정을 flush 라고함)

      → flush는 영속성 컨텍스트의 변경 내용을 데이터베이스에 동기화하는 작업인데 이때 등록, 수정, 삭제등 변경된 엔티티를

          데이터베이스에 반경한다. (flush는 영속성 컨텍스트에 보관된 엔티티를 변경이 아니라 동기화 하는것 이다.)

     

    참고 블로그  https://wckhg89.tistory.com/10

     

     

    'Spring' 카테고리의 다른 글

    Spring Boot HikariCP  (0) 2020.02.04
    Spring JPA(4) 연관관계 매핑  (0) 2020.01.30
    Spring JPA(3) CRUD 기본 예제  (0) 2020.01.30
    Spring JPA(2) - 엔티티 매핑  (0) 2020.01.29
    Spring Boot DB 오류해결  (0) 2020.01.20

    댓글

Designed by Tistory.