Как стать автором
Обновить

Комментарии 12

Спасибо, очень интересно. Вопрос: как отреагирует механизм сериализации фреймворка, если ему встретятся модели, ссылающиеся друг на друга?
Вы, наверное, имеете в виду bidirectional связи? Все связи заменяются линками. К примеру, если в класс Car, описанный в статье, добавить двустороннюю связь типа many-to-one с классом Owner. То JSON будет выглядеть так:

GET {root}/entity/Car/1

{
    "id": 1,
    "name": "Mazda MX-5",
    "shortDescr": "двухместный родстер",
    "longDescr": "очень длинное описание",
    "owner": {
        "links": [
            {
                "rel": "canonical",
                "href": "{root}/entity/Owner/1"
            },
            {
                "rel": "self",
                "href": "{root}/entity/Car/1/owner"
            }
        ] 
    }
    ...
}


Соответственно, Owner:

GET {root}/entity/Owner/1

{
    "id": 1,
    "name": "James Bond",
    "cars": {
        "links": [
            {
                "rel": "canonical",
                "href": "{root}/entity/Owner/1/cars"
            },
            ...
        ] 
    }
    ...
}
Да, это лучше чем падение с OOM при дефолтных настройках в Spring + Hibernate
Войдёт ли это В JEE8 и кто ещё из ORM это поддерживает?
Это не есть часть спецификации JEE, соответственно не является стандартом. Это всего лишь одна из дополнительных функций EclipseLink. EclipseLink поставляется вместе c Weblogic.

Другие фрэймворки тоже умеют делать похожее. К примеру, вот, spring:
projects.spring.io/spring-data-rest/
Ну, сравнивать гигантский спринг с аккуратным eclipselink не совсем корректно. Но мне, собственно, было интересно, станет ли это частью стандарта. Было бы круто, но, похоже, нет.
Похоже на имплементацию HATEOAS. А поддерживаются ли Fetch.EAGER и fetchGroups? Например если я хочу вывести сразу одним запросом объекты и содержимое их OneToMany-полей? А параметры к запросам можно передавать?
Это и есть некоторая имплементация HATEOAS.
Планируется поддержка expand и expandAll параметров, позволяющий раскрывать связи. Есть вероятность, что это будет добавлено в этот релиз, но это пока под вопросом.
Параметры к запросам, конечно, передавать можно. Вот так:
{root}/query/Car/findByYear;year=2014
Помимо сервера хотелось бы еще иметь клиента, который автоматически врапит REST в те же объекты модели. В итоге что-то типа remote entity manager.
А там можно какой-либо метод навесить который вызывался бы перед любым REST-запросом? К примеру для обеспечения безопасности.
Нет
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации