소소한개발팁
article thumbnail
반응형

JPA 기본 개념과 활용 방법

JPA(Java Persistence API)는 자바 애플리케이션에서 관계형 데이터베이스를 조작하고 관리하는 자바 ORM(Object-Relational Mapping) 기술입니다. 

 

JPA란 무엇인가요?

JPA는 객체와 관계형 데이터베이스 간의 매핑을 통해 개발자가 SQL 쿼리를 직접 작성하지 않고도 데이터를 관리할 수 있는 기술입니다. 객체 지향적인 코드 작성을 통해 생산성을 향상시키고, 데이터베이스 종속성을 최소화하여 유지보수를 쉽게 할 수 있게 해줍니다.

 

JPA의 주요 개념

엔티티(Entity)

 

JPA - 엔티티 매핑

@Entity 어노테이션 JPA에서 엔티티를 정의하기 위해 @Entity 어노테이션을 사용합니다. 이 어노테이션을 클래스 위에 붙여 해당 클래스가 데이터베이스의 테이블과 매핑될 엔티티임을 선언합니다.

devlopjeong12.tistory.com

엔티티는 데이터베이스의 테이블과 매핑되는 자바 클래스입니다. @Entity 어노테이션을 사용하여 엔티티 클래스로 지정하며, 필드와 컬럼을 매핑하기 위한 어노테이션들을 사용합니다.

 

@Entity
public class Product {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;
    private double price;
    // ...
}

 

관계(Relationship) 매핑

 

JPA - 연관관계

연관관계의 종류 JPA에서는 일대일, 일대다, 다대일, 다대다 등 다양한 종류의 연관관계를 지원합니다. @OneToOne, @OneToMany, @ManyToOne, @ManyToMany 등의 어노테이션을 사용하여 연관관계를 매핑합니다.

devlopjeong12.tistory.com

JPA를 사용하면 엔티티 간의 관계를 객체로 표현하고 매핑할 수 있습니다. 일대일, 일대다, 다대일, 다대다 관계를 정의하고 @OneToOne, @OneToMany, @ManyToOne, @ManyToMany 등의 어노테이션을 활용하여 관계를 설정합니다.

 

영속성 컨텍스트(Persistence Context)

 

JPA - 영속성

JPA 영속성(Persistence)이란? 영속성은 JPA에서 개체(엔티티)가 데이터베이스에 저장되고 관리되는 상태를 나타냅니다. JPA에서 영속성을 관리하는 것은 엔티티의 생명주기와 관련이 있으며, 아래와

devlopjeong12.tistory.com

영속성 컨텍스트는 JPA에서 엔티티의 상태를 관리하는 환경을 말합니다. 엔티티를 조회하거나 변경할 때 영속성 컨텍스트에 저장되며, 데이터베이스와의 동기화는 JPA가 관리합니다. 이를 통해 엔티티의 생명주기를 관리할 수 있습니다.

 

 

반응형

 

JPA 활용 방법

엔티티 생성과 저장

EntityManagerFactory emf = Persistence.createEntityManagerFactory("my-pu");
EntityManager em = emf.createEntityManager();

em.getTransaction().begin();
Product product = new Product();
product.setName("New Product");
product.setPrice(99.99);
em.persist(product);
em.getTransaction().commit();

 

JPQL 쿼리 작성

TypedQuery<Product> query = em.createQuery("SELECT p FROM Product p WHERE p.price > :price", Product.class);
query.setParameter("price", 50.0);
List<Product> expensiveProducts = query.getResultList();

 

관계 매핑 활용

@Entity
public class Order {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    
    @OneToMany(mappedBy = "order")
    private List<Product> products;
    // ...
}

 

 

반응형

'컴퓨터 언어 > Java' 카테고리의 다른 글

JPA - 주요 엔티티 12가지  (0) 2023.08.29
JPA - 엔티티 매핑  (0) 2023.08.29
Project Jigsaw 사용 방법  (0) 2023.07.09
Stream  (0) 2023.07.06
Sliding Window 알고리즘  (0) 2023.04.27
profile

소소한개발팁

@개발자 뱅

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!