Saya mengalami kesulitan memutuskan apakah saya harus tetap dengan Hibernate untuk proyek baru, atau membuat saya basah dengan JPA dan implementasi Data Spring baru.
Apakah kerangka kerja Data Spring ditujukan untuk proyek besar atau proyek kecil dengan persyaratan kueri sederhana?
Meskipun saya pasti melihat keuntungan dalam pengurangan kode dengan menggunakan @Query
anotasi, apa yang Anda lakukan untuk permintaan dinamis? Bagaimana ketika Anda ingin menerapkan metode save () yang cukup rumit?
Dokumentasi mengatakan untuk membuat antarmuka Custom dan implementasi yang mengimplementasikan repositori utama Anda, tetapi bagaimana jika Anda perlu mengakses metode super apa pun pada repositori crud itu sendiri? Repositori crud mengimplementasikan yang kustom - bukan sebaliknya. Sepertinya desain yang aneh.
Saya sangat tidak yakin apakah kerangka kerja ini akan memenuhi tantangan aplikasi yang kompleks dan besar. Saya tidak pernah mengalami banyak masalah dengan Hibernate, dan saya mempertimbangkan untuk tetap menggunakan yang lama dan andal daripada menggunakan Spring Data JPA.
Apa yang harus saya lakukan? Apa komplikasi dan biaya yang tidak terduga yang akan saya temui jika saya menggunakan Spring Data JPA?
Jawaban:
Jadi,
spring-data
lakukan beberapa sihir tambahan yang membantu dengan pertanyaan kompleks. Ini aneh pada awalnya dan Anda benar-benar melewatkannya di dokumen tetapi sangat kuat dan berguna.Ini melibatkan pembuatan custom
Repository
dan `RepositoryImpl 'kustom dan memberitahu Spring di mana menemukannya. Berikut ini sebuah contoh:Kelas konfigurasi -
arahkan ke konfigurasi xml Anda yang masih dibutuhkandengan anotasi yang menunjuk ke paket repositori Anda (sekarang mencari*Impl
kelas secara otomatis):jpa-repositories.xml - beri tahu diSpring
mana menemukan repositori Anda. Katakan jugaSpring
untuk mencari repositori khusus denganCustomImpl
nama file:MyObjectRepository
- ini adalah tempat Anda dapat memasukkan metode kueri beranotasi dan tidak berotot. Perhatikan bagaimana antarmuka repositori ini memperluasnyaCustom
:MyObjectRepositoryCustom
- metode repositori yang lebih kompleks dan tidak dapat ditangani dengan permintaan sederhana atau anotasi:MyObjectRepositoryCustomImpl
- di mana Anda benar-benar menerapkan metode-metode itu dengan autowiredEntityManager
:Hebatnya, ini semua datang bersama-sama dan metode dari kedua antarmuka (dan antarmuka CRUD, Anda menerapkan) semua muncul ketika Anda melakukannya:
Kamu akan lihat:
Ini benar-benar bekerja. Dan Anda mendapatkan satu antarmuka untuk query.
spring-data
benar-benar siap untuk aplikasi besar. Dan semakin banyak pertanyaan yang bisa Anda buat menjadi sederhana atau anotasi, semakin baik Anda.Semua ini didokumentasikan di situs Spring Data Jpa .
Semoga berhasil.
sumber
JpaRepository
->MyJpaRepository
. Anda juga harus membuatMyJpaRepositoryFactoryBean
tetapi jika Anda mengatur semuanya dengan benar, Anda dapat mengganti metode .save (). Berikut adalah Data Spring JPA Documents: static.springsource.org/spring-data/data-jpa/docs/current/… Jangan menyerah dulu!Saya telah menggunakan Spring Data JPA dalam proyek kecil dan besar dengan permintaan kueri sederhana. Keuntungan utama adalah dari tidak harus menggunakan
@Query
anotasi. Tidak ada dalam Data Spring yang mencegah Anda menggunakannya dalam proyek-proyek besar danQueryDSL
dukungan terbaru mungkin membantu Anda. Ini adalah contoh menggunakan QueryDSL untuk menargetkan Hibernate.Jika Anda melihat pertanyaan kompleks dan Anda merasa nyaman menggunakan objek Hibernate tanpa JPA Saya pikir kombinasi alternatif bisa memiliki Spring Data sederhana
Repository
di sebelah yang kompleks berbasis Hibernate dengan metode spesifik yang mungkin Anda butuhkan. Mungkin kurang rumit jika memutar implementasi Hibernate ke struktur Spring Data JPA.sumber
Spring JPA akan memberi Anda banyak abstraksi dari penulisan SQL dan bahkan beberapa HQL menggunakan deklarasi metode kueri. Spring JPA bersinar dengan pembuatan kueri, tetapi ketika Anda menginginkan solusi hibernasi murni, Anda dapat menyesuaikan sesuai kebutuhan karena spring JPA masih berbasis pada hibernate. Periksa dokumen http://static.springsource.org/spring-data/data-jpa/docs/current/reference/html untuk info lebih lanjut.
sumber