관리 메뉴

CASSIE'S BLOG

JPA는 인터페이스 본문

PROGRAMMING/JAVA

JPA는 인터페이스

ITSCASSIE1107 2023. 11. 29. 14:20
JPA 뜻이 뭐야? 기술스택을 말하는 것 같은데?
 

JPA는 Java Persistence API의 약어로, Java에서 관계형 데이터베이스를 사용하는 애플리케이션을 개발하기 위한 자바 표준 인터페이스입니다. JPA는 ORM(Object-Relational Mapping) 기술의 표준을 정의하고 있습니다.

 

 

주요 특징과 개념:

  1. ORM (Object-Relational Mapping): JPA는 자바 객체와 데이터베이스 간의 매핑을 담당합니다. 즉, 자바 객체를 관계형 데이터베이스의 테이블로 매핑하고, 객체 간의 관계를 SQL 쿼리 작성 없이 자동으로 처리합니다.
  2. Annotation 기반 설정: JPA는 주로 어노테이션(annotation)을 사용하여 매핑 정보를 제공합니다. 예를 들어, 엔터티 클래스에 @Entity, 기본 키에 @Id 등의 어노테이션을 사용하여 매핑 정보를 정의합니다.
  3. JPQL (Java Persistence Query Language): JPA는 객체 지향 쿼리 언어인 JPQL을 제공합니다. JPQL은 엔터티 객체를 대상으로 쿼리를 작성할 수 있어, 데이터베이스 종속적인 SQL을 사용하지 않고 객체 지향적인 쿼리를 수행할 수 있습니다.
  4. Entity와 EntityManager: JPA에서 관리되는 객체는 엔터티(Entity)라고 부릅니다. 엔터티의 생명주기는 EntityManager에 의해 관리되며, 데이터베이스와의 상호작용을 담당합니다.
  5. Cascade: JPA에서는 Cascade 옵션을 통해 부모 엔터티와 관련된 자식 엔터티에 대한 동작을 지정할 수 있습니다. 예를 들어, 부모 엔터티를 저장할 때 자동으로 관련된 자식 엔터티도 저장되도록 설정할 수 있습니다.
  6. Transaction 관리: JPA는 트랜잭션을 관리하여 데이터베이스에서 일어나는 모든 변경 사항이 원자적으로 수행되도록 지원합니다.
  7. 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