> Java > java지도 시간 > Java 개발: 데이터베이스 쿼리 및 지속성을 위해 JPA를 사용하는 방법

Java 개발: 데이터베이스 쿼리 및 지속성을 위해 JPA를 사용하는 방법

WBOY
풀어 주다: 2023-09-21 08:15:39
원래의
1002명이 탐색했습니다.

Java 개발: 데이터베이스 쿼리 및 지속성을 위해 JPA를 사용하는 방법

Java 개발: 데이터베이스 쿼리 및 지속성을 위해 JPA를 사용하는 방법

JPA(Java Persistence API)는 데이터베이스 지속성을 관리하기 위해 Java EE 사양에 정의된 API 세트입니다. 이는 데이터베이스 작업을 수행하는 객체 지향 방식을 제공하므로 개발자는 데이터베이스 쿼리 및 데이터 지속성을 보다 쉽게 ​​수행할 수 있습니다. 이 기사에서는 데이터베이스 쿼리 및 지속성을 위해 JPA를 사용하는 방법을 소개하고 자세한 코드 예제를 제공합니다.

데이터베이스 쿼리에 JPA 사용
데이터베이스 쿼리에 JPA를 사용하기 전에 엔터티 클래스를 정의하고 엔터티 클래스와 데이터베이스 테이블 간의 매핑 관계를 정의해야 합니다. 다음은 예제 엔터티 클래스에 대한 코드입니다.

@Entity
@Table(name = "t_student")
public class Student {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(name = "name")
    private String name;

    @Column(name = "age")
    private Integer age;

    // getters and setters
}
로그인 후 복사

위 코드에서 JPA 주석 @Entity는 클래스가 엔터티 클래스임을 나타내는 데 사용되며 @Table은 해당 데이터베이스 테이블 이름을 지정하고 @Id 및 @는 다음과 같습니다. 생성된 값은 기본 키 및 자동 생성 전략을 지정하는 데 사용되며, @Column은 매핑된 데이터베이스 열을 지정하는 데 사용됩니다.

다음으로 EntityManager 개체를 사용하여 데이터베이스 쿼리를 수행할 수 있습니다. 다음은 ID를 기준으로 학생 정보를 조회하는 샘플 코드입니다.

public Student findStudentById(Long id) {
    EntityManager entityManager = entityManagerFactory.createEntityManager();
    return entityManager.find(Student.class, id);
}
로그인 후 복사

위 코드에서는 엔터티 관리자 객체의 find 메소드를 호출하고 엔터티 클래스와 ID를 전달하여 조회 작업을 수행합니다. 반환된 결과는 쿼리된 엔터티 개체입니다.

ID 기반 쿼리 외에도 JPA는 조건에 따라 쿼리할 수 있는 풍부한 쿼리 구문과 메서드도 제공합니다. 다음은 이름을 기준으로 학생 정보를 쿼리하는 샘플 코드입니다.

public List<Student> findStudentsByName(String name) {
    EntityManager entityManager = entityManagerFactory.createEntityManager();
    CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
    CriteriaQuery<Student> criteriaQuery = criteriaBuilder.createQuery(Student.class);

    Root<Student> root = criteriaQuery.from(Student.class);
    criteriaQuery.select(root).where(criteriaBuilder.equal(root.get("name"), name));

    TypedQuery<Student> query = entityManager.createQuery(criteriaQuery);
    return query.getResultList();
}
로그인 후 복사

위 코드에서는 CriteriaQuery, CriteriaBuilder 및 기타 클래스를 사용하여 복잡한 쿼리 문을 작성할 수 있습니다. 예제에서는 전달된 name 파라미터를 통해 조건을 만족하는 학생 정보를 조회합니다.

데이터 지속성을 위해 JPA 사용
데이터 지속성을 위해 JPA를 사용하기 전에 엔터티 클래스와 엔터티 클래스와 데이터베이스 테이블 간의 매핑 관계도 정의해야 합니다. 다음은 학생 정보를 데이터베이스에 유지하는 코드의 예입니다.

public void saveStudent(Student student) {
    EntityManager entityManager = entityManagerFactory.createEntityManager();
    EntityTransaction transaction = entityManager.getTransaction();

    try {
        transaction.begin();
        entityManager.persist(student);
        transaction.commit();
    } catch (Exception e) {
        if (transaction != null) {
            transaction.rollback();
        }
        e.printStackTrace();
    } finally {
        entityManager.close();
    }
}
로그인 후 복사

위 코드에서는 먼저 엔터티 관리자 개체의 getTransaction 메서드를 통해 트랜잭션 개체를 얻습니다. 그런 다음 persist 메소드를 호출하여 엔터티 객체가 데이터베이스에 유지됩니다. 마지막으로 트랜잭션 커밋 및 롤백 작업은 try-catch-finally 블록에서 수행됩니다.

JPA는 삽입 작업 외에도 업데이트 및 삭제 작업도 제공합니다. 다음은 학생 정보를 업데이트하는 예제 코드입니다.

public void updateStudent(Student student) {
    EntityManager entityManager = entityManagerFactory.createEntityManager();
    EntityTransaction transaction = entityManager.getTransaction();

    try {
        transaction.begin();
        entityManager.merge(student);
        transaction.commit();
    } catch (Exception e) {
        if (transaction != null) {
            transaction.rollback();
        }
        e.printStackTrace();
    } finally {
        entityManager.close();
    }
}
로그인 후 복사

위 코드에서는 merge 메소드를 사용하여 학생 정보를 업데이트합니다.

요약
이 글에서는 데이터베이스 쿼리 및 지속성을 위해 JPA를 사용하는 방법을 소개하고 자세한 코드 예제를 제공합니다. JPA를 사용하면 개발자는 데이터베이스 작업을 보다 쉽게 ​​수행하고 개발 효율성을 높일 수 있습니다. 물론 JPA에는 그 밖에도 많은 기능과 특징이 있으므로 독자들이 이에 대해 자세히 알아보고 유연하게 사용할 수 있기를 바랍니다.

위 내용은 Java 개발: 데이터베이스 쿼리 및 지속성을 위해 JPA를 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿