일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- WHATTIMEOFTHEDAY
- 미국영어연음
- 핸드캐리쿠리어차이점
- 비리짐
- 와끼
- 엑셀드래그단축키
- 슈퍼코딩
- 봉제용어
- 영어시간읽기
- 엑셀자동서식
- 40HQ컨테이너40GP컨테이너차이
- AATCC
- 비슬론지퍼
- 고급영어단어
- 자켓실측
- 필터링후복사붙여넣기
- 엑셀필터복사붙여넣기
- 요척합의
- 우레탄지퍼
- 클린코드
- 암홀트롭
- 나일론지퍼
- 웹API
- 헤이큐
- Armhole Drop
- MERN스택
- 40HQ컨테이너
- 지연환가료
- 미니마카
- TACKING
- Today
- Total
CASSIE'S BLOG
JPA는 인터페이스 본문
JPA는 Java Persistence API의 약어로, Java에서 관계형 데이터베이스를 사용하는 애플리케이션을 개발하기 위한 자바 표준 인터페이스입니다. JPA는 ORM(Object-Relational Mapping) 기술의 표준을 정의하고 있습니다.
주요 특징과 개념:
- ORM (Object-Relational Mapping): JPA는 자바 객체와 데이터베이스 간의 매핑을 담당합니다. 즉, 자바 객체를 관계형 데이터베이스의 테이블로 매핑하고, 객체 간의 관계를 SQL 쿼리 작성 없이 자동으로 처리합니다.
- Annotation 기반 설정: JPA는 주로 어노테이션(annotation)을 사용하여 매핑 정보를 제공합니다. 예를 들어, 엔터티 클래스에 @Entity, 기본 키에 @Id 등의 어노테이션을 사용하여 매핑 정보를 정의합니다.
- JPQL (Java Persistence Query Language): JPA는 객체 지향 쿼리 언어인 JPQL을 제공합니다. JPQL은 엔터티 객체를 대상으로 쿼리를 작성할 수 있어, 데이터베이스 종속적인 SQL을 사용하지 않고 객체 지향적인 쿼리를 수행할 수 있습니다.
- Entity와 EntityManager: JPA에서 관리되는 객체는 엔터티(Entity)라고 부릅니다. 엔터티의 생명주기는 EntityManager에 의해 관리되며, 데이터베이스와의 상호작용을 담당합니다.
- Cascade: JPA에서는 Cascade 옵션을 통해 부모 엔터티와 관련된 자식 엔터티에 대한 동작을 지정할 수 있습니다. 예를 들어, 부모 엔터티를 저장할 때 자동으로 관련된 자식 엔터티도 저장되도록 설정할 수 있습니다.
- Transaction 관리: JPA는 트랜잭션을 관리하여 데이터베이스에서 일어나는 모든 변경 사항이 원자적으로 수행되도록 지원합니다.
- Vendor-specific 구현체: JPA는 표준 인터페이스이므로, 각 데이터베이스 벤더는 자체 JPA 구현체를 제공할 수 있습니다. 대표적인 JPA 구현체로는 Hibernate, EclipseLink 등이 있습니다.
JPA는 Java에서 데이터베이스와의 상호작용을 표준화하고, 객체 지향 프로그래밍과 관계형 데이터베이스 간의 매핑을 효율적으로 처리하기 위한 강력한 도구입니다.
물론이죠! 아래는 간단한 JPA 예시 코드입니다. 이 예시에서는 간단한 Person 엔터티를 생성하고, 이를 JPA를 사용하여 데이터베이스에 저장하고 조회하는 과정을 보여줍니다. Hibernate를 JPA 구현체로 사용합니다.
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity
public class Person {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private int age;
// 생성자, 게터, 세터 등 생략
}
JPA를 사용한 데이터베이스 저장 및 조회:
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityTransaction;
import javax.persistence.Persistence;
import java.util.List;
public class JpaExample {
public static void main(String[] args) {
// EntityManagerFactory 생성
EntityManagerFactory emf = Persistence.createEntityManagerFactory("example");
// EntityManager 생성
EntityManager em = emf.createEntityManager();
// 트랜잭션 시작
EntityTransaction tx = em.getTransaction();
tx.begin();
try {
// 데이터베이스에 저장할 엔터티 생성
Person person = new Person();
person.setName("John Doe");
person.setAge(30);
// 엔터티를 데이터베이스에 저장
em.persist(person);
// JPQL을 사용하여 데이터베이스에서 엔터티 조회
List<Person> resultList = em.createQuery("SELECT p FROM Person p", Person.class).getResultList();
for (Person p : resultList) {
System.out.println("Person ID: " + p.getId() + ", Name: " + p.getName() + ", Age: " + p.getAge());
}
// 트랜잭션 커밋
tx.commit();
} catch (Exception e) {
// 트랜잭션 롤백
if (tx != null && tx.isActive()) {
tx.rollback();
}
e.printStackTrace();
} finally {
// EntityManager 및 EntityManagerFactory 종료
em.close();
emf.close();
}
}
}
위 코드에서는 Person 엔터티를 정의하고, 이를 JPA를 사용하여 데이터베이스에 저장하고 조회하는 과정을 담고 있습니다. 주의해야 할 점은 데이터베이스 연결 정보가 정의된 persistence.xml 파일이 필요하며, 이 예제에서는 "example"이라는 이름의 Persistence Unit을 사용한다고 가정하고 있습니다.
'PROGRAMMING > JAVA' 카테고리의 다른 글
printf와 형식 지정자(%s, %d) (1) | 2023.12.12 |
---|---|
[슈퍼코딩] 27강 클래스 정보 은닉 (0) | 2023.12.10 |
JAVA 필수개념 (0) | 2023.11.29 |
자바개발자를 위한 100가지 질문 정리 (2) | 2023.11.24 |
Swagger란? (1) | 2023.11.22 |