JPA(Java Persistence API) / Entity 매핑

cheongyeong·2023년 10월 25일

엔티티(Entity) 객체와 데이터 베이스 테이블 간 매핑 /
엔티티(Entity) 필드와 컬럼간 매핑에서 사용하는 속성값들과 활용법

JPA (Java Persistence API) 란?

  • 자바 진영에서 ORM(Object Relational Mapping) 기술 표준으로 사용하는 인터페이스 모음.

  • 자바 어플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스.

  • 구현된 클래스와 매핑을 해주기 위해 사용되는 프레임워크.

  • 기존 JDBC만을 이용하는 경우 반복적이며 비슷한 SQL문을 많이 만들어야하지만, JSP를 사용할 경우 SQL문을 개발자가 만들지 않는다.

Hibernate란

  • JPA를 사용하기 위해서 JPA 를 구현한 구현체.
  • Entity 코드를 스캔하여 스키마 와 테이블을 자동으로 생성해준다.
  • 기본적인 CRUD를 제공한다.

@Entity
@Table(name = "member_table")
public class MemberEntity {
    @Id  
    @GeneratedValue(strategy = GenerationType.IDENTITY)     

    private Long id;

    @Column(unique = true) 
    private String memberEmail;

    @Column
    private String memberPassword;

    @Column
    private String memberName;
    }

@Entity

  • DB테이블에 대응하는 하나의 클래스.
  • @Entity 가 붙은 클래스는 JPA가 관리하며 DB의 테이블과 자바 클래스가 매핑이 된다.

Entity 사용 시 주의할 점

  • 기본 생성자 필수(파라미터 없는 public or protected)
  • final 클래스, enum, interface, inner 클래스를 사용하면 안된다.
  • 저장할 필드에 final 필드를 사용하면 안된다.

@Table

엔티티와 매핑할 테이블을 지정하는 애노테이션
name 이라는 속성을 통해 원하는 테이블명을 정할 수 있다.

@Column

컬럼 매핑을 위해 사용되며 아래는 함께 사용하는 속성들

  • nullable: NULL 값의 허용 여부
  • unique: 특정 걸럼에 UNIQUE 제약조건을 걸 때 사용
  • length: 문자 길이 제약조건, String 타입에만 사용

@Id 기본 키 매핑

  • id를 직접 할당하고 싶은 경우 @id만 사용
  • id를 자동 생성하고 싶은 경우 @id와 @GeneratedValue 함께 사용
  • Spring Boot 2.0부터는 auto_increment를 위해서 @GeneratedValue에 GenerationType.IDENTITY 옵션 추가 필수

public interface MemberRepository extends JpaRepository <MemberEntity, Long> {

}

Repository

  • JPA에서 DB 접근자를 의미한다.
  • 인터페이스로 생성 후 ,
    JpaRepository<Entity 클래스, PK 타입> 을 상송하면 기본적인 CRUD 메소드가 자동으로 생성된다.
profile
👩‍💻💡

0개의 댓글