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 |