봄수의 연구실

Hibernate 본문

DEV/Backend

Hibernate

berom 2023. 7. 11. 14:33

Hibernate

- JPA 표준 구현하고, 확장한 ORM 프레임워크

Hibernate는 JPA(Java Persistence API)의 표준을 구현하고 확장한 ORM 프레임워크입니다.

Hibernate는 개발자가 객체 지향적인 방식으로 데이터를 다룰 수 있도록 도와주며, 객체와 데이터베이스 간의 매핑을 관리합니다.
개발자는 자바 객체를 사용하여 데이터베이스의 테이블과 상호작용할 수 있으며, Hibernate가 자동으로 SQL 쿼리를 생성하고 실행하여 데이터베이스와의 상호작용을 처리합니다.

Hibernate를 사용하면 개발자는 SQL 쿼리 작성 및 데이터베이스와의 상세한 연결 및 트랜잭션 관리에 대한 부담을 줄일 수 있으며, 객체 지향적인 개발에 집중할 수 있습니다.

Hibernate Modeling

1단계: 도메인 모델 생성

먼저, Java에서 사용할 도메인 모델을 생성합니다.
이는 일반적으로 POJO(Plain Old Java Object)로 작성되며, 이 클래스는 데이터베이스 테이블의 각 열을 나타내는 필드를 포함합니다.

@Entity
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    private String name;
    private String email;

    // getters and setters
}

2단계: 엔티티 매핑

Hibernate와 JPA는 Java 객체와 데이터베이스 테이블 간의 매핑을 처리합니다.

이를 위해 @Entity, @Table, @Column 등의 어노테이션을 사용합니다.

이러한 어노테이션은 Java 객체가 데이터베이스 테이블과 어떻게 매핑되는지 Hibernate에게 알려줍니다.

3단계: 관계 매핑

JPA는 객체 간의 관계를 매핑하는 데 사용할 수 있는 여러 어노테이션을 제공합니다.

예를 들어, @OneToOne, @OneToMany, @ManyToOne, @ManyToMany 등이 있습니다.
이러한 어노테이션을 사용하면 Java 객체 간의 관계를 데이터베이스 테이블 간의 관계에 매핑할 수 있습니다.

@Entity
public class Order {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    @ManyToOne
    private User user;

    // getters and setters
}

4단계: Hibernate 세션 팩토리 설정

Hibernate는 데이터베이스 연결과 관련된 설정을 관리하는 SessionFactory 객체를 사용합니다.
이 객체는 애플리케이션 전체에서 한 번만 생성되고 공유됩니다.

SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();

5단계: 세션 생성 및 트랜잭션 시작

데이터베이스와의 모든 상호작용은 세션 내에서 이루어집니다.
세션은 데이터베이스 연결을 나타내며, 트랜잭션을 시작하여 작업을 수행합니다.

Session session = sessionFactory.openSession();
Transaction transaction = session.beginTransaction();

6단계: 엔티티 저장

세션의 save 메소드를 사용하여 엔티티를 데이터베이스에 저장할 수 있습니다.

User user = new User();
user.setName("John Doe");
user.setEmail("john.doe@example.com");

session.save(user);

7단계: 트랜잭션 커밋

모든 작업이 완료되면 트랜잭션을 커밋하여 변경 사항을 데이터베이스에 반영합니다.

transaction.commit();

8단계: 세션 닫기

마지막으로, 세션을 닫아 데이터베이스 연결을 종료합니다.

session.close();

이렇게 Hibernate와 JPA를 사용하여 Java 객체와 데이터베이스 테이블 간의 매핑을 설정하고 관리할 수 있습니다.

이는 Java와 데이터베이스 간의 간극을 줄이고, 객체 지향 프로그래밍과 관계형 데이터베이스 간의 불일치를 해결하는 데 도움이 됩니다.
이를 통해 개발자는 SQL 쿼리를 직접 작성하거나 JDBC 코드를 직접 다루지 않고도 데이터베이스와 상호작용할 수 있습니다.

레퍼런스

  • 🐥 카카오테크캠퍼스 - 2단계 3주차
  • 🐥 카카오테크캠퍼스 - 2단계 3주차 강의
  • Spring

부족한 점이나 잘못 된 점을 알려주시면 시정하겠습니다 :>

'DEV > Backend' 카테고리의 다른 글

ChatGPT로 에러 해결 - Failed to start bean 'documentationPluginsBootstrapper'  (0) 2023.08.03
왜 예외처리가 안되는거지  (0) 2023.07.28
MyBatis  (0) 2023.07.11
Restful API  (2) 2023.07.11
Mock API 작성하는 팁  (0) 2023.07.10