Mysql
 sql >> база данни >  >> RDS >> Mysql

Запазване на непримитивни данни в JPA

Добре, ето,

Предполагам, че създавате приложението си с Spring Boot, Hibernate като ваш ORM и вероятно някаква или релационна база данни (MySQL).

Относно db дизайна:

Да, обектът Patreon тук е обектът-притежател с връзка OneToMany към обекта Item (тъй като един Patreon може да има N обекта). Вашият обект Patreon може да направи следното преоформяне:

1) Опитайте се да използвате непримитивни типове, особено за ключове на таблица (дълъг идентификатор -> Дълъг идентификатор).

2) Загубете масива от checkedOutItems, както и списъка itemHistory. Преди всичко релациите трябва да се моделират с помощта на колекции, а не масиви. Второ, нямате нужда от тези две. Никога няма да съхранявате checkedOutItems, нито itemHistory по този начин. Вместо това създайте List<Item> items който ще съхранява елементите на Patreon, докато описва връзката (ето няколко примера:http:/ /www.baeldung.com/hibernate-one-to-many )

3) Отново с обекта Item трябва да загубите масива от история. Единственото нещо, от което се нуждаете там, е препратка към обекта-притежател (в този случай Patreon), като по този начин завършва страната ManyToOne на релацията.

4) Имайте предвид, че полетата за дата трябва да бъдат анотирани с @Temporal също така предоставя правилния тип (можете да прочетете повече).

5) Класът на елемента като цяло трябва да се направи с редизайн.

5) След като всичко по-горе е на мястото си и ако приемем, че използвате Spring, можете да създадете хранилище, с което можете да заявите обект на Patreon, като по този начин извлечете обект заедно със свързаните с него обекти (елементи).

Относно вашите въпроси:

Q1:Да, вижда се. Вижте по-горе за повече.

Q1.2:Няма масиви не са. Списъците или още по-добре Комплектите са по-подходящи.

Q1.3:Да, има. Първата е JPA анотация, използвана в релационни бази данни, докато втората е специфична анотация за Spring Data, използвана от бази данни и рамки, които не са от този тип (релационни) или нямат дефиниран стандартен API за постоянство (като JPA). Защото NonNull и NotNull са приблизително еднакви, като първият всъщност замества последния (нещо, което се прави често). Единствената разлика, която виждам, е целта. Можете да прочетете повече тук: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:Да, има. Вижте по-горе.

В3:С малко умен дизайн не виждам нужда от повече, но ако смятате, че ще ви помогне, защо не. Просто не прекалявайте с дизайна и неговата сложност



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL Групиране по брой седмици с множество колони за дати

  2. MySQL Структура на пазарската количка

  3. Как да получите единичен последен запис с определен идентификатор в codeigniter

  4. Как да активирам INNODB в mysql

  5. Mysql оптимизация за REGEXP