Spring

Spring JPA(1) ORM, Hibernate(JPA), 영속성

JeonInwoo 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