Oke ini dia,
Saya berasumsi Anda sedang membangun aplikasi Anda dengan Spring Boot, Hibernate sebagai ORM Anda dan mungkin semacam atau database relasional (MySQL).
Mengenai desain db:
Ya, objek Patreon di sini adalah entitas pemilik dengan relasi OneToMany ke entitas Item (karena satu Patreon mungkin memiliki N objek). Entitas Patreon Anda dapat melakukan perubahan berikut:
1) Coba gunakan tipe non-primitif terutama untuk kunci tabel (id panjang -> ID panjang).
2) Kehilangan larik checkOutItems serta daftar itemHistory. Pertama-tama relasi harus dimodelkan menggunakan koleksi dan bukan array. Kedua, Anda tidak membutuhkan keduanya. Anda tidak akan pernah menyimpan checkOutItems maupun itemHistory dengan cara ini. Alih-alih membuat List<Item> items
yang akan menyimpan item Patreon saat mendeskripsikan relasi (berikut beberapa contohnya:http:/ /www.baeldung.com/hibernate-one-to-many
)
3) Sekali lagi dengan entitas Item Anda harus kehilangan array histori. Satu-satunya hal yang Anda perlukan adalah referensi ke entitas pemilik (Patreon dalam kasus ini) sehingga melengkapi sisi ManyToOne dari relasi.
4) Perhatikan bahwa bidang Tanggal harus diberi keterangan dengan @Temporal
juga memberikan jenis yang benar (Anda dapat membaca lebih lanjut).
5) Kelas item secara umum harus dilakukan dengan desain ulang.
5) Setelah semua hal di atas ada dan dengan asumsi Anda menggunakan Spring, Anda dapat membuat Repositori yang dengannya Anda dapat menanyakan objek Patreon sehingga mengambil objek bersama dengan entitas terkaitnya (Item).
Mengenai pertanyaan Anda:
Q1:Ya itu lihat. Lihat di atas untuk informasi lebih lanjut.
Q1.2:Tidak ada array yang tidak. Daftar atau lebih baik lagi Set lebih cocok.
Q1.3:Ya ada. Yang pertama anotasi JPA yang digunakan dalam basis data relasional sedangkan yang kedua adalah anotasi khusus Data Musim Semi yang digunakan oleh basis data dan kerangka kerja yang bukan jenis ini (relasional) atau tidak memiliki API persistensi standar yang ditentukan (seperti JPA). Untuk NonNull dan NotNull kira-kira sama dengan yang pertama sebenarnya menggantikan yang terakhir (sesuatu yang sering dilakukan). Satu-satunya perbedaan yang saya lihat adalah targetnya. Anda dapat membaca lebih lanjut di sini:https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/lang/NonNull.html https://docs.Oracle.com/javaee /7/api/javax/validation/constraints/NotNull.html
Q2:Ya ada. Lihat di atas.
Q3:Dengan sedikit desing pintar saya tidak melihat kebutuhan untuk lebih, tapi hey Jika Anda merasa itu akan membantu Anda, mengapa tidak. Hanya saja, jangan berlebihan dalam mendesain dan kerumitannya