ORM : Object-Relational Mapping, 객체 관계 맵핑
Object : "객체"지향 언어 (자바, 파이썬)
Relational : "관계형" 데이터베이스 (H2, MySQL)
Mapping
반복적이고 번거로운 애플리케이션 단에서의 SQL 작업을 줄여주기 위해서 ORM 기술들이 등장 하게 됩니다.
JPA: Java Persistence API
자바 ORM 기술에 대한 표준 명세

- JPA는 애플리케이션과 JDBC 사이에서 동작되고 있습니다.
- JPA를 사용하면 DB 연결 과정을 직접 개발하지 않아도 자동으로 처리해줍니다.
- 또한 객체를 통해 간접적으로 DB 데이터를 다룰 수 있기 때문에 매우 쉽게 DB 작업을 처리할 수 있습니다.
- 하이버네이트(Hibernate)란?
- JPA 는 표준 명세이고, 이를 실제 구현한 프레임워크 중 사실상 표준이 하이버네이트입니다.
- 스프링 부트에서는 기본적으로 ‘하이버네이트’ 구현체를 사용 중입니다.
Entity: JPA에서 관리되는 클래스(객체)
Entity 클래스는 DB의 테이블과 매핑되어 JPA에 의해 관리됩니다.
@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 클래스로 지정할 수 있습니다.
- @Entity(name = "Memo") : Entity 클래스 이름을 지정할 수 있습니다. (default: 클래스명)
- JPA가 Entity 클래스를 인스턴스화 할 때 기본 생성자를 사용하기 때문에 반드시 현재 Entity 클래스에서 기본 생성자가 생성되고 있는지 확인해야 합니다.
- @Table : 매핑할 테이블을 지정해줍니다.
- @Table(name = "memo") : 매핑할 테이블의 이름을 지정할 수 있습니다. (default: Entity 명)
- @Id : 테이블의 기본 키를 지정해줍니다.
- 이 기본 키는 영속성 컨텍스트에서 Entity를 구분하고 관리할 때 사용되는 식별자 역할을 수행합니다.
- 따라서 기본 키 즉, 식별자 값을 넣어주지 않고 저장하면 오류가 발생합니다.
- @Column :
- @Column(name = "username") : 필드와 매핑할 테이블의 컬럼을 지정할 수 있습니다. (default: 객체의 필드명)
- @Column(nullable = false) : 데이터의 null 값 허용 여부를 지정할 수 있습니다. (default: true)
- @Column(unique = true) : 데이터의 중복 값 허용 여부를 지정할 수 있습니다. (default: false)
- @Column(length = 500) : 데이터 값(문자)의 길이에 제약조건을 걸 수 있습니다. (default: 255)
- @Id : 테이블의 기본 키를 지정해줍니다.
- 이 기본 키는 영속성 컨텍스트에서 Entity를 구분하고 관리할 때 사용되는 식별자 역할을 수행합니다.
- 따라서 기본 키 즉, 식별자 값을 넣어주지 않고 저장하면 오류가 발생합니다.
- @GeneratedValue 옵션을 추가하면 기본 키 생성을 DB에 위임할 수 있습니다.
- 여러가지 전략 중 IDENTITY 전략을 살펴보겠습니다.
- @GeneratedValue(strategy = GenerationType.IDENTITY**)**
- id bigint not null auto_increment : auto_increment 조건이 추가된 것을 확인할 수 있습니다.
- 해당 옵션을 추가해주면 개발자가 직접 id 값을 넣어주지 않아도 자동으로 순서에 맞게 기본 키가 추가됩니다.
'Spring > 팀스파르타' 카테고리의 다른 글
18-1. Persistence Context 와 Transaction (1) | 2024.11.05 |
---|---|
18. 영속성 컨텍스트(Persistance Context)와 트랜잭션(Transaction) (1) | 2024.11.02 |
16. IoC/DI 적용하기 + IoC Container와 Bean (0) | 2024.10.31 |
15. IoC와 DI (1) | 2024.10.30 |
14. 3 Layer Architecture (1) | 2024.10.28 |