하지 않다

NHibernate
하지 않다
NHibernate-logo.svg
안정된 릴리스
5.3.12 / 2022년 5월 1일, 3개월 전(2022-05-01)
저장소
기입처C#
운영 체제크로스 플랫폼
플랫폼.NET 4.6.1, .NET Standard 2.0,.NET Core 2.0 및 모노
유형오브젝트-관계매핑
면허증.GNU Lesser General Public License 2.1
웹 사이트http://nhibernate.info

NHibernateMicrosoft 객체 관계 매핑(ORM) 솔루션입니다.NET 플랫폼객체 지향 도메인 모델을 기존의 관계형 데이터베이스에 매핑하기 위한 프레임워크를 제공합니다.그 목적은 관계형 데이터 지속성 관련 프로그래밍 태스크의 상당 부분으로부터 개발자를 구제하는 것입니다.NHibernate는 GNU Lesser General Public License에 따라 배포되는 무료 오픈 소스 소프트웨어입니다.NHibernate는 겨울잠의 항구이다.

기능의 개요

NHibernate의 주요 기능은 에서 매핑하는 것입니다.NET 클래스에서 데이터베이스 테이블(및 CLR 데이터 유형에서 SQL 데이터 유형까지)NHibernate는 데이터 조회 및 검색 기능도 제공합니다.NHibernate는 SQL 명령을 생성하고 개발자가 수동 데이터 세트 처리 및 객체 변환 작업을 수행할 필요가 없도록 함으로써 애플리케이션을 대부분의 SQL 데이터베이스로 이식할 수 있도록 하며 데이터베이스 이식성을 매우 적은 성능 오버헤드로 제공합니다.

NHibernate는 Plain Old CLR Object(POCO; 플레인 올드 CLR 오브젝트)에 투과적인 지속성을 제공합니다.영속적인 클래스의 유일한 엄격한 요건은 no-argument 컨스트럭터입니다.이 컨스트럭터는 퍼블릭일 필요는 없습니다(일부 어플리케이션에서는 Equals() 메서드와 GetHashCode() 메서드에도 특별한 주의가 필요합니다).[1]

역사

NHibernate는 Tom Barrett에 의해 시작되었고, 후에 Mike Doerfler와 Peter Smulovics에 의해 선택되었습니다.2005년 말 JBoss, Inc.(현재는 Red Hat의 일부)는 NHibernate의 주요 개발자였던 Sergey Koshchev를 고용하여 향후 [2]버전에 대해 풀타임으로 작업하게 했습니다.2006년 말에 JBoss는 이 프로젝트에 대한 지원을 중단했습니다.현재 이 프로젝트는 커뮤니티에 의해 완전히 개발되어 주도되고 있습니다.

버전 1.0은 Hibernate 2.1의 기능 세트와 Hibernate 3의 많은 기능을 반영하고 있습니다.

NHibernate 1.2.1은 2007년 11월에 출시되었으며, Hibernate 3에서 더 많은 기능과 지원 기능을 도입했습니다.NET 2.0, 스토어드 프로시저, 제네릭 및 늘 타입.

NHIbernate 2.0

NHibernate 2.0은 2008년 8월 23일에 출시되었습니다.기능 면에서는 Hibernate 3.2에 필적합니다.버전 2.0 릴리스에서는 NHibernate는 에 대한 지원을 폐기했습니다.NET 1.[3]1

NHibernate 2.1은 2009년 7월 17일에 출시되었습니다.

NHIbernate 3.0

NHibernate 3.0은 2010년 12월 4일에 출시되었으며 를 사용하는 첫 번째 버전입니다.다음과 같은 기능을 갖춘 NET 3.5

  • 통합 LINQ 지원
  • QueryOver라는 강력한 유형의 조건과 유사한 API
  • HQL 엔진용 새로운 AST 기반 파서
  • 느린 열 로드 지원.

NHIbernate 3.2

NHibernate 3.2는 2011년 4월에 출시되었습니다.다음과 같은 [4]신기능이 추가되었습니다.

  • 코드별 매핑: fluent configuration, .hbm.xml 파일은 필요 없습니다.
  • 하위 선택: SQL 뷰를 엔티티로 매핑하는 기능
  • HQL 페이징:HQL에서의 테이크 앤 스킵
  • 통합 바이트 코드 공급자: 도입할 DLL이 1개 적습니다.

NHibernate 4.0

NHibernate 4.0은 2014년 [5]8월 17일에 출시되었습니다.이 버전에는 가 필요합니다.NET Framework 4.0 이후

NHibernate 5.0

NHibernate 5.0은 2017년 10월 10일에 출시되었습니다.비동기 [6]프로그래밍을 지원합니다.이 버전에는 가 필요합니다.NET Framework 4.6.1 이후

NHIbernate 5.1

NHibernate 5.1은 2018년 3월 17일에 출시되었습니다.를 지원합니다.NET Standard 2.0 NET Core 2.[7]0

NHivernate 5.2

NHibernate 5.2는 2018년 [7]12월 4일에 출시되었습니다.

NHibernate 5.3

NHibernate 5.3은 2020년 [8]7월 19일에 출시되었습니다.

투고

오픈 소스 소프트웨어로서 NHibernate는 사용자들로부터 많은 기여를 받아왔다.LINQ를 구현함으로써 언어 통합 쿼리를 NHibernate와 [9]함께 사용할 수 있게 되었습니다.

NHivernate Profiler

NHivernate Profiler는 NHivernate의 실시간 비주얼 디버거 역할을 하는 Object-Relational Mapping Tool(ORM)입니다.비효율적인 SQL 데이터 쿼리를 식별하여 데이터베이스의 불필요한 작업을 제거하여 애플리케이션의 전반적인 성능을 향상시킵니다.또한 NHivernate Profiler는 시간이 너무 많이 소요되는 데이터 쿼리에 대해 사용자에게 경고하고 C# [10]코드의 정확한 행으로 유도합니다.

샘플

여기에서는 데이터베이스에 개체를 추가하기 위한 코드 조각과 NHibernate를 사용하여 데이터베이스 내의 개체를 검색, 수정 및 업데이트하는 방법을 보여 줍니다.

//데이터스토어에 고객 추가  //'session Factory'는 애플리케이션 라이프 타임에 한 번 빌드되는 스레드 세이프 오브젝트입니다(구축에 몇 초 걸릴 수 있습니다). // 데이터베이스 테이블을 C# 객체에 매핑하는 방법을 제어하는 구성 파일에 기반합니다. //(예: 데이터베이스 테이블의 어떤 속성이 어떤 열에 매핑되는지) // //'fast'는 스레드 보안 및 취득 속도가 빠르지 않으므로 데이터베이스에 대한 연결로 간주할 수 있습니다. 사용. (변화하다 세션 = 세션 팩토리.오픈 세션())  {     //트랜잭션은 DB 트랜잭션을 나타냅니다.     사용. (IT 트랜잭션 거래. = 세션.트랜잭션 시작())      {         //아래 행은 NHibernate의 데이터베이스에 삽입할 객체 목록에 고객을 추가합니다.         //단, 이 단계에서는 SQL insert 명령을 실행하지 않습니다.*         //*Id 필드가 데이터베이스에 의해 생성된 경우(예: 자동 증가 번호)         //NHibernate는 SQL INSERT를 실행합니다.Save를 호출합니다.         세션.절약하다(신규 고객. { 아이디 = GUID.뉴가이드(), 이름 = '사장님", 나이 = 50 });          //아래 호출은 SQL INSERT를 실행하고 트랜잭션을 커밋합니다.         거래..저지르다();     } }  //데이터베이스에서 고객 검색, 레코드 수정 및 데이터베이스 업데이트 사용. (변화하다 세션 = 세션 팩토리.오픈 세션()) {     사용. (IT 트랜잭션 거래. = 세션.트랜잭션 시작())      {         // 세션 쿼리는 IQueryable <고객>을 반환합니다.         // 의 경우에만.FirstOrDefault는 NHibernate가 SQL 쿼리를 실행한다고 호출됩니다.         고객. 고객. = 세션.쿼리< >고객.> ( ) 。어디에(c => c.상품권 == 상품권).First Or Default(첫 번째 또는 기본값)();              // 이제 고객은 '세션' 객체의 '부분'이 되어 NHibernate가 변경 사항을 추적합니다.         // 성공했습니다.         한다면 (고객. != 무효)          {             // 객체의 속성을 변경해도 SQL이 실행되지 않음             고객..토큰 검증 완료 = 진실의;                  // 트랜잭션을 커밋하면 SQL UPDATE 문이 생성됩니다.             // NHIbernate는 로딩 후 '고객'이 변경된 사실을 추적했습니다.             거래..저지르다();         }     } } 

NHibernate의 설정은 NHibernate가 SQL 문을 실행하는 시점에 영향을 줄 수 있습니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ hibernate.org - 동등 및 해시 코드
  2. ^ [하이버네이트] NHibernate, 주식회사 JBoss에서 하이버네이트 가입
  3. ^ NH1.2.1부터GA에서 NH2.0.0으로 - NHibernate
  4. ^ "NHibernate 3.2 Released". weblogs.asp.net. Retrieved 2019-01-25.
  5. ^ "NHibernate 4.0.0.GA released". groups.google.com. Retrieved 2019-01-25.
  6. ^ "NHibernate 5.0 Released - NHibernate". nhibernate.info. Retrieved 2019-01-25.
  7. ^ a b "NHibernate 5.2.0 Released - Google Groups". Retrieved 2019-01-25.
  8. ^ "NHibernate 5.3 Released". nhibernate.info. Retrieved 2020-09-10.
  9. ^ NHibernate용 Linq 구현: 사용방법 가이드 - 파트 1
  10. ^ "NHibernate Profiler". hibernatingrhinos.com. Hibernating Rhinos. Retrieved 2020-05-20.

참고 문헌

외부 링크