sql >> Databáze >  >> RDS >> Mysql

Přetrvávat neprimitivní data v JPA

Dobře, tady to je,

Předpokládám, že si vytváříte aplikaci pomocí Spring Boot, Hibernate jako ORM a pravděpodobně nějaké relační databáze (MySQL).

Ohledně návrhu db:

Ano, objekt Patreon je zde vlastnící entitou se vztahem OneToMany k entitě Item (protože jeden Patreon může mít N objektů). Vaše entita Patreon by mohla provést následující úpravy:

1) Zkuste použít neprimitivní typy zejména pro klíče tabulky (long id -> Long id).

2) Ztratíte pole checkOutItems i seznam itemHistory. V první řadě by vztahy měly být modelovány pomocí kolekcí a nikoli polí. Za druhé, tyto dva nepotřebujete. Tímto způsobem nikdy neuložíte checkOutItems ani itemHistory. Místo toho vytvořte List<Item> items která uloží položky Patreonu při popisu vztahu (zde je několik příkladů:http:/ /www.baeldung.com/hibernate-one-to-many )

3) Opět s entitou Item musíte ztratit pole historie. Jediné, co tam potřebujete, je odkaz na vlastnící entitu (v tomto případě Patreon), čímž se dokončí stránka vztahu ManyToOne.

4) Všimněte si, že pole Datum by měla být označena @Temporal také uvedení správného typu (další informace si můžete přečíst).

5) Třída položek by obecně měla dělat s redesignem.

5) Poté, co je vše výše uvedené na místě a za předpokladu, že používáte Spring, můžete vytvořit úložiště, pomocí kterého můžete dotazovat na objekt Patreon, čímž získáte objekt spolu s jeho souvisejícími entitami (Items).

K vašim otázkám:

Q1:Ano, vidíte. Více viz výše.

Q1.2:Žádná pole nejsou. Vhodnější jsou seznamy nebo ještě lépe Sady.

Q1.3:Ano existuje. První z nich je anotace JPA používaná v relačních databázích, zatímco druhá je anotace specifická pro Spring Data používaná databázemi a frameworky, které nejsou tohoto typu (relační) nebo nemají definované standardní persistenční API (jako JPA). Neboť NonNull a NotNull jsou zhruba stejné, přičemž první ve skutečnosti nahrazuje druhé (něco, co se dělá často). Jediný rozdíl vidím v cíli. Více si můžete přečíst zde: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:Ano existuje. Viz výše.

Q3:S trochou chytrého designu nevidím potřebu dalšího, ale hej, pokud cítíte, že vám to pomůže, proč ne. Jen nepřebíjejte desingn a je to složitost



  1. Jaké jsou výhody VistaDB

  2. Jak aktualizovat více sloupců v PostgreSQL

  3. Jak synchronizovat databáze MySQL mezi dvěma vzdálenými databázemi (bez techniky replikace databáze MySQL)

  4. MySQL Fulltextové vyhledávání a SOUNDEX