jhhan의 블로그

Spring_JPA 본문

Spring

Spring_JPA

jhhan000 2020. 2. 27. 17:09

일단은 JPA의 기본에 대해 쓸려고 합니다.

자세한 부분을 알고 싶다면 다른 글을 찾아보시는 걸 추천합니다.

 

JPA(Java Persistent API)

  • Java의 영속성 관리와 ORM을 위한 표준 기술입니다.
  • 기존 EJB ORM이던 Entity Bean을 JPA로 바꾼 것입니다.
  • ORM 표준 기술로 Hibernate, OpenJPA, EclipseLink, TopLink, Essentials 같은 구현체가 있고, 이에 표준 인터페이스가 JPA입니다.

ORM(Object Relational Mapping)

  • RDB 테이블을 객체지향적으로 사용하기 위한 기술입니다.
  • ORM을 사용해서 RDB와 오브젝트 사이에 존재하는 개념과 접근을 객체지향적으로 다루기 위한 기술입니다.

 

JPA의 장점&단점

장점

  • 데이터 관리가 객체지향적 -> 비즈니스 로직에 집중이 가능하고, 객체지향적 개발이 가능하다.
  • 테이블 생성, 변경, 관리가 쉬운 편이다.

단점

  • JPA에 대해 잘 이해하고 있어야 한다.
  • 그렇지 않다면 데이터 손실, 성능 문제가 생길 수 있다.

 

소스코드 상 적용되는 애너테이션

1. @Entity

  • 특정 DB Table과 매핑되는 클래스에 붙여서 사용합니다.
  • 보통 클래스와 같은 이름을 사용합니다.
  • @Entity(name="MyAccount")같은 형식으로 변경이 가능합니다.

2. @Table

  • RDBMS 안의 릴레이션 스키마에 대응되는 이름입니다.
  • @Table(name = "myAccount")같은 형식의 어노테이션을 붙여 Entity와 대응되는 테이블명을 명시할 수 있습니다.

3. @Id

  • DB Table에서 ID column에 해당되는 필드에 사용이 됩니다.
  • Primary key를 매핑할 때 사용합니다.

4. @Column

  • 멤버 변수와 DB Table의 컬럼에 매핑합니다.
  • @Entity가 붙어있는 클래스이면 기본적으로 부여됩니다.

5. @GeneratedValue

  • auto_increment에 대응되는 정보에 사용됩니다.

6. @Temporal

  • 시간을 나타내는 데이터를 각 DBMS에서 제공하는 시간 관련 데이터와 매핑합니다.

7. @Transient

  • DB컬럼과 매핑하지 않고 싶은 멤버 변수에 사용됩니다.

8. EntityManager 인터페이스

  • JPA의 핵심
  • 이 인터페이스의 구현체를 통해 DB와 자바 객체 사이의 데이터 교환이 이루어진다.

 

JPA 처리 Repository - 4가지가 있습니다.

  • Repository<T,ID>
  • CrudRepository<T,ID>
  • PagingAndSortingRepository<T,ID>
  • JpaRepository<T,ID>

 

JPA에 관련해서는 꾸준히 추가하도록 노력하겠습니다.

'Spring' 카테고리의 다른 글

Spring_Security 응용 - 로그인 페이지 만들기(1)  (0) 2020.03.03
Spring - Error_Page  (0) 2020.03.03
Spring ThymeLeaf(타임리프)(2)  (1) 2020.02.27
Spring ThymeLeaf(타임리프)(1)  (0) 2020.02.25
Spring 주요 개념에 대해  (0) 2020.02.24