ORM?

klmjiho·2020년 10월 3일
1

개발

목록 보기
1/2

영속성 (Persistence)

데이터를 생성한 프로그램이 종료되더라도 사라지지않는 데이터의 특성

영속성을 갖지 않으면 데이터는 메모리에서만 존재하게 되고 프로그램이 종료되면 해당 데이터는 모두 사라지게 된다.

그래서 우리는 데이터를 파일이나 DB에 영구 저장함으로써 데이터에 영속성을 부여한다.

우리가 어떤 서비스를 만든다고 하면 관련된 정보들을 객체에 담아 보관하게된다.
즉, 테이블 객체가 가지고 있던 정보를 입력하고 이 테이블들을 SQL질의어를 통해 관계 설정을 해주게 된다.


여기서 문제는 테이블과 객체간의 이질성이 발생하게 된다는 것

ORM (Object Relational Mapping)

객체와 관계형 데이터베이스의 데이터를 자동으로 매핑(연결)해주는 것

SQL문 작성없이 간단한 매핑설정으로 데이터베이스의 테이블 데이터를 java 객체로 전달받을 수 있다.

JPA(Java Persistence API)

자바 ORM 기술에 대한 API표준 명세

JPA는 단순히 명세이기 때문에 구현이 없다.
JPA는 ORM을 사용하기 위한 인터페이스를 모아둔 것이며 JPA를 사용하기 위해서는 JPA를 구현한(ex. Hibernate)를 구현한 ORM프레임워크를 이용해야한다.

Hibernate

JPA라는 명세의 구현체

즉, 인터페이스를 직접 구현한 라이브러리이다.
JPA와 Hibernate는 마치 자바의 interface - class와 같은 관계이다.

Spring Data JPA

Spring에서 제공하는 모듈 중 하나로, 개발자가 JPA를 더 쉽고 편하게 사용할 수 있도록 도와준다.

Spring Data JPA를 사용하여 개발하면 EntityManager를 직접 다뤄서 개발하지 않는다. 이는 Spring Data JPA에서 JPA를 추상화시킨 Repository 인터페이스를 제공하기때문이다.

사용자가 Repository 인터페이스에 정해진 규칙대로 메소드를 입력하면, Spring이 알아서 해당 메소드 이름에 적합한 쿼리를 날리는 구현체를 만들어서 Bean으로 등록해준다.

0개의 댓글