최근에 나는 많은 하이버네이트 튜토리얼을 작성했습니다. 하이버네이트는 현재 시장에서 가장 우수한 Java ORM 도구 중 하나입니다. 따라서 이 게시물은 하이버네이트 튜토리얼 및 예제에 대한 모든 게시물의 색인과 같습니다. 이 하이버네이트 튜토리얼을 순서대로 참조하여 처음부터 하이버네이트를 학습할 수 있습니다. 목록에 더 많은 하이버네이트 튜토리얼을 추가할 예정이므로 즐겨찾기에 추가하고 가끔 확인하시기 바랍니다.
하이버네이트 튜토리얼
- 초보자를 위한 하이버네이트 튜토리얼 하이버네이트는 JPA 주석을 지원하며 매우 유연합니다. XML, 프로퍼티 파일 및 프로그래밍 방식으로 구성할 수 있습니다. 이 튜토리얼은 하이버네이트 프레임워크를 시작하는 좋은 방법입니다. 이 튜토리얼은 하이버네이트에 필요한 다양한 구성에 중점을 두며 간단한 XML 기반 매핑 및 JPA 주석 기반 매핑의 예제를 제공합니다. 또한
SessionFactory
를 초기화하는 여러 가지 방법과 하이버네이트 프레임워크의 중요한 구성 요소도 배울 수 있습니다. - 하이버네이트 일대일 매핑 대부분의 경우, 데이터베이스 테이블은 서로 연관되어 있습니다. 연관의 형태에는 일대일, 일대다 및 다대다가 있으며, 이는 단방향 및 양방향 매핑으로 더 세분화될 수 있습니다. 이 자습서는 XML 구성 및 JPA 주석 구성을 사용하여 하이버네이트 일대일 매핑을 구현하는 방법을 안내합니다.
- 하이버네이트 일대다 매핑 간단히 말해, 일대다 매핑은 한 테이블의 한 행이 다른 테이블의 여러 행에 매핑될 수 있다는 것을 의미합니다. 예를 들어, 항목을 위한 별도의 테이블이 있는 카트 시스템을 생각해보십시오. 카트는 여러 항목을 가질 수 있으므로 여기서는 일대다 매핑이 있습니다. 이 자습서에서는 XML 기반 구성을 사용하여 일대다 매핑을 구현하는 방법과 Hibernate 주석을 사용하는 방법을 배웁니다.
- 하이버네이트 다대다 매핑 다대다 매핑은 일반적으로 조인 테이블을 사용하여 데이터베이스에서 구현됩니다. 예를 들어, 카트 및 항목 테이블 및 다대다 매핑을 위한 Cart_Items 테이블을 가질 수 있습니다. 모든 카트에는 여러 항목이 포함될 수 있고 모든 항목이 여러 카트의 일부가 될 수 있으므로 여기에는 다대다 매핑이 있습니다. 이 자습서는 하이버네이트 다대다 단방향 및 양방향 매핑에 대해 설명합니다.
- Hibernate Query Language (HQL) 하이버네이트 프레임워크는 강력한 객체 지향 쿼리 언어인 Hibernate Query Language (HQL)을 제공합니다. 이는 SQL과 매우 유사하지만 테이블 이름 대신 객체를 사용한다는 점에서 객체 지향 프로그래밍에 더 가깝습니다. 이 문서에서는 HQL 및 HQL 언어에서 지원하는 다양한 절에 대해 설명합니다.
- Hibernate Native SQL Query 하이버네이트는 SQLQuery 객체를 통해 네이티브 SQL 쿼리를 실행할 수 있는 옵션을 제공합니다. 이는 하이버네이트 API에서 지원하지 않는 데이터베이스 특정 쿼리(예: 쿼리 힌트 또는 Oracle 데이터베이스에서의 CONNECT 키워드)를 실행하고자 할 때 매우 유용합니다.
- Hibernate Named Query HQL 또는 Native SQL 쿼리가 많으면 모든 쿼리가 프로젝트 전체에 흩어져 있어 코드가 엉망이 될 수 있습니다. 이러한 이유로 하이버네이트는 Named Query를 제공하여 중앙 위치에 정의하고 코드의 어디에서나 사용할 수 있게 합니다. 우리는 HQL 및 Native SQL 모두에 대해 네임드 쿼리를 생성할 수 있습니다. 하이버네이트 네임드 쿼리는 Hibernate 매핑 파일에서
query
또는sql-query
요소를 사용하여 정의하거나 JPA 주석 @NamedQuery 및 @NamedNativeQuery를 사용하여 정의할 수 있습니다. - Hibernate Criteria 하이버네이트는 더 객체 지향적인 Criteria API를 제공하여 데이터베이스를 쿼리하고 결과를 가져오는 데 사용합니다. 우리는 Criteria를 사용하여 업데이트 또는 삭제 쿼리나 DDL 문을 실행할 수 없습니다. 이는 더 객체 지향적인 접근 방식을 사용하여 데이터베이스에서 결과를 가져 오기 위해서만 사용됩니다. Criteria API의 일반적인 사용 사례 중 일부는 sum(), min(), max() 등과 같은 집계 함수에 사용할 수있는 Projection입니다. ProjectionList를 사용하여 선택한 열만 가져 오기, 결과를 정렬 등입니다.
- 하이버네이트 1차 캐시 하이버네이트 캐시는 올바르게 사용하면 빠른 애플리케이션 성능 향상에 매우 유용 할 수 있습니다. 캐시의 아이디어는 데이터베이스 쿼리의 수를 줄이고, 따라서 애플리케이션의 처리 시간을 줄이는 것입니다. 하이버네이트 1차 캐시는 세션 객체와 관련이 있습니다. 하이버네이트 1차 캐시는 기본적으로 활성화되어 있으며 비활성화하는 방법이 없습니다. 그러나 하이버네이트는 캐시에서 선택된 객체를 삭제하거나 캐시를 완전히 지울 수있는 메서드를 제공합니다. 세션에 캐시된 모든 객체는 다른 세션에서 볼 수 없으며 세션이 닫힐 때 모든 캐시된 객체도 손실됩니다.
- Hibernate Second Level Cache with EHCache 하이버네이트 두 번째 레벨 캐시 제공자에는 EHCache와 Infinispan이 포함되지만, EHCache가 더 인기가 있습니다. 이유는 쉽게 통합되며 모든 하이버네이트 캐싱 전략을 지원하기 때문입니다. 이 자습서는 EHCache를 하이버네이트 프레임워크와 통합하는 완벽한 예제를 제공합니다.
- Hibernate get vs load 하이버네이트 세션은 데이터베이스에서 데이터를 검색하는 다양한 메서드를 제공합니다. 그 중 두 가지는 get()과 load()입니다. 이 둘에 대한 많은 오버로드된 메서드도 있으며, 이를 다양한 상황에서 사용할 수 있습니다. 처음 보면 get()과 load()는 데이터베이스에서 데이터를 가져오기 때문에 유사해 보입니다. 그러나 이 둘 사이에는 몇 가지 차이가 있으며, 이 자습서에서는 예제 코드와 함께 이를 설명합니다.
- Hibernate save vs persist 하이버네이트 세션은 자바 응용 프로그램과 하이버네이트 프레임워크 간의 인터페이스입니다. 이 자습서에서는 테이블에 데이터를 저장하고 업데이트하는 데 중요한 세션 메서드인 save, saveOrUpdate, persist, update 및 merge에 대해 설명합니다.
- Hibernate openSession vs getCurrentSession Hibernate SessionFactory는 세션을 얻고 데이터베이스 작업을 수행하는 공장 클래스입니다. Hibernate SessionFactory는 getCurrentSession(), openSession() 및 openStatelessSession()이라는 세 가지 방법을 제공하여 Session 객체를 얻을 수 있습니다. 이 자습서에서는 각각의 예제 코드와 함께 이러한 방법에 대해 설명합니다.
- Hibernate log4j 통합 Hibernate 4는 JBoss 로깅을 사용하지만 log4j는 가장 인기 있는 로깅 프레임워크입니다. log4j 로깅을 hibernate 프레임워크와 통합하는 방법에 대한 간단한 자습서입니다.
- Hibernate Tomcat JNDI DataSource 예제 대부분의 경우 hibernate 프레임워크는 Tomcat이나 다른 서블릿 컨테이너에서 실행되는 웹 애플리케이션에서 사용됩니다. Hibernate는 컨테이너에 정의된 JNDI 리소스로 정의된 DataSource를 사용할 수 있습니다. 이것은 서블릿 컨테이너가 연결 풀링을 사용하여 데이터베이스 연결을 처리하도록 하는 선호되는 접근 방식입니다.
- Spring Hibernate 통합 Spring은 가장 많이 사용되는 Java EE 프레임워크 중 하나이고 Hibernate는 가장 인기 있는 ORM 프레임워크입니다. 그래서 Spring Hibernate 조합은 기업 애플리케이션에서 많이 사용됩니다. 이 자습서는 Spring 4를 사용하고 Hibernate 3과 통합한 다음 동일한 프로젝트를 Hibernate 4를 사용하도록 업데이트합니다.
- Spring MVC Hibernate Example 이 튜토리얼은 Hibernate을 Spring MVC와 통합하고 Spring 선언적 트랜잭션 관리를 사용하는 방법을 진행하며 Hibernate 트랜잭션 관리 대신에 사용합니다.
- Struts2 Hibernate Integration Example 이 튜토리얼은 ServletContextLister를 통해 Hibernate을 웹 애플리케이션에 통합하는 일반적인 방법을 설명하며 예제는 Struts2 및 Hibernate을 사용하지만 뒷면의 통합은 Servlet 기술만 사용합니다. 이는 Spring 통합과 다릅니다. 왜냐하면 Struts2는 Hibernate 통합에 대한 내장 지원을 제공하지 않기 때문입니다.
- Hibernate Validator Example 데이터 유효성 검증은 모든 애플리케이션의 필수 구성 요소입니다. 이것은 프레젠테이션 레이어, 비즈니스 레이어 및 영속 레이어에서 발생하는 교차 작업입니다. 그래서 JSR-303은 자바 빈 속성에 대한 유효성을 적용하기 위한 어노테이션 기반 표준을 제공합니다. Hibernate Validator는 JSR-303을 지원하며이 튜토리얼에서는 간단한 예제와 함께 사용 방법을 보여줍니다.
- 하이버네이트 도구 이클립스 플러그인 하이버네이트 프로젝트에서 작업한 적이 있다면, 하이버네이트 매핑 및 구성 파일에 필요한 많은 속성에 익숙할 것입니다. 올바른 속성을 찾는 데 도움이 되는 적절한 도구가 없으면 응용 프로그램을 올바르게 구성하는 것이 매우 어려워집니다. 이 때 하이버네이트 도구 이클립스 플러그인이 유용하며 하이버네이트 프로젝트에 반드시 필요한 플러그인입니다.
- 하이버네이트 인터뷰 질문 하이버네이트 프레임워크에 대한 충분한 지식은 자바 기반 인터뷰에서 플러스 포인트입니다. 이것이 내가 이 게시물을 쓴 이유입니다. 자세한 답변과 함께 하이버네이트 프레임워크와 관련된 중요한 질문의 대부분을 담고 있습니다. 인터뷰를 위해 지식을 정리하기 전에 이를 참고해야 합니다.
하이버네이트 자습서 – 일반적인 오류 수정
- 오프라인 작업을 위해 hibernate.cfg.xml을 구성하는 방법
- org.hibernate.AnnotationException: 엔터티 클래스에 대한 식별자가 지정되지 않았습니다.
- org.hibernate.HibernateException: 활성 트랜잭션 없이는 get이 유효하지 않습니다.
- org.hibernate.HibernateException: 현재 세션 컨텍스트가 구성되지 않았습니다.
- Hibernate 프로그램이 종료되지 않음
- ‘hibernate.dialect’이 설정되지 않은 경우 DialectResolutionInfo에 대한 액세스는 null이 될 수 없습니다.
Source:
https://www.digitalocean.com/community/tutorials/hibernate-tutorial