1. ORM 이란 무엇인가?
Java와 MySQL 사이의 다리, 객체와 관계형데이터베이스 간의 데이터를 1:1로 매핑해주는 기술이다.
- 객체지향적인 데이터 조작이 가능하다.
- 반복적인 SQL 작성 없이 CRUD 작업이 가능하다.
- 특정 DBMS에 종속되지 않고 코드 재사용성이 높다.
2. ORM 동작원리
- Entity 클래스: 실제 DB의 테이블과 매핑되는 자바 클래스
- Field: 해당 클래스 내부의 멤버 변수는 테이블의 열(Column)과 매핑
- 테이블의 **각 행(Row)**은 자바의 객체 인스턴스에 해당
CREATE TABLE customer (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50),
email VARCHAR(100)
);
이와 매핑되는 Java 코드는 다음과 같이 작성한다.
@Entity
public class Customer {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
private String name;
private String email;
}
3. JPA(Java Persistence API)란?
PA는 자바 진영에서 제공하는 표준 ORM API다. Hibernate, EclipseLink 등이 JPA의 구현체로 존재하며, 스프링 부트에서는 주로 Hibernate가 기본 사용된다. JPA는 아래와 같은 개념들을 중심으로 동작한다:
- 영속성 컨텍스트(Persistence Context): 엔티티 객체의 생명 주기를 관리하는 공간으로, DB와 연결된 상태에서 객체를 캐싱하고 변경을 추적한다.
- 엔티티(Entity): 테이블과 매핑되는 클래스
- 리포지토리(Repository): 객체를 DB에 저장하거나 조회하는 인터페이스
4. 주요 Annotation 정리
ORM에서는 여러 애너테이션을 통해 객체와 DB 간 매핑을 선언적으로 설정할 수 있다.
- @Entity: 이 클래스가 테이블과 매핑됨을 선언
- @Id: 기본키(PK) 지정
- @GeneratedValue: 기본키 생성 전략 설정 (GenerationType.IDENTITY는 MySQL의 AUTO_INCREMENT)
- @Column: 열(Column)과 매핑되며, name, nullable, length, unique 등의 옵션을 통해 제약 조건 설정 가능
- @Table: 매핑될 테이블 이름 지정 (기본은 클래스명과 동일)
@Entity(name = "user_table")
@Table(name = "user_table")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "user_name", nullable = false, unique = true, length = 50)
private String username;
}
'웹개발 > SpringBoot' 카테고리의 다른 글
| Controller Mapping Annotation (0) | 2025.05.23 |
|---|---|
| Jpa Repository (0) | 2025.05.22 |
| SpringBoot 활용 (0) | 2025.05.20 |
| IoC(제어의 역전),DI(의존성 주입) (1) | 2025.05.19 |
| 서블릿(Servlet)vs 스프링부트(SpringBoot) (1) | 2025.05.18 |