>데이터 베이스 >MySQL 튜토리얼 >JPA를 사용하여 Java에서 저장 프로시저를 어떻게 호출할 수 있습니까?

JPA를 사용하여 Java에서 저장 프로시저를 어떻게 호출할 수 있습니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2025-01-16 11:59:02499검색

How Can I Call Stored Procedures in Java Using JPA?

Java 및 JPA에서 저장 프로시저 호출

비즈니스 로직을 저장 프로시저에 저장하면 성능과 코드 유지 관리성이 향상됩니다. 이 기사에서는 JPA를 사용하여 Java에서 저장 프로시저를 호출하는 두 가지 방법인 CallableStatement 메소드와 JPA 2.1 StoredProcedureQuery를 살펴봅니다.

CallableStatement 메서드

CallableStatement 클래스는 저장 프로시저를 호출하기 위한 다양한 방법을 제공합니다. 이를 통해 입력 매개변수를 지정하고 출력 매개변수 또는 결과 세트를 검색할 수 있습니다. 그러나 SQL 유형과 Java 객체 간의 수동 매핑이 필요하므로 지루할 수 있습니다.

JPA 2.1 StoredProcedureQuery

JPA 2.1에는 저장 프로시저 호출에 대한 기본 지원이 도입되었습니다. StoredProcedureQuery 클래스는 입력 매개변수를 전달하고 결과 클래스 또는 resultSetMapping을 지정할 수 있도록 하여 이 프로세스를 단순화합니다.

JPA StoredProcedureQuery를 사용하여 "getEmployeeDetails" 저장 프로시저를 호출합니다.

<code class="language-java">Query query = em.createNativeQuery("{call getEmployeeDetails(?,?)}", EmployeeDetails.class)
    .setParameter(1, employeeId)
    .setParameter(2, companyId);

List<EmployeeDetails> result = query.getResultList();</code>

JPA를 사용하여 저장 프로시저 호출의 장점

  • 유형 안전성 및 자동 매핑: JPA는 SQL과 Java 유형 간의 변환을 처리하여 데이터 무결성을 보장합니다.
  • 간단한 API: StoredProcedureQuery 인터페이스는 저장 프로시저 결과를 실행하고 검색하는 프로세스를 단순화합니다.
  • 명명된 매개변수 지원: 혼동이나 오류를 방지하기 위해 NativeQuery에서 입력 매개변수의 이름을 명시적으로 지정할 수 있습니다.

저장 프로시저를 호출하는 SQL 문

저장 프로시저를 호출하는 올바른 SQL 문은 다음과 같습니다.

<code class="language-sql">{call getEmployeeDetails(?,?)}</code>

참고: 저장 프로시저 이름을 중괄호로 묶고 매개변수를 쉼표와 물음표(?)로 구분합니다.

기타 참고사항:

  • 저장 프로시저가 결과 집합을 반환하는 경우 단일 행만 예상하더라도 실패할 수 있으므로 getSingleResult()를 주의해서 사용하세요.
  • 결과 세트를 Java 객체에 매핑하려면 resultSetMapping 이름 또는 결과 클래스 세부 정보를 전달하세요.
  • 매개변수 이름이 모든 경우에 작동하지 않을 수 있으므로 대신 매개변수 인덱스를 사용해 보세요.

위 내용은 JPA를 사용하여 Java에서 저장 프로시저를 어떻게 호출할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.