Oké, hier gaat het,
Ik neem aan dat je je applicatie bouwt met Spring Boot, Hibernate als je ORM en waarschijnlijk een soort of relationele database (MySQL).
Betreffende db-ontwerp:
Ja, het Patreon-object hier is de eigenaar van de entiteit met een OneToMany-relatie met de item-entiteit (aangezien één Patreon N objecten kan hebben). Uw Patreon-entiteit zou het volgende kunnen doen:
1) Probeer niet-primitieve typen te gebruiken, speciaal voor tabelsleutels (lange id -> Lange id).
2) Verlies de array van checkOutItems en de itemHistory-lijst. Allereerst moeten relaties worden gemodelleerd met behulp van verzamelingen en niet met arrays. Ten tweede heb je die twee niet nodig. Je zult de checkOutItems noch de itemHistory op deze manier opslaan. Maak in plaats daarvan een List<Item> items
die de Patreon-items zal opslaan terwijl de relatie wordt beschreven (hier zijn enkele voorbeelden:http:/ /www.baeldung.com/hibernate-one-to-many
)
3) Nogmaals met de item-entiteit moet je de reeks geschiedenis verliezen. Het enige dat je nodig hebt, is een verwijzing naar de eigenaar van de entiteit (Patreon in dit geval), waarmee je de ManyToOne-kant van de relatie voltooit.
4) Merk op dat Datumvelden geannoteerd moeten worden met @Temporal
ook het juiste type verstrekken (u kunt lezen voor meer).
5) Artikelklasse in het algemeen zou een nieuw ontwerp moeten hebben.
5) Nadat al het bovenstaande is uitgevoerd en ervan uitgaande dat u Spring gebruikt, kunt u een repository maken waarmee u een Patreon-object kunt opvragen en zo een object samen met de gerelateerde entiteiten (Items) kunt ophalen.
Wat betreft uw vragen:
Q1:Ja, het ziet. Zie hierboven voor meer.
Q1.2:Geen arrays zijn dat niet. Lijsten of beter nog Sets zijn meer geschikt.
Vraag 1.3:Ja, dat is er. De eerste is een JPA-annotatie die wordt gebruikt in relationele databases, terwijl de tweede Spring Data-specifieke annotatie is die wordt gebruikt door databases en frameworks die niet van dit type zijn (relationeel) of waarvoor geen standaard persistentie-API is gedefinieerd (zoals JPA). Want de NonNull en NotNull zijn ongeveer hetzelfde, waarbij de eerste de laatste in feite superset (iets dat vaak wordt gedaan). Het enige verschil dat ik zie is het doel. U kunt hier meer lezen: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
Vraag 2:Ja, dat is er. Zie hierboven.
Q3:Met een beetje slim ontwerp zie ik de noodzaak niet voor meer, maar als je denkt dat het je zal helpen, waarom niet. Overdrijf het ontwerp niet en het is ingewikkeld