Как правильно настроить связи между сущностями (Entity) в Java Spring?

Как лучше всего установить связи между Entity в проекте финансового приложения, где есть User, Chapter, Category и Operation?
  • 23 августа 2024 г. 7:34
Ответы на вопрос 2
Для того чтобы правильно настроить связи между сущностями в Java Spring, необходимо использовать аннотации сущностей (Entity) и указать тип связи (One-to-One, One-to-Many, Many-to-One, Many-to-Many) с помощью аннотаций ORM (Object-Relational Mapping), таких как @OneToOne, @OneToMany, @ManyToOne, @ManyToMany.

В случае проекта финансового приложения с сущностями User, Chapter, Category и Operation, можно настроить связи следующим образом:

1. User и Operation:
   - User может иметь много операций (One-to-Many). Для этого нужно добавить поле List<Operation> в сущность User и аннотацию @OneToMany к данному полю. Пример: 
   ```java
   @Entity
   public class User {
       @Id
       private Long id;

       @OneToMany(mappedBy = "user")
       private List<Operation> operations;
       // остальные поля и методы
   }
   ```

2. Chapter и Category:
   - Каждая категория (Category) может иметь много глав (Chapter) (One-to-Many). Для этого нужно добавить поле List<Chapter> в сущность Category и аннотацию @OneToMany к данному полю. Пример:
   ```java
   @Entity
   public class Category {
       @Id
       private Long id;

       @OneToMany(mappedBy = "category")
       private List<Chapter> chapters;
       // остальные поля и методы
   }
   ```

3. Operation и Chapter:
   - Каждая операция (Operation) может быть совершена в рамках определенной главы (Chapter) (Many-to-One). Для этого нужно добавить поле Chapter в сущность Operation и аннотацию @ManyToOne к данному полю. Пример:
   ```java
   @Entity
   public class Operation {
       @Id
       private Long id;

       @ManyToOne
       private Chapter chapter;
       // остальные поля и методы
   }
   ```

Таким образом, установив правильные связи между сущностями, вы сможете эффективно организовать данные в вашем финансовом приложении и управлять ими с помощью Java Spring.
Добрый день. 
С одной стороны, использование ORM фреймворков упрощает разработку. Но я замечал, что некоторые разработчики работая в рамках ORM напрочь не изучают SQL и конечно же это плохо.
Hibernate хорош с тем, что упрощает разработку, но иногда его необдуманное применение может привести к проблемам. Например, каскады. Честно говоря, работать с jdbc template, тоже не то. Я бы выбрал бы jooq.
Кстати, если у вас есть операция с балансом, то надеюсь, что вы используете BigDecimal, а не double или float. Если что погуглите Bigdecimal vs double high precision

Chapter - крупный раздел, например "Жилье", которое содержит категории.
Category - соответственно сами категории, продолжая пример - "Свет", "Газ", "Вода".

В терминологии ВП, chapter - taxonomy, а категория остается как есть.

Я бы рекомендовал прочитать статьи в блоге Влада Михалки. https://vladmihalcea.com/
А еще у него в гите есть примеры на relation-ы. Вдруг, тоже будет полезно

https://github.com/vladmihalcea/high-performance-j...
Похожие вопросы