본문 바로가기
IT개발/Mybatis, JPA

JPA & Hibernate 개념

by 시간기억자 2025. 1. 17.
반응형

JPA(Java Persistence API)와 Hibernate의 관계는 ORM(Object-Relational Mapping) 기술에서 매우 중요합니다. 

 

1. JPA (Java Persistence API)

정의: JPA는 Java에서 객체와 데이터베이스 간의 매핑을 위한 표준 API입니다. JPA는 ORM을 구현하는 방법을 제공하며, SQL 쿼리를 직접 작성하지 않고도 데이터베이스 작업을 수행할 수 있게 해줍니다.

주요 기능:

  • 엔티티(Entity) 매핑
  • 데이터베이스 CRUD(Create, Read, Update, Delete) 작업
  • 쿼리 기능 (JPQL 사용)

 

2. Hibernate

정의: Hibernate는 JPA의 구현체 중 하나로, 가장 널리 사용되는 ORM 프레임워크입니다. Hibernate는 JPA의 기능을 확장하고, 더 많은 기능과 최적화된 성능을 제공합니다.

주요 기능:

  • JPA의 모든 기능 지원
  • 쿼리 캐싱, 세션 관리, 자동 생성 스키마 등
  • 다양한 데이터베이스 지원

 

3. JPA와 Hibernate의 관계

  • Hibernate는 JPA의 구현체이므로, JPA를 사용하여 Hibernate를 설정하고 사용할 수 있습니다.
  • JPA를 통해 Hibernate의 기능을 사용할 수 있으며, Hibernate가 제공하는 추가 기능도 활용할 수 있습니다.

 

4. Hibernate 사용 예시

1. Maven 의존성 추가

pom.xml 파일에 Hibernate와 JPA 관련 의존성을 추가합니다.

xml

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
</dependency>


2. JPA 엔티티 클래스 정의

java

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

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

    // Getters and Setters
}


3. Repository 인터페이스 정의

java

import org.springframework.data.jpa.repository.JpaRepository;

public interface UserRepository extends JpaRepository<User, Long> {
    User findByName(String name);
}

 

4. service 클래스 정의

java

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class UserService {
    @Autowired
    private UserRepository userRepository;

    public List<User> getAllUsers() {
        return userRepository.findAll();
    }

    public User createUser(User user) {
        return userRepository.save(user);
    }
}


5. 데이터베이스 설정

application.properties 파일에 데이터베이스 연결 설정을 추가합니다.

properties

spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=password
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true


5. 결론

JPA는 데이터베이스와 객체 간의 매핑을 위한 표준 API입니다.
Hibernate는 JPA의 구현체로, JPA를 사용하여 Hibernate의 기능을 활용할 수 있습니다.
Hibernate를 통해 객체 지향적으로 데이터베이스 작업을 수행할 수 있으며, SQL 쿼리를 직접 작성할 필요 없이 CRUD 작업을 쉽게 수행할 수 있습니다.
이러한 구조를 통해 개발자는 데이터베이스와의 상호작용을 효율적으로 관리할 수 있습니다.

 

 

반응형

'IT개발 > Mybatis, JPA' 카테고리의 다른 글

Mybatis & JPA 비교  (0) 2025.01.17
Mybatis란(백엔드개발/자바/서버/데이터/Java/backend)  (0) 2024.11.22

댓글