sql >> Database >  >> RDS >> Mysql

Blijvende niet-primitieve gegevens in JPA

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



  1. Kun je helpen om de zoekopdracht of een andere zoekopdracht aan te passen om het verwachte resultaat te krijgen?

  2. Parse Wiktionary XML-gegevensdump in MySQL-database met behulp van PHP

  3. Beperk het aantal rijen per id in een SQL-query

  4. PostgreSQL-array met elementen die elk een externe sleutel zijn