Saya punya pertanyaan seperti di bawah ini:
- Apa perbedaan dari keduanya?
- Apakah keduanya didukung oleh semua database?
- Apakah JPA TransactionManager dan JTA TransactionManager berbeda?
Implementasi JPA memiliki pilihan untuk mengelola transaksi itu sendiri ( RESOURCE_LOCAL
), atau membuatnya dikelola oleh implementasi JTA server aplikasi.
Dalam kebanyakan kasus, RESOURCE_LOCAL baik-baik saja. Ini akan menggunakan transaksi tingkat JDBC dasar. Sisi negatifnya adalah bahwa transaksi tersebut bersifat lokal untuk unit persistensi JPA, jadi jika Anda menginginkan transaksi yang mencakup beberapa unit persistensi (atau database lain), RESOURCE_LOCAL mungkin tidak cukup baik.
JTA juga digunakan untuk mengelola transaksi di seluruh sistem seperti JMS dan JCA, tetapi itu adalah penggunaan yang cukup eksotis bagi kebanyakan dari kita.
Untuk menggunakan JTA, Anda memerlukan dukungannya di server aplikasi Anda, dan juga dukungan dari driver JDBC.
Sebagai tambahan jawaban lainnya
Berikut adalah kutipan dari artikel yang sangat berguna (diterbitkan di situs web Apache TomEE ), yang juga dapat membantu menjawab pertanyaan pertama OP (tautan ke artikel ada di bawah).
Siapa pun yang tertarik mempelajari Java Persistence API - bantulah diri Anda sendiri dan baca artikel lengkapnya di sini: Konsep JPA: JPA 101 .
sumber
transaction-type=RESOURCE_LOCAL
dan@PersistenceContext
dan@Transactional
dikelola oleh SpringResource_Local dan JTA adalah manajer transaksi (metode melakukan transaksi). Ini bukan milik database tetapi komponen yang bertanggung jawab untuk mengkoordinasikan transaksi. Manajer transaksi JPA dan JTA berbeda. Manajer transaksi JPA bertanggung jawab atas transaksi JPA dan Anda ingin menggunakannya jika Anda hanya melakukan transaksi JPA. Manajer transaksi JTA adalah manajer transaksi tujuan umum dan dapat meminta sumber daya lain seperti antrian JMS dalam transaksi. Biasanya kontainer Java EE menggunakan manajer transaksi JTA untuk EJB, entitas JPA, dll.
sumber
resource_local vs JTA tentang transaksi lokal vs transaksi global. Ini tentang bisakah kita mengelola banyak sumber daya dalam satu transaksi.
CMT vs BMT tentang siapa yang membuka dan menutup transaksi - pengembang aplikasi atau server aplikasi.
sumber