오늘은 JPA와 Entity에 대해 학습했다. JPA는 자바에서 객체와 데이터베이스 간의 관계를 매핑하는 표준 명세로, SQL을 직접 작성하지 않고도 객체 지향적으로 데이터베이스와 상호작용할 수 있다. 이번 학습을 통해 JPA의 주요 어노테이션과 Entity 설정 방법을 이해하게 되었다.
ORM(Object-Relational Mapping)은 객체 지향 언어에서 사용하는 객체와 관계형 데이터베이스의 테이블 간의 매핑을 처리해주는 기술이다. 이를 통해 개발자는 SQL을 직접 작성하지 않고도 자바 객체만으로 데이터베이스 작업을 수행할 수 있다.
JPA(Java Persistence API)는 자바의 ORM 기술 표준으로, 애플리케이션에서 데이터베이스와 상호작용할 때 필요한 복잡한 SQL 작업을 간소화한다. JPA는 자바 애플리케이션과 데이터베이스 사이에서 객체와 테이블을 매핑하여 데이터를 처리할 수 있게 해준다.
Entity는 JPA에서 데이터베이스의 테이블과 매핑되는 객체이다. 즉, 데이터베이스의 행(row)을 자바 객체로 표현한 것이다. 아래는 Memo라는 테이블과 매핑된 Memo 엔터티 클래스의 예시이다.
@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;
}
@Entity : JPA가 관리할 수 있는 Entity 클래스로 지정할 수 있다.
@Table : Entity 클래스와 매핑될 데이터베이스 테이블을 지정한다.
@Column : 클래스의 필드를 데이터베이스 컬럼과 매핑한다.
@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를 사용하여 기본 키를 자동으로 관리할 수 있는 점이 매우 유용했다. 앞으로 실습을 통해 더 복잡한 데이터베이스 작업을 효율적으로 처리할 수 있을 것 같다.