Всем добрый час 😉 Прошу помощи
Синопсис: Длительное время работаю над своим приложением. В данный момент оно довольно объёмное (170 классов, некоторые из них до 300 строк), из-за этого рефакторинг зачастую неповоротлив. Ну и надо понимать, что архитектура у меня просто отвратительная (по сути это моё первое крупное приложение). Сейчас у меня появилась проблема, связанная с тем, что я хочу реализовать функционал удаления сущности, чтобы она при этом продолжала существовать, но фактически была недоступна.
Стек приложения: Java 15, Spring Data JPA, Spring Boot, в качестве базы данных используется PostgreSQL.
Если у вас есть аккаунт на stackoverflow и вы хотите получить плюсики, то можете ответить на мой вопрос там.
Итак, есть сущность:
@Entity
@Table(name = "warehouses")
public class Warehouse {
@Id
private Integer id;
@Column(name = "name")
private String name;
}
Она очень много где участвует, она очень важна. Например, она связана со следующей сущностью:
@Entity
@Table(name = "orders")
public class Order {
@Id
private Integer id;
@ManyToOne
@JoinColumn(name = "warehouse_id")
private Warehouse warehouse;
@Column(name = "amount")
private Integer amount;
}
В данный момент я пытаюсь реализовать функционал удаления сущности Warehouse. Удаление должно быть не совсем обычным, потому что некоторые связанные сущности нам могут понадобится и потом, например та же сущность Order. То есть надо сделать Warehouse не доступным для участия в новых операциях, но доступным для связанных сущностей. Ну вот пример приведу: вот у нас грузовик привёз товар на склад, сформировалась сущность Order. А потом мы склад расформировываем, по логике нам надо удалить Warehouse, но заказ-то нам нужен будет в будущем. Поэтому надо как-то не удалить, а сделать неактивным.
Есть вариант сделать в Warehouse поле boolean isActive, но я хотел бы избежать этого (потребует довольно значительно доработки кода).
Может быть вы сможете предложить какие-то изящные варианты? 😩