JPA란?

Java Persistence API 이다.

 

Persistence(영속성)

 

영속성(persistence)은 데이터를 생성한 프로그램의 실행이 종료되더라도 사라지지 않는 데이터의 특성을 의미한다. 영속성은 파일 시스템, 관계형 테이터베이스 혹은 객체 데이터베이스 등을 활용하여 구현한다. 영속성을 갖지 않는 데이터는 단지 메모리에서만 존재하기 때문에 프로그램을 종료하면 모두 잃어버리게 된다. 결국 영속성은 특정 데이터 구조를 이전 상태로 복원할 수 있게 해주어 프로그램의 종료와 재개를 자유롭게 해준다.

출처: https://sugerent.tistory.com/587 [MISTERY]

 


 

의존성 설정

 <dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

 

 

어노테이션

 

@Entity

DB에 테이블을 생성해주는 어노테이션

import javax.persistence.Entity;
@Entity // User 클래스가 MySql에 테이블이 생성이 된다.
public class User {
	
	@Id
	private int id; // 시퀀스, auto-increment
	private String username; //아이디
	private String password;
	private String email;
	private Timestamp createDate;
}

 

MySql에 User 테이블이 생성 된다.


@Id

DB에 primary key 생성

import javax.persistence.Id;
	@Id //primary key
	private int id; // 시퀀스, auto-increment
	private String username; //아이디
	private String password;
	private String email;
	private Timestamp createDate;

@GeneratedValue

넘버링 전략

import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
	@Id //primary key
	@GeneratedValue(strategy = GenerationType.IDENTITY) //프로젝트에 연결된 DB의 전략을 따라감
	private int id; // 시퀀스, auto-increment
	private String username; //아이디
	private String password;
	private String email;
	private Timestamp createDate;

 

4가지 타입이 있다.

그 중 IDENTITY를 사용하면 프로젝트에 연결된 DB(필자는 mysql) 의 전략을 따라감

 

ex) 오라클의 경우 -> sequence , MySql의 경우 -> Auto Increment

 


 

 

 

@Column

DB에 Column에 해당하는 속성을 지정

import javax.persistence.Column;

속성은 다음과 같다.

 

결론

 JPA =

자바 프로그래밍을 할 때 영구적으로 데이터를 저장하기 위해 필요한 인터페이스 이다.

  • JPA는 ORM 기술이다.
  • JPA는 반복적인 CRUD 작업을 생략하게 해준다.
  • JPA는 DB와 OOP의 불일치성을 해결하기 위한 방법론을 제공한다.
  • JPA는 OOP의 관점에서 모델링을 할 수 있게 해준다. (상속, 콤포지션,연관관계)
  • 방언 처리가 용이하며 Migration하기 좋음, 유지 보수에도 좋다
  • JPA는 쉽지만 어렵다

 

출처 : https://getinthere.tistory.com/10

+ Recent posts