하이버네이트(Hibernate)

허성재's avatar
Aug 21, 2024
하이버네이트(Hibernate)
하이버네이트(Hibernate)는 자바 기반의 객체 관계 매핑(Object-Relational Mapping, ORM) 프레임워크입니다. ORM 프레임워크는 객체 지향 프로그래밍 언어의 객체와 관계형 데이터베이스의 테이블 간의 변환을 자동으로 처리하여, 개발자가 데이터베이스 작업을 더 쉽게 할 수 있도록 도와줍니다.

주요 특징

  1. 객체-관계 매핑 (ORM): 하이버네이트는 자바 객체와 데이터베이스의 테이블 간의 매핑을 자동으로 처리합니다. 개발자는 SQL을 직접 작성할 필요 없이 자바 객체를 사용하여 데이터베이스 작업을 수행할 수 있습니다.
  1. 투명한 데이터베이스 작업: 하이버네이트는 데이터베이스의 CRUD(Create, Read, Update, Delete) 작업을 자동으로 처리하며, 트랜잭션 관리를 지원합니다. 이를 통해 데이터베이스 작업을 더 간단하게 수행할 수 있습니다.
  1. HQL (Hibernate Query Language): 하이버네이트는 SQL이 아닌 HQL이라는 객체 지향 쿼리 언어를 사용하여 데이터베이스 쿼리를 작성합니다. HQL은 자바 객체를 기반으로 쿼리를 작성할 수 있게 하여, 더 직관적인 쿼리 작성이 가능하게 합니다.
  1. 캐싱: 하이버네이트는 데이터베이스 쿼리와 결과를 캐시하여 성능을 향상시킬 수 있습니다. 1차 캐시와 2차 캐시를 지원하여 데이터베이스 접근을 최소화합니다.
  1. 트랜잭션 관리: 하이버네이트는 자바의 트랜잭션 API를 통해 트랜잭션 관리를 지원합니다. 여러 데이터베이스 작업을 원자적으로 처리할 수 있습니다.
  1. 자동 스키마 생성: 하이버네이트는 엔티티 클래스의 메타데이터를 바탕으로 데이터베이스 스키마를 자동으로 생성할 수 있습니다. 이는 개발 초기에 유용하게 사용됩니다.
  1. 엔티티 상태 관리: 하이버네이트는 엔티티의 상태를 자동으로 관리하며, 엔티티의 변경 사항을 감지하고 데이터베이스에 반영합니다.

기본 개념

  1. 엔티티(Entity): 데이터베이스의 테이블에 해당하는 자바 클래스로, 데이터베이스의 각 레코드를 자바 객체로 표현합니다. 엔티티 클래스는 @Entity 어노테이션을 사용하여 정의합니다.
  1. 세션(Session): 하이버네이트의 주요 작업 단위로, 데이터베이스와의 상호작용을 관리합니다. 세션을 통해 데이터의 CRUD 작업 및 트랜잭션 관리를 수행합니다.
  1. 세션 팩토리(SessionFactory): Session 객체를 생성하는 팩토리 역할을 합니다. 애플리케이션에서 하나의 SessionFactory를 사용하여 여러 개의 Session을 생성할 수 있습니다.
  1. 매핑(Mapping): 자바 클래스와 데이터베이스 테이블 간의 관계를 정의하는 작업입니다. 매핑은 XML 파일 또는 어노테이션을 통해 설정할 수 있습니다.

설정 및 사용 예시

  1. 의존성 추가: Maven 또는 Gradle을 사용하여 하이버네이트 라이브러리를 프로젝트에 추가합니다.
      • Maven:
        • <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>6.2.6.Final</version> </dependency>
      • Gradle:
        • implementation 'org.hibernate:hibernate-core:6.2.6.Final'
  1. 엔티티 클래스 정의:
    1. @Entity @Table(name = "employees") public class Employee { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(name = "name") private String name; // getters and setters }
  1. 세션 팩토리 설정: Hibernate 설정 파일(hibernate.cfg.xml)을 통해 데이터베이스 연결 및 세션 팩토리 설정을 정의합니다.
  1. 세션 사용:
    1. SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory(); Session session = sessionFactory.openSession(); Transaction transaction = session.beginTransaction(); // CRUD operations Employee employee = new Employee(); employee.setName("John Doe"); session.save(employee); transaction.commit(); session.close();

요약

하이버네이트는 자바 애플리케이션에서 데이터베이스 작업을 간편하게 처리할 수 있도록 도와주는 ORM 프레임워크입니다. 객체와 데이터베이스 간의 매핑을 자동으로 처리하고, SQL 쿼리를 직접 작성할 필요 없이 자바 객체를 통해 데이터베이스와 상호작용할 수 있습니다. 하이버네이트는 캐싱, 트랜잭션 관리, 자동 스키마 생성 등 다양한 기능을 제공하여 데이터베이스 작업의 효율성을 높입니다.
 
Share article

heo-gom