프로그래밍/JAVA

하이버네이트를 사용하지 않는 경우

빨강토끼 2017. 10. 11. 08:46

학습비용이 높은 편이라 팀에 하이버네이트 전문가가 없다면, 초기 도입비용이 높을수 있다.

  • 쿼리 힌트나 DB에 종속적인 쿼리에 대한 의존도가 높은 경우
  • 네이티브 쿼리(하이버네이트가 생성해주는 쿼리가 아니라 데이터베이스 벤더에 종속적으로 작성한 SQL을 사용하는) 비율이 높은 경우
  • 애플리케이션 개발이 객체지향적이지 않은 경우

Write Behind, Dirty Checking, Lazy Fetching 등의 장점을 살리기 어렵다.

참고로.

Write behind

Write-behind caching. 하이버네이트의 Session에서 기본으로 제공해주는 기능으로서, 정말로 쿼리를 실행해야 하는 순간까지 최대한 쓰기 작업을 미루는 기능.

Dirty Checking

하이버네이트를 사용해서 읽어온 객체는 항상 그 상패의 변화를 주시하고 있다. 그러다가 만약 트랜잭션이 커밋되면 , 하이버네이트가 알아서 테이터베이스에 해당 객체의 상태 변화를 적용시킨다.

Lazy Fetching

객체를 조회시 실제로는 비어있는 가짜객체(Proxy 객체)를 만들어 가짜객체의 데이터에 접근하면 하이버네이트가 그제서야 해당 객체를 채우는데 필요한 데이터를 가져다 준다.