Java, JPA dan Interaksi Prosedur Tersimpan: Perbandingan
Aplikasi Java boleh berinteraksi dengan prosedur tersimpan menggunakan beberapa kaedah; artikel ini memfokuskan pada JPA dan CallableStatement
, membandingkan pendekatan, faedah dan sintaks SQL mereka.
JPA dan CallableStatement
: Pandangan Terperinci
JPA 2.1 memperkenalkan sokongan panggilan prosedur tersimpan. Tidak seperti CallableStatement
, JPA memudahkan proses dengan mengendalikan pemetaan parameter secara automatik, membawa kepada kod yang lebih bersih dan boleh diselenggara.
Invokasi Prosedur Tersimpan: Sintaks SQL
Untuk menggunakan getEmployeeDetails
prosedur tersimpan dengan JPA, gunakan SQL ini:
<code class="language-sql">{call getEmployeeDetails(?,?)}</code>
Pemegang tempat ?
mewakili parameter input (di sini, employeeId
dan companyId
).
Contoh JPA Ilustrasi
Coretan kod ini menunjukkan kefungsian panggilan prosedur tersimpan 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
Pendekatan
Sebaliknya, CallableStatement
memerlukan pendaftaran parameter manual dan pelaksanaan:
<code class="language-java">CallableStatement cstmt = connection.prepareCall("{call getEmployeeDetails(?,?)}"); cstmt.setInt(1, employeeId); cstmt.setInt(2, companyId); ResultSet rs = cstmt.executeQuery();</code>
Amalan Terbaik JPA
{call sp_name(?,?)}
.resultSetMapping
atau tentukan kelas hasil.Pertimbangan Penting
Keupayaan panggilan prosedur tersimpan JPA mempunyai had berbanding CallableStatement
. Khususnya, akses parameter terus OUT tidak disokong dan mengembalikan berbilang set hasil tidak dibenarkan.
Atas ialah kandungan terperinci Bagaimanakah JPA dan CallableStatement Berbeza Apabila Memanggil Prosedur Tersimpan di Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!