반응형
SMALL
JPA는 Java Persistence API의 약자로, 자바에서 객체와 관계형 데이터베이스를 쉽게 연결하고, 관리하기 위해 만들어진 ORM(Object Relational Mapping) 표준 인터페이스 입니다. JPA는 객체 지향 프로그래밍과 관계형 데이터베이스 간의 불일치를 해결하고, 개발자가 직접 SQL을 작성하지 않아도 데이터를 저장하고 관리할 수 있도록 돕습니다.
JPA 목적과 역할
- 객체와 데이터베이스의 매핑
- JPA는 자바 객체(엔티티)와 데이터베이스 테이블을 매핑하여, 자바 클래스와 관계형 데이터베이스 간의 데이터 변환을 자동으로 처리합니다.
- 자바 객체의 필드가 데이터베이스의 열과 자동으로 연결됩니다.
- 데이터베이스 접근 코드 단순화:
- JPA는 @ENTITY, @TABLE, @COLUMN 같은 어노테이션을 사용하여 매핑 설정을 간편하게 할 수 있습니다.
- 데이터베이스의 CRUD(CREATE, READ, UPDATE, DELETE) 작업을 직접 SQL로 작성할 필요 없이 자바 코드로 간단히 처리할 수 있습니다.
- 데이터베이스의 독립성:
- JPA는 특정 데이터베이스에 의존하지 않고, 개발자가 JPA 인터페이스를 사용하여 코드를 작성할 수 있습니다.
- 이를 통해 애플리케이션이 데이터베이스를 변경하더라도 JPA 구현체만 교체하면 쉽게 호환할 수 있습니다.
JPA 사용 예
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
@Entity // 이 클래스가 JPA 엔티티임을 선언
public class User {
@Id // 기본 키로 설정
@GeneratedValue(strategy = GenerationType.IDENTITY) // 키 생성 전략
private Long id;
private String name;
private String email;
// 기본 생성자, getter 및 setter는 생략
}
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
public class JpaExample {
public static void main(String[] args) {
// 엔티티 매니저 생성
EntityManagerFactory emf = Persistence.createEntityManagerFactory("myJpaUnit");
EntityManager em = emf.createEntityManager();
em.getTransaction().begin(); // 트랜잭션 시작
User user = new User();
user.setName("John Doe");
user.setEmail("john@example.com");
em.persist(user); // User 객체를 데이터베이스에 저장
em.getTransaction().commit(); // 트랜잭션 커밋
em.close();
emf.close();
}
}
이 코드에서 EntityManager는 JPA가 데이터베이스와 상호작용할 수 있도록 돕는 핵심 객체입니다. em.persist(user);를 호출하면 User 객체가 데이터베이스에 저장됩니다.
요약하자면, JPA는 자바 애플리케이션에서 객체와 관계형 데이터베이스 간의 매핑을 표준화한 API로, JPA를 통해 ORM 기능을 사용하여 데이터베이스 작업을 간편하게 할 수 있습니다.
2024.10.30 - [cs정리] - SPRING BOOT ORM이란?
2024.10.30 - [cs정리] - ORM 프레임워크 - HIBERNATE, MYBATIS
반응형
LIST
'cs정리' 카테고리의 다른 글
스프링 빈 주입시 생기는 문제들 (0) | 2024.11.09 |
---|---|
SPRING BEAN이란 (0) | 2024.11.09 |
ORM 구현체- HIBERNATE, MYBATIS (2) | 2024.10.30 |
SPRING BOOT ORM이란? (0) | 2024.10.30 |
자바 추상클래스와 인터페이스 차이 (0) | 2024.10.29 |