본문 바로가기
IT/spring

Spring JPA ORM (Object-Relational Mapping)

by 뉴코딩맨 2023. 7. 1.
Spring JPA ORM에 대해 알아보겠습니다. Spring JPA ORM은 Java 객체와 데이터베이스 테이블 간의 매핑을 자동으로 처리하는 기술로, 객체 지향 프로그래밍과 관계형 데이터베이스 간의 불일치를 해결하기 위해 사용됩니다. Spring JPA ORM은 데이터베이스 액세스를 편리하게 처리하고, 반복적인 SQL 쿼리 작성을 줄여 개발 생산성을 향상시킵니다.
 
 
 

ORM의 개념

ORM은 Object-Relational Mapping의 약자로, 객체와 관계형 데이터베이스 간의 매핑을 자동화하는 기술을 의미합니다. 객체 지향 프로그래밍에서는 객체를 사용하여 데이터와 비즈니스 로직을 캡슐화하고, 관계형 데이터베이스는 테이블과 열로 데이터를 저장합니다. 이 두 가지 간의 불일치를 해결하기 위해 ORM은 객체와 테이블을 연결하여 데이터베이스 액세스를 추상화하고, 자동으로 SQL 쿼리를 생성하여 객체의 상태를 데이터베이스에 반영합니다.
 

Spring JPA ORM의 동작 원리

Spring JPA ORM은 Java Persistence API(JPA)를 기반으로 동작합니다. JPA는 Java 표준 인터페이스로, ORM을 위한 기능을 정의하고 있습니다. Spring JPA는 JPA를 Spring 프레임워크에서 편리하게 사용할 수 있도록 지원합니다. Spring JPA는 엔티티(Entity) 클래스와 Repository 인터페이스를 기반으로 동작합니다.
 

엔티티 클래스

엔티티 클래스는 데이터베이스의 테이블과 매핑되는 Java 클래스입니다. 엔티티 클래스는 @Entity 어노테이션을 사용하여 정의하며, 클래스의 필드는 데이터베이스의 열과 매핑됩니다. 예를 들어, 다음은 사용자 정보를 표현하는 User 엔티티 클래스의 예시입니다.
 
@Entity
@Table(name = "users")
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    
    @Column(name = "username")
    private String username;
    
    @Column(name = "email")
    private String email;
    
    // Getters and setters
}

 

Repository 인터페이스

Repository 인터페이스는 데이터베이스 액세스를 위한 메서드를 정의하는 인터페이스입니다. Spring JPA는 Repository 인터페이스를 자동으로 구현하여 데이터베이스와의 상호작용을 처리합니다. Repository 인터페이스는 CrudRepository나 JpaRepository를 상속받아 정의할 수 있습니다. 예를 들어, 다음은 User 엔티티에 대한 Repository 인터페이스의 예시입니다.
 
public interface UserRepository extends JpaRepository<User, Long> {
    // Custom methods
}

 

 

 

예시 코드

다음은 Spring JPA ORM을 사용하여 데이터베이스에서 사용자 정보를 조회하는 예시 코드입니다.
 
@RestController
public class UserController {
    @Autowired
    private UserRepository userRepository;
    
    @GetMapping("/users/{id}")
    public User getUser(@PathVariable Long id) {
        return userRepository.findById(id).orElse(null);
    }
}
 
위의 예시 코드에서 UserRepository는 데이터베이스 액세스를 위한 메서드를 제공하고, UserController는 /users/{id} 엔드포인트로부터 사용자 정보를 조회하는 기능을 제공합니다. userRepository.findById(id)는 주어진 ID에 해당하는 사용자 정보를 조회하며, 결과가 없을 경우 null을 반환합니다.
 

결론

Spring JPA ORM은 Spring 프레임워크에서 JPA를 편리하게 사용할 수 있도록 지원하는 기술입니다. 객체-관계 매핑을 간소화하고 자동 쿼리 생성, 트랜잭션 관리, 다양한 데이터베이스 지원 등의 장점을 제공합니다. 예시 코드를 통해 Spring JPA ORM의 사용법을 확인할 수 있습니다.
 

'IT > spring' 카테고리의 다른 글

스프링 @Id 어노테이션  (0) 2023.07.03
스프링 @Entity  (0) 2023.07.02
Spring JPA  (0) 2023.06.30
스프링 HttpMessageConverter  (0) 2023.06.30
스프링 Jackson 라이브러리  (0) 2023.06.30

댓글