Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / JPA .getReference работает не так, как заявлено / 6 сообщений из 6, страница 1 из 1
25.09.2017, 13:18
    #39525762
Лысый дядька
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JPA .getReference работает не так, как заявлено
авторConsider the getReference() method of the EntityManager API. In section 10.2.3, you had a first look at this operation and how it may return a proxy. Let’s further explore this important feature and find out how proxies work:

Код: java
1.
2.
Item item = em.getReference(Item.class, ITEM_ID);
assertEquals(item.getId(), ITEM_ID);




авторCalling the identifier getter (no field access!) doesn’t trigger initialization.
This code doesn’t execute any SQL against the data- base . All Hibernate does is create an Item proxy: it looks (and smells) like the real thing, but it’s only a placeholder. In the persistence context, in memory, you now have this proxy available in persistent state, as shown in figure 12.1.

По идее, getReference должен возвращать proxy-объект, за инициализацией которого контекст полезет в БД только по необходимости. Id у этого объекта уже есть, поэтому никаких селектов для .getId() происходить не должно, что логично и что отбражено в литературе. Однако, это наглая ложь и селект происходит. Проверял с хибернейтом и с ЭклипсЛинком.

автор:run Main
Hibernate: select department0_.id as id1_0_0_, department0_.name as name2_0_0_, department0_.type_id as type_id3_0_0_, department1_.id as id1_1_1_, department1_.name as name2_1_1_ from Department department0_ left outer join DepartmentType department1_ on department0_.type_id=department1_.id where department0_.id=?
3



Вот у меня вопрос возникает, а какого собственно чёрта?
...
Рейтинг: 0 / 0
25.09.2017, 13:48
    #39525788
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JPA .getReference работает не так, как заявлено
Лысый дядька,

http://docs.oracle.com/javaee/6/api/javax/persistence/PersistenceUnitUtil.html#getIdentifier(java.lang.Object)

А кем заявлено-то? На спеку не похоже.

Ну, и, вроде как, считается за багу.
https://hibernate.atlassian.net/browse/hhh-3718
https://hibernate.atlassian.net/browse/HHH-7000
...
Рейтинг: 0 / 0
26.09.2017, 05:52
    #39526053
Лысый дядька
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JPA .getReference работает не так, как заявлено
BlazkowiczА кем заявлено-то?
Да, собственно, хибернейтом и заявлено, я их документацию цитирую.

авторНу, и, вроде как, считается за багу.
Как-то все это очень странно. Я всегда считал, что Джава - это надежность проверенная годами, и ни как я не ожидал, что хибернейт это такое решето, в котором я при лёгком погружении начну откапывать баги как картошку.
...
Рейтинг: 0 / 0
26.09.2017, 07:16
    #39526060
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JPA .getReference работает не так, как заявлено
Лысый дядькахибернейт это такое решето,
Лишний запрос это решето?
Преувеличиваете).
Это оптимизация. А в ней всегда не просто.
...
Рейтинг: 0 / 0
26.09.2017, 08:02
    #39526070
Лысый дядька
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JPA .getReference работает не так, как заявлено
Petro123Это оптимизация. А в ней всегда не просто.
Что тут сложного то? Вернуть значение атрибута, которое заведомо известно, тоже мне бином Ньютона. Бага висит с 2012-го года. Это характеризует продукт.
авторЛишний запрос это решето?
Насколько я понял, .getReference() существует как раз для того, чтобы не было лишних запросов. По-вашему, я зря возмущаюсь, когда получаю запросы, используя метод, который априори не должен посылать запросы?
...
Рейтинг: 0 / 0
26.09.2017, 09:02
    #39526100
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JPA .getReference работает не так, как заявлено
Лысый дядька,
Ты же знаешь форум))).
Тебе этот метод и не нужен, но ты об этом не догадываешься)))) LOL
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / JPA .getReference работает не так, как заявлено / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]