동면(프레임)
Hibernate (framework)![]() | |
개발자 | 레드햇 |
---|---|
최초출시 | 2001년 5월 23일; | 전 (
안정적인 방출 | 6.1.4.최종/2022년10월5일[1] |
저장소 | |
작성자 | 자바 |
운영체제 | 크로스 플랫폼(JVM) |
플랫폼 | 자바 가상 머신 |
유형 | 객체-관계 매핑 |
면허증. | GNU Lesser General Public License |
웹사이트 | hibernate |
하이버네이트 ORM()은 자바 프로그래밍 언어를 위한 객체-관계 매핑[2]: §1.2.2, [12] 도구입니다. 객체 지향 도메인 모델을 관계형 데이터베이스에 매핑하는 프레임워크를 제공합니다. 하이버네이트는 직접적이고 지속적인 데이터베이스 액세스를 높은 수준의 객체 처리 기능으로 대체하여 객체-관계 임피던스 불일치 문제를 처리합니다.
하이버네이트(Hibernate)는 GNU 소규모 일반 공중 사용 허가서 2.1로 배포되는 자유 소프트웨어입니다.
최대 절전 모드의 주요 기능은 Java 클래스에서 데이터베이스 테이블로 매핑하고 Java 데이터 유형에서 SQL 데이터 유형으로 매핑하는 것입니다. 최대 절전 모드는 데이터 조회 및 검색 기능도 제공합니다. SQL 호출을 생성하고 결과 집합의 수동 처리 및 개체 변환에서 개발자를 완화합니다.
맵핑
Java 클래스를 데이터베이스 테이블에 매핑하는 방법은 XML 파일의 구성 또는 Java Annotations를 사용하여 구현됩니다. XML 파일을 사용할 때, 하이버네이트는 지속성 클래스에 대한 스켈레톤 소스 코드를 생성할 수 있습니다. 주석을 사용할 때 보조적으로 사용됩니다. 최대 절전 모드는 XML 파일 또는 Java 주석을 사용하여 데이터베이스 스키마를 유지 관리할 수 있습니다.
계층 간 일대일, 다대다 관계를 정리할 수 있는 시설이 마련되어 있습니다.[2]: 140–171 하이버네이트는 객체 간의 연관성을 관리할 뿐만 아니라 객체가 클래스 유형의 다른 인스턴스와 일대다 관계를 갖는 반사적 연관성도 관리할 수 있습니다.
최대 절전 모드는 사용자 지정 값 유형의 매핑을 지원합니다. 이를 통해 다음과 같은 시나리오가 가능합니다.
정의: 개체 지향 응용 프로그램의 개체는 OOP 원칙을 따르는 반면 백엔드의 개체는 데이터베이스 정규화 원칙을 따르므로 표현 요구 사항이 다릅니다. 이 문제를 "객체-관계 임피던스 불일치"라고 합니다. 매핑은 개체-관계 임피던스 불일치 문제를 해결하는 방법입니다.
매핑은 어떤 데이터베이스 테이블에 저장할 Java 클래스 개체를 ORM 도구에 알려줍니다.
최대 절전 모드 쿼리 언어(HQL)
하이버네이트는 하이버네이트의 데이터 개체에 대해 SQL과 유사한 쿼리를 작성하기 위한 HQL(Hibernate Query Language)이라는 SQL에서 영감을 받은 언어를 제공합니다. 기준 쿼리는 HQL의 객체 지향 대안으로 제공됩니다. Criteria Query는 개체를 수정하고 개체에 대한 제한을 제공하는 데 사용됩니다.[2]: 347-349 HQL(Hibernate Query Language)은 SQL의 객체 지향 버전입니다. 데이터베이스별 쿼리를 작성할 필요가 없도록 데이터베이스 독립 쿼리를 생성합니다. 이 기능이 없으면 데이터베이스를 변경하려면 개별 SQL 쿼리도 변경해야 하므로 유지 관리 문제가 발생합니다.
고집
최대 절전 모드는 POJ(Plain Old Java Objects)에 대한 투명한 지속성을 제공합니다.[2]: 37–38 영속적인 클래스에 대한 유일한 엄격한 요구 사항은 반드시 그런 [2]: 39 것은 아니지만 논항 생성기입니다. 일부 응용 프로그램에서 적절한 동작을 수행하려면 또한 특별한 주의가 필요합니다. equals(Object obj)
그리고. hashCode()
의 방법 Object
수업 [3]시간 하이버네이트는 식별자 특성을 제공하는 것을 권장하며, 이는 향후 릴리스에서 필수 요구 사항으로 계획되어 있습니다.[4]
데이터 개체의 컬렉션은 일반적으로 다음의 구현과 같은 Java 컬렉션 클래스에 저장됩니다. Set
그리고. List
인터페이스 자바 5에 도입된 자바 제네릭도 지원됩니다. 최대 절전 모드는 관련 컬렉션을 게으르게 로드하도록 구성할 수 있습니다.[2]: 289–293 Lazy loading은 Hibernate 3의 기본값입니다.
관련 개체는 한 개체에서 다른 개체로 캐스케이드 작업을 구성할 수 있습니다. 예를 들어 부모는 Album
클래스 개체를 캐스케이드하도록 구성할 수 있습니다. save
그리고. delete
자식에 대한 수술. Track
클래스 오브제
통합
최대 절전 모드는 독립 실행형 Java 애플리케이션과 서블릿, EJB 세션 빈 및 JBI 서비스 구성 요소를 사용하는 Java EE 애플리케이션에서 모두 사용할 수 있습니다. 다른 프로그래밍 언어에서도 기능으로 포함할 수 있습니다. 예를 들어 Adobe는 새로운 기능과 구문의 추상화 계층이 CFML에 추가된 ColdFusion 버전 9에 Hibernate를 통합했습니다.
개체 및 구성요소
하이버네이트 전문 용어에서 엔티티는 하이버네이트의 영구 메커니즘에서 독립적으로 조작할 수 있는 독립형 개체입니다.[2]: 62–74 이와 달리 구성요소는 기업에 종속되며 해당 기업에 대해서만 조작할 수 있습니다. 예를 들어 Album 개체는 엔티티를 나타낼 수 있지만 Album 개체와 관련된 Tracks 개체는 Album 개체의 구성 요소를 나타냅니다. 만약 Album 개체를 통해서만 Tracks를 데이터베이스에서 저장하거나 검색할 수 있다고 가정한다면 말입니다. J2EE와 달리 Hibernate는 데이터베이스를 전환할 수 있습니다.
역사
Hibernate는 2001년 Gavin King이 Cirrus Technologies의 동료들과 함께 EJB2 스타일의 엔티티 원두를 사용하는 대안으로 시작했습니다. 원래의 목표는 복잡성을 단순화하고 특정 누락된 기능을 보완함으로써 EJB2가 제공하는 것보다 더 나은 지속 기능을 제공하는 것이었습니다.
2003년 초, 하이버네이트 개발 팀은 하이버네이트 2 릴리스를 시작했으며, 이는 첫 번째 릴리스에 비해 많은 중요한 개선점을 제공했습니다.
JBoss, Inc.(현재는 Red Hat의 일부)는 나중에 개발을 진행하기 위해 주요 Hibernate 개발자를 고용했습니다.
2005년 하이버네이트 버전 3.0이 출시되었습니다. 주요 기능으로는 새로운 Interceptor/Callback 아키텍처, 사용자 정의 필터, JDK 5.0 Annotations(자바의 메타데이터 기능) 등이 있습니다. 2010년[update] 기준으로 하이버네이트 3(버전 3.5.0 이상)은 JSR 317 표준을 준수하는 코어 모듈의 래퍼를 통해 자바 퍼시스턴스 API 2.0 규격의 인증된 구현이었습니다.[5]
2011년 12월 하이버네이트 코어 4.0.0 파이널이 출시되었습니다. 여기에는 멀티 테넌시(Multi-tenancy) 지원, Service Registry 도입(Hibernate가 "서비스"를 구축하고 관리하는 방법의 주요 변경), SessionFactory에서 세션을 더 잘 열고 org.hibernate를 통한 통합 개선 등의 새로운 기능이 포함됩니다.integrator.spi.통합기 및 자동 검색, 국제화 지원, 로깅의 메시지 코드, API, SPI 또는 구현 클래스 간의 더 많은 구분.[6]
2012년 12월, 하이버네이트 ORM 4.1.9 파이널이 출시되었습니다.[7]
2013년 3월, 하이버네이트 ORM 4.2 파이널이 출시되었습니다.[8]
2013년 12월 하이버네이트 ORM 4.3.0 파이널이 출시되었습니다.[9] Java Persistence API 2.1을 제공합니다.
2015년 9월, 하이버네이트 ORM 5.0.2 파이널이 공개되었습니다. 부트스트래핑, 동면-자바8, 동면-공간, 카라프 지원 기능이 향상되었습니다.
2018년 11월, 하이버네이트 ORM 5.1.17 파이널이 출시되었습니다. 이것은 5.1 시리즈의 최종 출시작입니다.
2018년 10월 하이버네이트 ORM 5.3 파이널이 출시되었습니다. Java Persistence API 2.2 상속 캐싱 기능이 있습니다.
2018년 12월 하이버네이트 ORM 5.4.0 파이널이 출시되었습니다.[10]
2022년 10월, 하이버네이트 ORM 6.1.4 파이널이 출시되었습니다.[11]
응용프로그램 프로그래밍 인터페이스
하이버네이트 API는 Java 패키지로 제공됩니다. org.hibernate
.[12]
org. hibernateSessionFactory 인터페이스
그 org.hibernate.SessionFactory
인터페이스는 JPA의 표준과 동등한 버전입니다. EntityManagerFactory
.[2]: 26
org. hibernate세션 인터페이스
그 org.hibernate.Session
인터페이스는[13] 최대 절전 모드 세션, 즉 데이터베이스 엔티티에 대해 수행되는 조작의 주요 지점을 나타냅니다. 후자의 활동에는 (다른 것들 중) 개체의 지속 상태(일시적, 지속적, 분리된[clarification needed]) 관리, 데이터베이스에서 지속적 개체 가져오기 및 트랜잭션 경계[clarification needed] 관리가 포함됩니다.
A Session
데이터베이스의 논리 트랜잭션만큼 오래 지속되도록 설계되었습니다. 후자의 특징으로 인해, Session
구현은 스레드 안전하지도 않고 여러 클라이언트에서 사용되지도 않을 것으로 예상됩니다.
소프트웨어 구성요소
최대 절전 모드 소프트웨어에는 다음과 같은 구성 요소가 포함됩니다.[14]
- Java 환경을[16] 위한 객체-관계 매핑 솔루션의 기본 소프트웨어인 Hibernate ORM(릴리스 4.1[15] 이전 이름은 Hibernate Core)
- Hibernate Annotations(버전 3.6[17] 이후 Hibernate Core/ORM으로 병합) – JSR 317 Java Persistence API(JPA 2)[18]에 따라 객체 지향 모델과 관계형 데이터베이스 모델 간의 데이터 변환을 제어하는 메타데이터
- Hibernate EntityManager(버전[19] 5.2 이후 Hibernate Core/ORM으로 통합) – JSR 317 Java Persistence API[20](JPA 2) Persistence 솔루션을 구현하는 래퍼인 Hibernate Annotations와 함께 제공
- 최대 절전 모드 Envers – 영구 클래스[21] 감사 및 버전 지정
- 동면 OGM(Object/Grid Mapper) – NoSQL 저장소에[22] 데이터를 저장할 수 있는 확장 기능
- 최대 절전 모드 샤드 – 여러 관계형 데이터베이스에[23] 대한 수평 파티셔닝
- 하이버네이트 샤드는 하이버네이트 코어의 4.x 릴리스와 호환되지 않지만 일부 샤드 기능은 4.0 릴리스에서 코어에 통합되었습니다.
- 최대 절전 모드 검색 – 최대 절전 모드 및 JPA 모델에서[24] Apache Lucene의 전체 텍스트 라이브러리 기능 통합
- 겨울잠 도구 – JBoss Developer Studio에[25] 포함된 Eclipse 플러그인 및 Ant 태스크 모음으로 구현된 도구 모음
- 동면 검증자 – JSR 303 Bean[26][2]: 49–51 Validation의 참조 구현
- 동면 메타 모델 생성기 – JSR 269 플러그 가능한 주석 처리 API를[27] 사용하여 JSR 317 Java Persistence API(JPA 2) 정적 메타 모델 클래스를 생성하는 주석 프로세서
- NHibernate – 에 대한 객체-관계 매핑 솔루션입니다.NET Framework[28]
참고 항목
참고문헌
- ^ "Hibernate ORM 6.1.4.Final released". Retrieved 11 October 2022.
- ^ a b c d e f g h i j 바우어, 킹 & 그레고리 2015.
- ^ "Equals and HashCode". JBoss Community.
- ^ "Hibernate User Guide: 2.5.5. Provide identifier attribute". JBoss Community.
- ^ "Hibernate 3.5.0-Final release". In Relation To...
- ^ "Releases - Hibernate ORM". hibernate.org.
- ^ "In Relation To... Hibernate ORM 4.1.9.Final Released". Archived from the original on 2013-01-29. Retrieved 2012-12-13.
- ^ "GC: Hibernate-core-4.2.0.Final.jar - GrepCode Java Project Source". Archived from the original on 2014-12-05. Retrieved 2014-11-27.
- ^ "GC: Hibernate-core-4.3.0.Final.jar - GrepCode Java Project Source". Archived from the original on 2014-12-05. Retrieved 2014-11-27.
- ^ "Releases - Hibernate ORM". hibernate.org.
- ^ Boriero, Andrea. "Hibernate ORM 6.1.4.Final released". In Relation To. Retrieved 2022-10-11.
- ^ "Hibernate JavaDocs". docs.jboss.org.
- ^ "Session (Hibernate JavaDocs)". docs.jboss.org.
- ^ "Hibernate: Relational Persistence for Java and .NET". JBoss Community.
- ^ "Hibernate ORM 4.1.0 Release". JBoss Community.
- ^ "HIBERNATE - Relational Persistence for Idiomatic Java". JBoss Community.
- ^ "No more hibernate-annotations module". JBoss Community.
- ^ "Hibernate Annotations". JBoss Community.
- ^ "hibernate-entitymanager merged into hibernate-core". JBoss Community.
- ^ "Hibernate EntityManager". JBoss Community.
- ^ "Hibernate Envers – Easy Entity Auditing". JBoss Community.
- ^ "Hibernate OGM". JBoss Community.
- ^ "Hibernate Shards". JBoss Community.
- ^ "Hibernate Search". JBoss Community.
- ^ "Hibernate Tools for Eclipse and Ant". JBoss Community.
- ^ "Hibernate Validator". JBoss Community.
- ^ "Hibernate Metamodel Generator". JBoss Community.
- ^ "NHibernate". NHibernate Forge. Archived from the original on 2012-07-12. Retrieved 2011-04-26.
서지학
- Linwood, Ananda; Minter, Dave (May 28, 2010), Beginning Hibernate (Second ed.), Apress, p. 400, ISBN 978-1-4302-2850-9, archived from the original on December 5, 2010, retrieved September 4, 2010
- Bernard, Emmanuel; Griffin, John (December 30, 2008), Hibernate Search in Action (First ed.), Manning Publications, p. 488, ISBN 978-1-933988-64-1
- Elliott, James; O'Brien, Tim (April 22, 2008), Harnessing Hibernate (First ed.), O'Reilly Media, p. 380, ISBN 978-0-596-51772-4
- Bauer, Christian; King, Gavin; Gregory, Gary (November 8, 2015). Java Persistence with Hibernate. Manning Publications. ISBN 1-61729-045-9.
- Linwood, Jeff; Minter, Dave (August 25, 2006), Beginning Hibernate: From Novice to Professional (Third ed.), Apress, p. 360, ISBN 1-59059-693-5, archived from the original on December 24, 2010, retrieved April 24, 2009
- Minter, Dave; Linwood, Jeff (June 27, 2005), Pro Hibernate 3 (First ed.), Apress, pp. 242, ISBN 1-59059-511-4
- Iverson, Will (December 2, 2004), Hibernate: A J2EE Developer's Guide (First ed.), Addison Wesley, pp. 384, ISBN 0-321-26819-9
- Pugh, Eric; Gradecki, Joseph D. (October 8, 2004), Professional Hibernate (Programmer to Programmer) (First ed.), Wrox, p. 456, ISBN 0-7645-7677-1, archived from the original on April 4, 2009, retrieved April 26, 2009
- Bauer, Christian; King, Gavin (August 1, 2004), Hibernate In Action (Second ed.), Manning Publications, pp. 400, ISBN 1-932394-15-X
- James, Elliott (May 10, 2004), Hibernate: A Developer's Notebook (First ed.), O'Reilly Media, pp. 190, ISBN 0-596-00696-9