본문 바로가기

개발

하이버네이트 영속화, 왜 하이버네이트를 사용하는지, 패러다임 불일치

1.하이버네이트를 사용하기 위해 알아야 하는 개념.

 

 영속화 : 애플리케이션 개발의 기본 개념중 하나 .

              영속화를 통해 자신이 만들어낸 프로세스 밖에서도 존재 가능하다.
              자바에서 영속화를 이야기 할때는 일반적으로 SQL을 이용해서 
           관계형 데이터베이스에 데이터를 저장하는 것을 가르킨다. 


하이버네이트를 효율적으로 사용하려면 관계형 모델과 SQL을 알아야한다.

----------------------------------------------------------------------------------------

2. ORM의 필요성.

  • 패러다임 불일치
SQL과 자바는 패러다임 불일치를 발생 시킨다. 

SQL은 결과 데이터를 표로 가져오고 (Relation)

반면 자바는 상호 연관관계있는 객체망을 가지고 있다. (Object)


SQL과 JAVA는 세밀함 불일치, 연관관계 문제, 데이터 탐색문제(Java는 객체망을 통한 순회, sql은 db에 요청수를 최소화해서 요청.) 때문에 ORM이 필요하다. 

  • ORM 정의
ORM은 Object Relation Mapping 이라는 말이 딱 들어 맞는다.

Java의 Object와 SQL의 Relation을 Mapping 시켜주는 것이다. 

어려운말로는 객체와 디비 사이의 매핑을 정의한 메타데이터를 이용하여 자바 에플리케이션 내의 객체를 관계형 db 테이블로 자동으로 영속화하는것이다. 

  • ORM 종류
ORM의 종류로는 순수관계형, 가벼운 객체매핑, 중간 정도의 객체 매핑, 완전한 객체 매핑이 있다. 


하이버네이트는 완전한 객체 매핑에 포함된다. 

완전한 객체 매핑은 컴포지션이나 상속 다형성 접근성을 따른 영속화를 지원한다. 효율적인 패치 전략과 캐싱 전략이 애플리케이션에 투명하게 구현돼있다.


    • ORM 이점
보통 orm의 이점은 성자신 sql로 부터 개발자를 보호 해주고 sql이나 db를 잘 이해하지 않아도 된다고 생각할수 있지만 orm을 이해하려면 db를 잘 이해해야하고 해당문장이 야기할 수잇는 문제와 잠재적인 성능을 이해할 수 있어야한다.
- 생산성, 유지보수성(Loc :line of code)가 줄어듬



자바 애플리케이션에서 SQL데이터베이스를 사용할 떄 자바 코드에서는 JDBC API를 통해 SQL 문을 실행한다. 

SQL을 직접 작성해서 jdbc api를 사용해 미리 작성해둔 쿼리의 매개변수로 매핑하고 쿼리를 실행하고 결과를 받아 데이터를 가져온다. 이것은 저수준 데이터 접근 작업니다.


  • 왜, 그리고 언제 하이버네이트를 사용해야 하는가
비지니스 로직은 db에 프로시저로 실행되지 않고 어플리케이션 단에 구현되어 있으면 객체지향의 개념을 사용할수 있음.(다형적, 전략, 중재자, 복합체 패턴들)

 

간단한 비지니스 로직이라면 굳이 안써도 된다. 

복잡한 비지니스 로직이라면 도메인 모델을 사용하는것이 코드의 재사용성과 유지보수를 향상 시켜준다.