집 >데이터 베이스 >MySQL 튜토리얼 >Java에서 저장 프로시저를 호출할 때 JPA와 CallableStatement는 어떻게 다릅니까?
Java, JPA 및 저장 프로시저 상호 작용: 비교
Java 애플리케이션은 여러 가지 방법을 사용하여 저장 프로시저와 상호 작용할 수 있습니다. 이 기사에서는 JPA와 CallableStatement
에 중점을 두고 접근 방식, 이점 및 SQL 구문을 비교합니다.
JPA와 CallableStatement
: 자세히 살펴보기
JPA 2.1에는 저장 프로시저 호출 지원이 도입되었습니다. CallableStatement
과 달리 JPA는 매개변수 매핑을 자동으로 처리하여 프로세스를 단순화하여 더 깔끔하고 유지 관리하기 쉬운 코드를 만듭니다.
저장 프로시저 호출: SQL 구문
JPA로 getEmployeeDetails
저장 프로시저를 호출하려면 다음 SQL을 사용하세요.
<code class="language-sql">{call getEmployeeDetails(?,?)}</code>
?
자리 표시자는 입력 매개변수(여기서는 employeeId
및 companyId
)를 나타냅니다.
JPA 예시
이 코드 조각은 JPA의 저장 프로시저 호출 기능을 보여줍니다.
<code class="language-java">Query query = em.createNativeQuery("{call getEmployeeDetails(?,?)}", EmployeeDetails.class) .setParameter(1, employeeId) .setParameter(2, companyId); List<EmployeeDetails> result = query.getResultList();</code>
CallableStatement
접근
반대로 CallableStatement
에는 수동 매개변수 등록 및 실행이 필요합니다.
<code class="language-java">CallableStatement cstmt = connection.prepareCall("{call getEmployeeDetails(?,?)}"); cstmt.setInt(1, employeeId); cstmt.setInt(2, companyId); ResultSet rs = cstmt.executeQuery();</code>
JPA 모범 사례
{call sp_name(?,?)}
.resultSetMapping
을 정의하거나 결과 클래스를 지정하세요.중요 고려사항
JPA의 저장 프로시저 호출 기능은 CallableStatement
에 비해 제한이 있습니다. 특히, 직접 OUT 매개변수 액세스는 지원되지 않으며, 여러 결과 세트를 반환하는 것은 허용되지 않습니다.
위 내용은 Java에서 저장 프로시저를 호출할 때 JPA와 CallableStatement는 어떻게 다릅니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!