본문 바로가기

Spring/jpa

[spring data jpa] - ORM

도메인 모델을 사용하는 코드를 Object 라 한다.

 

jdbc 사용과의 비교

 

객체를 자동으로 sql 데이터베이스의 테이블에 영속화를 시켜주는 것

도메인 모델 기반으로 코딩 할 수 있다.

 

  • 훨씬 객체지향 프로그래밍을 하기 수월해진다.
  • 여러 디자인 패턴들을 사용가능해지고
  • 코드 재사용성도 좋고
  • 비즈니스 로직에 집중하기 좋다.

테스트 코드 짜기도 좋다

 

 

ORM은?

클래스와 sql DB 테이블 사이의 맵핑 정보를 기술한 메타데이터를

사용해 자바 어플리케이션의 객체를 테이블에 자동으로 영속화 시켜주는 기술이다.

 

 

ORM 사용의 장점은?

 

생산성 - 하이버네이트에서 사용을 하면 정말 쉽게 정의만하면 데이터를 가져오기 너무 편해진다.

로직만 보이게 되면서 테스트 코드도 짜기 쉬워진다.

 

성능 - sql 단건만 보면 sql 보다 느릴수있다.

하지만, 이건 C 가 자바보다 빠르다 와 비슷한 맥락이다.

하이버네이트에서 성능 최적화 방법 여러개를 제공해주고 

기본적으로 하이버네이트는 객체와 이 테이블 데이터 사이의 캐시가 존재한다.

 

그래서 불필요한 쿼리를 아예 날리지 않는다.

 

예를들어 한 트랜잭션 안에서 , 데이터를 변경하다가, 저장을 하려고 하는데

변경을 3번 했다고 가정해보자

jdbc 에서는 update 가 3번 발생해서 쿼리를 3번 날리게 되는데

 

만약 데이터가 계속 같은 값으로 update 를 날렸으면 3번 날리지 않고 

마지막에만 1번 날리게 된다.

객체와 데이터베이스 사이의 캐시가 있기 때문

 

 

벤더 독립성 - 벤더마다 sql 이 달라서 sql 을 다르게 작성해야했지만,

하이버네이트에서는 db 만 어떤 db인지 설정하면 sql을 바꾸지 않아도 된다.

소스 코드가 바뀌지 않는다.