Гексагональная архитектура с пружинными даннымиJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Гексагональная архитектура с пружинными данными

Сообщение Anonymous »

Я собираюсь начать новый проект, чтобы изучить весенний загрузочный, пружинный данных и шестиугольную архитектуру. Из моего понимания шестигранная архитектура направлена ​​на отделение основного или домена от операций с базой данных (уровень инфраструктуры). Я видел следующую структуру проекта для этой архитектуры. < /P>

Уровень основного уровня имеет: < /p>

services-> где Логика идет (интерфейсы и их реализации). < /p>

объекты -> Они будут использоваться во всем приложении. < /p>

Repository-> Интерфейсы, которые должен реализовать уровень инфраструктуры. База данных (Hibernate) и некоторые виды функций для преобразования объектов JPA в основные объекты (Mappers?). < /p>

Код: Выделить всё

public interface UserRepository extends JpaRepository {
}
Однако я думаю, что если я буду использовать данные Spring, объекты JPA не будут частью уровня инфраструктуры, если UserRepository является частью основного уровня. Это означает, что сущности ядра будут бесполезны. Должен ли я создать еще один интерфейс UserRepository, принадлежащий базовому уровню, или мне чего-то не хватает?

ОБНОВЛЕНИЕ:

Моя обеспокоенность использованием данных Spring связана с тем, что мне приходится включать объекты JPA внутрь домена, что теоретически нарушает шестиугольную архитектуру.

Итак, я думал отделить сущности домена от сущностей JPA. но если я это сделаю, я не знаю, куда должен идти репозиторий Spring Data, а также найду способ преобразовать объекты JPA в объекты домена.

Чтобы лучше проиллюстрировать, я предположу, что мне нужно подключиться к базе данных из моего приложения, чтобы прочитать таблицу пользователей.

Это может быть объект домена:

Код: Выделить всё

public class UserDomain{
private String name;
....//More fields, getters, and setters.
Насколько я понимаю, службы должны включать в себя логику и управлять объектами домена.

Код: Выделить всё

public interface UserService{
public void create(UserDomain user);
...
< /code>

Реализация: < /p>

public class UserServiceImpl implements UserService{
public void create(UserDomain user) {
... //Calling the repository(Spring Data Repository?)
Вышеупомянутое вместе с интерфейсом репозитория — это то, что я считаю доменом (если я ошибаюсь, поправьте меня). Далее инфраструктура состоит из объектов JPA

Код: Выделить всё

@Entity
@Table(name="users")
public class User{
@Column(name="name")
private String name;
... // More Fields, getters, and setters
Я думаю, что интерфейс, в котором я вызываю Spring Data, должен находиться в части инфраструктуры, потому что позже мне нужно сопоставить объекты JPA с объектами домена, и, возможно, мне нужно использовать еще один класс (и адаптер?) для этого сопоставления. Правильный ли этот подход или есть ли другой способ? Извините за длинный пост, надеюсь, я ясно выразился.

Подробнее здесь: https://stackoverflow.com/questions/465 ... pring-data
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»