Arhn - архитектура программирования

Как связать сущности Spring Data REST для передачи объектов?

У нас есть два приложения Spring Boot с клиент-серверной архитектурой. Серверная часть настроена с помощью Spring Data REST + JPA. Внешний интерфейс должен потреблять ресурсы, предоставляемые серверной частью, и обслуживать общедоступный REST API.

Возможно ли, чтобы данные Spring автоматически отображали объекты домена из DTO, объявляя, например, bean-компонент сопоставления?

// JPA persistable
@Entity
public class Order { .. }

// Immutable DTO
public class OrderDto { .. } 

// Is this somehow possible..
@RepositoryRestResource
public interface OrderDtoRepository extends CrudRepository<OrderDto, Long> {}

// .. instead of this?
@RepositoryRestResource
public interface OrderRepository extends CrudRepository<Order, Long> {}

  • любое решение RJo? я столкнулся с той же проблемой банкомат .. 19.09.2014

Ответы:


1

Мы можем использовать функцию проекции (доступна начиная с версии 2.2.x) в Spring Data REST. Что-то вроде ниже:

import org.springframework.data.rest.core.config.Projection;

@Projection(name = "orderDTO", types = Order.class)
public interface OrderDTO {
    //get attributes required for DTO
    String getOrderName();
}

@RepositoryRestResource(excerptProjection = OrderDTO.class)
public interface OrderRepository extends CrudRepository<Order, Long> {
}

При вызове REST установите для параметра "проекция" значение "orderDTO", т.е.

http://host/app/order?projection=orderDTO

Пожалуйста, обратитесь:

Примечание:

  • Установив атрибут excerptProjection в аннотации RepositoryRestResource, он по умолчанию вернет проекцию без параметра «проекция».
  • «Проекция» требуется, когда мы аннотируем интерфейс с помощью @Projection и помещаем его в тот же пакет, что и тип домена или его подпакет.
05.11.2014
  • Это не совсем то, что мне нужно, так как я больше похож на проекцию по умолчанию без необходимости указывать параметр проекции, но, поскольку лучших ответов не было, я пометил его как правильный 18.12.2014
  • Установив атрибут excerptProjection в аннотации RepositoryRestResource, он по умолчанию вернет проекцию без параметра проекции. 19.12.2014
  • Обратите внимание, что excerptProjection не работает (по дизайну) для ресурсов с одним элементом, только для ресурсов коллекции: stackoverflow.com/questions/30220333/ 23.11.2015
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..