검수요청.png검수요청.png

하이버네이트

해시넷
이동: 둘러보기, 검색
하이버네이트(Hibernate) 로고
하이버네이트(Hibernate) 로고와 글자

하이버네이트(Hibernate)는 객체 지향 언어인 자바(Java)의 클래스 파일을 관계형 데이터베이스의 테이블매핑해 주는 오픈소스 기반의 프레임워크이다. 2001년 개빈 킹(Gavin King)이 개발했다. 아이바티스(iBatis)의 경우 사용자가 DB에서 에스큐엘(SQL) 문장을 생성하면 그에 적합한 객체모델을 생성해 주는데 반해, 하이버네이트는 사용자가 객체모델을 생성하면 DB와 연결시켜 주는 방식으로 작동한다. GNU LGPL 라이선스를 따른다.

연혁[편집]

  • 2001년 : EJB2 스타일 엔터티 빈을 사용하는 것에 대한으로 Cirrus Technologies의 동료들과 Gavin King에 의해 시작
  • 2003년 초 : Hibernate 개발 팀은 Hibernate2 릴리스 시작, 첫 번째 출시에 비해 많은 개선 제공
  • 2004년 02월 05일 : Hibernate 2.1.2 출시, 유지 보수[1]
  • 2004년 12월 20일 : Hibernate 버전 3.0 베타 출시[2]
  • 2005년 02월 28일 : Hibernate 버전 3.0 출시, 기능에선 새로운 인터셉터/콜백 아키텍처, 사용자 정의 필터 및 JDK 5.0 주석이 포함됨[3]
  • 2009년 08월 21일 : Hibernate 버전 3.5 베타 -1 출시, JPA2 지원하기 위한 첫 번째 출시[4]
  • 2009년 11월 12일 : Hibernate 버전 3.5 베타 -2 출시, JPA2 지원하기 위한 두 번째 출시[5]
  • 2010년 04월 01일 : Hibernate 버전 3.5 최종 출시, JSR 317(JPA2)지원[6]
  • 2010년 10월 14일 : Hibernate 버전 3.6 최종 출시, JDK 1.4에 대한 지원 중단[7]
  • 2011년 06월 09일 : Hibernate 버전 3.6.5 최종 출시, 유지 보수[8]
  • 2011년 12월 15일 : Hibernate 버전 4.0 출시, i18n 지원 및 메시지 코드로 개선 된 로깅[9]
  • 2015년 08월 20일 : Hibernate ORM 5.0 최종 출시, 공간 / GIS 지원 및 자바 8 지원[10]
  • 2018년 01월 10일 : Hibernate ORM 5.3 베타1 출시[11]
  • 2018년 05월 14일 : Hibernate ORM 5.3 최종 출시, PA 2.2에 대한 지원 구현[12]
  • 2018년 12월 12일 : Hibernate ORM 5.4 최종 출시, 버그 수정 및 설명서 개선[13]
  • 2019년 07월 30일 : Hibernate ORM 5.4.4 최종 출시, 유지 보수[14]

특징[편집]

지속성[편집]

하이버네이트는 POJO(Plain Old Java Objects)에 대한 투명한 지속성을 제공해준다. 영속 클래스에 대한 엄격한 요구 사항은 인수가 없는 생성자이지만 반드시 그런 것은 아니다. 일부 응용 프로그램에서 올바른 동작을 수행하려면 객체 클래스의 equals() 및 hashCode() 메소드에 특별한 주의가 필요하다. 하이버네이트는 식별자 속성을 제공할 것을 권장하며, 이는 향후 출시에서 필수 요구 사항이 될 계획이다.[15]

데이터 객체의 컬렉션은 일반적으로 Set 및 List 인터페이스의 구현과 같은 Java 컬렉션 클래스에 저장된다. Java 5에 도입된 Java generics도 지원되며, 최대 하이버네이트는 관련 컬렉션을 지연로드 하도록 구성 할 수 있다.[15]

통합[편집]

하이버네이트는 독립형 Java 애플리케이션과 서블릿, EJB 세션 Bean 및 JBI 서비스 컴포넌트를 사용하는 Java EE 애플리케이션 모두에서 사용할 수 있다. 다른 프로그래밍 언어의 기능으로 포함시킬 수도 있다. 예를 들어, Adobe는 CFML에 추가된 새로운 기능과 구문의 추상화 계층과 함께 하이버네이트를 ColdFusion(J2EE 앱에서 실행되는) 버전 9에 통합했다.[15]

매핑[편집]

Java 클래스를 데이터베이스 테이블에 맵핑하는 것은 XML 파일 구성 또는 Java 어노테이션을 사용하여 구현된다. XML 파일을 사용할 때 하이버네이트는 퍼시스턴스 클래스를 위한 스켈레톤 소스 코드를 생성할 수 있다. 주석이 사용될 때 보조이다. 하이버네이트는 XML 파일이나 자바 주석을 사용하여 데이터베이스 스키마를 유지할 수 있다.가기.png 매핑에 대해 자세히 보기

필요성[편집]

객체 관계 매핑을 위해 전통적으로 사용되어 오던 Entity beans는 이해하기 어려우며 유지관리가 어렵다. 하이버네이트는 특정 클래스에 매핑되어야 하는 데이터베이스의 테이블에 대한 관계 정의가 되어 있는 XML 파일의 메타데이터로 객체관계 매핑을 간단하게 수행시킨다. 다른 persistence 프레임워크는 객체관계의 매핑을 위해 애플리케이션 클래스를 수정해야할지도 모르지만 하이버네이트에서는 그렇게 할 필요가 없다.

하이버 네이트를 사용하면 데이터베이스가 변경되더라도 SQL스크립트를 변경하는 등의 작업을 피할 수 있다. 애플리케이션에서 사용되는 데이터베이스를 변경시키고자 한다면 설정파일의 dialect 프로퍼티를 수정함으로서 쉽게 처리할 수 있다. 하이버네이트는 기존의 상업용 ORM 프레임워크로부터는 제공되지 못했던 SQL 모든 기능을 완벽하게 지원한다. 하이버네이트는 MySQL, Oracle, Sybase, Derby, PostgreSQL를 포함한 많은 데이터베이스를 지원하며 POJO기반의 모델과도 원활하게 동작한다.[16]

소프트웨어 구성 요소[편집]

  • 하이버네이트 ORM : Java 환경을 위한 객체 관계 매핑 솔루션의 기본 소프트웨어
  • 하이버네이트 주석 : JSR 317 Java Persistence API(JPA2)에 따라 객체 지향 모델과 관계형 데이터베이스 모델 간의 데이터 변환을 제어하는 메타데이터
  • 하이버네이트 EntityManager : JSR 317 Java Persistence API(JPA 2) 지속성 솔루션을 구현하는 래퍼인 하이버네이트 주석
  • 하이버네이트 Envers : 영구 클래스의 감사 및 버전
  • 하이버네이트 OGM : NoSQL 스토어에 데이터를 저장하기 위한 확장
  • 하이버네이트 Shards : 여러 관계형 데이터베이스를 위한 수평 분할
  • 하이버네이트 검색 : Apache Lucence의 전체 텍스트 라이브러리 기능을 하이버네이트 및 JPA 모델에 통합
  • 하이버네이트 도구 : JBoss Developer Studio에 포함 된 이클립스 플러그인Ant 태스크 스위트로 구현된 도구 세트
  • 하이버네이트 Vaildator : JSR 303 Bean Validation의 참조 구현
  • 하이버네이트 Metamodel Generator : JSR 269 Pluggable Annotation Processing API를 사용하여 JSR 317 JPA 2(Java Persistence API) 정적 메타 모델 클래스를 작성하는 주석 프로세서
  • N하이버네이트 : NET Framework를 위한 객체 관계형 매핑 솔루션

객체 관계 매핑[편집]

객체 관계 매핑(Object-relational mapping, ORM)은 데이터베이스와 객체 지향 프로그래밍 언어 간의 호한되지 않는 데이터를 변환하는 프로그래밍 기법이다. 객체 지향 언어에서 사용할 수 있는 "가상" 객체 데이터베이스를 구축하는 방법이다. 객체 관계 매핑을 가능하게 하는 사용 또는 뮤료 소프트웨어 패키지들이 있고, 경우에 따라서는 독자적으로 개발하기도 한다.

각주[편집]

  1. Hibernate 2.1.2〉, 《하이버네이트 공식 사이트》, 2004-02-05
  2. Gavin King, 〈Hibernate 3.0 goes beta〉, 《하이버네이트 공식 사이트》, 2004-12-20
  3. Gavin King, 〈Hibernate 3.0 released!〉, 《하이버네이트 공식 사이트》, 2005-02-28
  4. Steve Ebersole, 〈Hibernate 3.5.0 Beta-1 released〉, 《하이버네이트 공식 사이트》, 2009-08-21
  5. Steve Ebersole, 〈Hibernate 3.5.0-Beta-2 release〉, 《하이버네이트 공식 사이트》, 2009-11-12
  6. Steve Ebersole, 〈Hibernate 3.5.0-Final release〉, 《하이버네이트 공식 사이트》, 2010-04-01
  7. Steve Ebersole, 〈Hibernate Core 3.6.0.Final Release〉, 《하이버네이트 공식 사이트》, 2010-10-14
  8. Steve Ebersole, 〈Hibernate Core 3.6.5.Final〉, 《하이버네이트 공식 사이트》, 2011-06-09
  9. Steve Ebersole, 〈Hibernate Core 4.0 is Final〉, 《하이버네이트 공식 사이트》, 2011-12-15
  10. Steve Ebersole, 〈Hibernate ORM 5.0 has gone Final!〉, 《하이버네이트 공식 사이트》, 2015-08-20
  11. Steve Ebersole, 〈Hibernate ORM 5.3.0Beta1 release〉, 《하이버네이트 공식 사이트》, 2018-01-10
  12. Steve Ebersole, 〈Hibernate ORM 5.3.0.Final release〉, 《하이버네이트 공식 사이트》, 2018-05-14
  13. Guillaume Smet, 〈Hibernate ORM 5.4.0.Final released〉, 《하이버네이트 공식 사이트》, 2018-12-12
  14. Andrea Boriero, 〈Hibernate ORM 5.4.4.Final released〉, 《하이버네이트 공식 사이트》, 2019-07-30
  15. 15.0 15.1 15.2 Hibernate (framework)〉, 《위키백과》
  16. HUMBROLLOG, 〈#4 iBATIS, Hibernate, 그리고 JPA: 무엇을 선택할 것인가?〉, 2010-01-02

참고자료[편집]

같이 보기[편집]


  검수요청.png검수요청.png 이 하이버네이트 문서는 솔루션에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.