거누의 개발노트

[Spring] Java Persistence API - JPA 본문

Spring

[Spring] Java Persistence API - JPA

Gogozzi 2022. 6. 4. 10:39
반응형

Java Persistence API(JPA)

JPA는 현재 자바 진영의 ORM 기술 표준으로, 인터페이스의 모음이다.

실제로 구현된것이 아니라 구현된 클래스와 매핑을 해주기 위해 사용되는 프레임워크이다.

Persistence(영속성)은 데이터를 생성한 프로그램의 실행이 종료되더라도 사라지지 않는 데이터의 특성을 의미한다.

간단하게,JPA는 JAVA 데이터베이스 관련한 API라고 생각하면 이해가 쉽다.

동작 원리

그런데 클래스랑 데이터베이스의 테이블이랑 어떻게 매핑을 할까?

여기서 ORM이라는 기술이 나온다.

ORM(Object-Relational Mapping)

객체와 관계형데이터베이스의 테이블을 매핑한다는 뜻으로, 어플리케이션의 객체를 RDB 테이블에 자동으로 영속화 해주는 것이다.

JPA를 사용하는 이유

JPA는 반복적인 CRUD SQL을 처리해준다. JPA는 매핑된 관계를 이용해서 SQL을 생성하고 실행하는데, 개발자는 어떤 SQL이 실행될지 생각만하면 되고, 예측도 쉽게 할 수 있다.

추가적으로 JPA는 네이티브 SQL이란 기능을 제공해주는데 관계 매핑이 어렵거나 성능에 대한 이슈가 우려되는 경우 SQL을 직접 작성하여 사용할 수 있다.

JPA를 사용하여 얻을 수 있는 가장 큰 것은 SQL아닌 객체 중심으로 개발할 수 있다는 것이다. 이에 따라 당연히 생산성이 좋아지고 유지보수도 수월하다.

Hibernate

자바 진영의 다양한 ORM 프레임워크 중 가장 많이 사용되는 프레임워크

이러한 Hibernate 기반으로 만들어진 ORM 기술 표준이 바로 JPA다.

즉, JPA라는 ORM 기술 표준을 구현한 것이 Hibernate이므로, JPA를 사용하려면 Hibernate를 사용하면 된다.

Simple Usage

  • 객체와 테이블 매핑 : @Entity, @Table
  • 필드와 컬럼 매핑 : @Column
  • 기본키 매핑 : @Id
  • 연관관계 매핑 : @ManyToOne, @JoinColumn
@Getter
@Entity // 기본 테이블임을 나타낸다.
@NoArgsConstructor // 기본 생성자를 대신 생성 해준다.
public class Post extends BaseTimeEntity {
	
    //먼저 기본키가 id이고, DB가 id값을 자동으로 생성해주는데 이것을 IDENTITY 전략 이라고 한다.
    //@GeneratedValue(strategy = GenerationType.AUTO) // 자동 증가 AUTO_INCREMENT
    //@GenerationType.IDENTITY id는 해당 특정 열에 대해서만 고유합니다.
    @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(nullable = false) //Null 이면 안됌
    private String title;
}

위 코드 처럼 도메인이 있으면 Hibernate에서 제공 해주는 JPA API를 사용하면 된다.

public interface PostRepository extends JpaRepository<Post, Long> {

}

JpaRepository를 상속 받을 인터페이스를 생성한다.

@PostMapping("/api/post")
public Post addPost(@RequestBody PostDto postDto) {

    Post post = new Post(postDto);
    return postRepository.save(post);
}

그리고 생성한 인터페이스를 사용해서 여러 메소드를 사용해주면 된다.

 

참조

https://dbjh.tistory.com/77

 

[Spring JPA] JPA 란?

이번 글에서는 JPA(Java Persistence API)가 무엇인지 알아보려고한다. JPA는 자바 진영에서 ORM(Object-Relational Mapping) 기술 표준으로 사용되는 인터페이스의 모음이다. 그 말은 즉, 실제적으로 구현된것이

dbjh.tistory.com

 

https://gmlwjd9405.github.io/2019/08/04/what-is-jpa.html

 

[JPA] JPA란 - Heee's Development Blog

Step by step goes a long way.

gmlwjd9405.github.io

 

----2022-06-04-----

반응형
Comments