Saya punya proyek yang saya kerjakan saat ini menggunakan Tomcat, Spring 4, Spring Security, MySQL, dan JPA w / Hibernate.
Saya memilih JPA dari sudut pandang bahwa itu seharusnya membuat swapping implementasi yang mendasari penyedia ORM mulus, atau setidaknya kurang menyakitkan. Saya akan mengatakan bahwa ini secara mental menggunakan spec atas implementasi (JAX-RS) adalah sudut pandang standar komunitas pengembangan Java.
Saya ingin tahu apakah ini benar-benar tugas yang pantas dilakukan. Saya yakin jika saya menggunakan Hibernate secara langsung, saya akan mendapatkan kekuatan karena saya bisa menggunakan fitur yang bukan bagian dari spesifikasi JPA utama.
Bagian dari kekhawatiran saya berasal dari ide YAGNI. Saya pada dasarnya pemrograman dalam gaya dan mode tertentu (menggunakan JPA, bukan Hibernate) sehingga di beberapa titik di masa depan saya bisa menukar implementasi ORM saya. Saya sangat meragukan bahwa hal itu akan pernah terjadi selama masa pakai produk, jadi pada dasarnya saya berupaya menjadi sesuatu yang mungkin tidak akan pernah saya manfaatkan.
Apa yang kamu pikirkan? Apakah "pemrograman ke antarmuka" sepadan dengan hal-hal seperti JPA? Pernahkah Anda benar-benar menukar seluruh implementasi ORM dalam suatu produk? Apakah Anda pernah dapat sepenuhnya menghindari abstraksi dari sesuatu seperti JPA bocor? Saya pribadi sudah memiliki satu panggilan SQL asli (untuk membersihkan tabel database), dan ada sesuatu yang saya ingin selesaikan dengan yang dibangun ke dalam spesifikasi JPA (dapatkan / atur awalan untuk metode Anda, dan perbedaan antara ANGGOTA DARI / IN, yang hanya mengikat diri saya pada implementasi yang mendasari akan membuat saya kesempatan untuk menghindari.