[Java] Java 하이버네이트 Hibernate ORM 사용법 #34

소개

자바 개발에서 데이터베이스와의 상호 작용은 중요한 부분 중 하나입니다. 이때 Java 하이버네이트 Hibernate ORM은 데이터베이스와의 효율적이고 편리한 상호 작용을 가능하게 해주는 강력한 도구입니다. 이 블로그에서는 Java Hibernate ORM의 기본 개념부터 고급 사용법까지 소개하겠습니다.

[Java] Java 하이버네이트 Hibernate ORM 사용법 #34

목차

  1. Hibernate ORM이란?
  • ORM 개념과 이점
  • Hibernate의 역할과 장점
  1. 시작하기
  • Hibernate 설정 파일 작성
  • 데이터베이스 연결 설정
  • Entity 클래스 정의
  1. 매핑
  • 객체와 테이블 매핑
  • 다양한 매핑 전략
  1. CRUD 작업
  • 데이터베이스에 데이터 저장 및 검색
  • 업데이트 및 삭제 작업
  1. 쿼리 언어
  • HQL(Hibernate Query Language) 사용법
  • Criteria API 소개
  1. 캐싱
  • 캐시 사용의 이점
  • 캐시 전략
  1. 관계 매핑
  • 일대일, 일대다, 다대다 관계 설정
  • 연관 관계의 로딩 전략
  1. 트랜잭션 관리
  • 트랜잭션 설정과 제어
  • 격리 수준과 롤백 처리
  1. 성능 최적화
  • N+1 문제 해결
  • 배치 처리 및 지연 로딩 최적화

시작하기

1. Hibernate ORM이란?

Hibernate는 자바 객체와 데이터베이스 간의 매핑을 담당하는 ORM 프레임워크로, 객체 지향 프로그래밍과 관계형 데이터베이스 간의 상호 변환을 단순화합니다. ORM은 개발자가 SQL 쿼리를 직접 작성하지 않고도 객체를 통해 데이터베이스에 접근할 수 있게 해주는 기술입니다.

2. 시작하기

Hibernate를 사용하기 위해선 먼저 프로젝트에 Hibernate를 추가하고, 설정 파일을 작성해야 합니다. hibernate.cfg.xml 파일을 통해 데이터베이스 연결 정보와 Hibernate 설정을 정의할 수 있습니다. 또한, Entity 클래스를 작성하여 데이터베이스 테이블과 매핑합니다.

<!-- hibernate.cfg.xml -->
<hibernate-configuration>
    <session-factory>
        <!-- Database connection settings -->
        <property name="hibernate.connection.driver_class">com.mysql.cj.jdbc.Driver</property>
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/mydatabase</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.connection.password">password</property>

        <!-- JDBC connection pool settings -->
        <property name="hibernate.c3p0.min_size">5</property>
        <property name="hibernate.c3p0.max_size">20</property>

        <!-- Specify dialect -->
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>

        <!-- Echo all executed SQL to stdout -->
        <property name="hibernate.show_sql">true</property>

        <!-- Drop and re-create the database schema on startup -->
        <property name="hibernate.hbm2ddl.auto">update</property>
    </session-factory>
</hibernate-configuration>

3. 매핑

Hibernate에서는 Entity 클래스의 각 필드를 데이터베이스 테이블의 컬럼에 매핑합니다. 예를 들어, 다음과 같은 간단한 Entity 클래스를 생각해보겠습니다.

@Entity
@Table(name = "employee")
public class Employee {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    private Long id;

    @Column(name = "name")
    private String name;

    @Column(name = "salary")
    private double salary;

    // getters and setters
}

위의 예시에서 @Entity 어노테이션은 이 클래스가 Hibernate Entity임을 나타내고, @Table 어노테이션은 테이블의 이름을 정의합니다. @Id, @GeneratedValue, @Column 어노테이션은 각각 기본 키, 자동 생성 전략, 컬럼 매핑을 정의합니다.

4. CRUD 작업

Hibernate를 사용하면 다음과 같이 간단하게 데이터베이스에 데이터를 저장하고 조회할 수 있습니다.

// 데이터 저장
Employee employee = new Employee();
employee.setName("John Doe");
employee.setSalary(50000.0);

Session session = sessionFactory.openSession();
session.beginTransaction();
session.save(employee);
session.getTransaction().commit();
session.close();

// 데이터 조회
session = sessionFactory.openSession();
Employee retrievedEmployee = session.get(Employee.class, 1L);
System.out.println("Retrieved Employee: " + retrievedEmployee.getName());
session.close();

위의 예시에서 session.save(employee)는 데이터를 데이터베이스에 저장하고, session.get(Employee.class, 1L)는 주어진 ID에 해당하는 Employee 객체를 조회합니다.

마무리 Java 하이버네이트

이 블로그에서는 Java Hibernate ORM의 기본 개념과 기초적인 사용법을 다뤘습니다. Hibernate는 데이터베이스 연동을 더 쉽게 만들어주는 강력한 도구이며, 이를 잘 활용하면 개발 생산성을 향상시킬 수 있습니다. 앞으로도 Hibernate의 다양한 기능과 고급 사용법에 대해 더 자세히 알아보면서 효율적인 데이터베이스 관리를 실현해보세요!

[Java] Java Spring Boot 시작하기 #33
[Java] Java Spring Boot 시작하기 #33
[Java] Java Maven VS Gradle #35
[Java] Java Maven VS Gradle #35

Leave a Comment