Spring Boot 강좌 11 : JPA와 Entity 이해하기

coldrice99·2024년 10월 11일
0

05. JPA와 Entity

오늘은 JPAEntity에 대해 학습했다. JPA는 자바에서 객체와 데이터베이스 간의 관계를 매핑하는 표준 명세로, SQL을 직접 작성하지 않고도 객체 지향적으로 데이터베이스와 상호작용할 수 있다. 이번 학습을 통해 JPA의 주요 어노테이션과 Entity 설정 방법을 이해하게 되었다.

1. ORM이란?

ORM(Object-Relational Mapping)은 객체 지향 언어에서 사용하는 객체와 관계형 데이터베이스의 테이블 간의 매핑을 처리해주는 기술이다. 이를 통해 개발자는 SQL을 직접 작성하지 않고도 자바 객체만으로 데이터베이스 작업을 수행할 수 있다.

2. JPA란?

JPA(Java Persistence API)는 자바의 ORM 기술 표준으로, 애플리케이션에서 데이터베이스와 상호작용할 때 필요한 복잡한 SQL 작업을 간소화한다. JPA는 자바 애플리케이션과 데이터베이스 사이에서 객체와 테이블을 매핑하여 데이터를 처리할 수 있게 해준다.

3. Entity란?

Entity는 JPA에서 데이터베이스의 테이블과 매핑되는 객체이다. 즉, 데이터베이스의 행(row)을 자바 객체로 표현한 것이다. 아래는 Memo라는 테이블과 매핑된 Memo 엔터티 클래스의 예시이다.

예시 코드 (Memo Entity):

@Entity // JPA가 관리할 수 있는 Entity 클래스 지정
@Table(name = "memo") // 매핑할 테이블의 이름을 지정
public class Memo {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY) // 기본 키 자동 생성
    private Long id;

    // nullable: null 허용 여부
    // unique: 중복 허용 여부 (false 일때 중복 허용)
    @Column(name = "username", nullable = false, unique = true) 
    private String username;

    // length: 컬럼 길이 지정
    @Column(name = "contents", nullable = false, length = 500) 
    private String contents;
}

4. 주요 어노테이션 설명

  • @Entity : JPA가 관리할 수 있는 Entity 클래스로 지정할 수 있다.

    • @Entity(name = "Memo") : Entity 클래스의 이름을 지정할 수 있다. (default: 클래스명)
    • JPA는 기본 생성자를 사용하여 Entity 클래스를 인스턴스화하므로 기본 생성자가 반드시 필요하다.
  • @Table : Entity 클래스와 매핑될 데이터베이스 테이블을 지정한다.

    • @Table(name = "memo") : 매핑할 테이블의 이름을 지정할 수 있다. (default: Entity 명)
  • @Column : 클래스의 필드를 데이터베이스 컬럼과 매핑한다.

    • @Column(name = "username") : 필드와 매핑할 테이블 컬럼을 지정한다. (default: 필드명)
    • @Column(nullable = false) : 컬럼에 null 값을 허용할지 여부를 설정한다. (default: true)
    • @Column(unique = true) : 중복된 값을 허용할지 여부를 설정한다. (default: false)
    • @Column(length = 500) : 컬럼의 문자 길이를 설정한다. (default: 255)
  • @Id : Entity 클래스에서 기본 키를 설정한다. 기본 키는 데이터베이스에서 각 행을 고유하게 구분하기 위해 사용된다. JPA는 이 식별자를 사용하여 각 Entity 객체를 관리한다.

    • 기본 키 값이 없으면 저장 시 오류가 발생한다.
  • @GeneratedValue(strategy = GenerationType.IDENTITY) : 기본 키를 자동으로 생성하는 전략을 설정할 수 있다.

    • IDENTITY 전략은 데이터베이스에서 자동으로 기본 키 값을 생성하는 방식으로, auto_increment와 같은 기능을 한다.

    • 이 옵션을 사용하면 개발자가 직접 id 값을 설정할 필요 없이, 데이터베이스가 자동으로 순서에 맞게 기본 키를 할당한다.

      id bigint not null auto_increment
    • 위와 같이 SQL에서 auto_increment 조건이 추가된 것을 확인할 수 있다.

느낀 점:

이번 학습을 통해 JPA의 Entity 설정과 주요 어노테이션의 사용법을 이해할 수 있었다. 특히, @Id@GeneratedValue를 사용하여 기본 키를 자동으로 관리할 수 있는 점이 매우 유용했다. 앞으로 실습을 통해 더 복잡한 데이터베이스 작업을 효율적으로 처리할 수 있을 것 같다.


https://github.com/coldrice99/JPA-CORE.git

profile
서두르지 않으나 쉬지 않고

0개의 댓글