powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Eclipselink вопрос
10 сообщений из 10, страница 1 из 1
Eclipselink вопрос
    #39695605
olegeos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет.
Есть приложение в котором один из потоков постоянно (раз в 10-20 сек) обращается к БД (постгрес), выполняет простой запрос и возвращает сущность (у которой есть булево поле).
При определенных условиях программа меняет булево поле с false на true или обратно (все это видно в логах).
Вопрос: если во время работы программы зайти через пгадмин и руками сменить значение поля (зафиксировать изменение) то поток в программе так и будет выводить старое значение.
JDBC напрямую еще не пробовал.
Что еще посмотреть, каких-то настроек кеша нет.
Библиотека EclipseLink
Код привожу для примера
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
    factory = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME);
        EntityManager em = factory.createEntityManager();
  
        em.getTransaction().begin();

        
        Query q = em.createQuery("select m from Person m");
 
         em.getTransaction().commit();
   
        em.close();
...
Рейтинг: 0 / 0
Eclipselink вопрос
    #39695609
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
с EclipseLink дела не имел. Не оно?

http://www.eclipse.org/eclipselink/documentation/2.4/concepts/cache001.htm
...
Рейтинг: 0 / 0
Eclipselink вопрос
    #39695658
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
olegeosПри определенных условиях программа меняет булево поле с false на trueну дак твой код меняет поле.
Вопрос в чем?
...
Рейтинг: 0 / 0
Eclipselink вопрос
    #39695700
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
olegeosЧто еще посмотреть, каких-то настроек кеша нет.
- попробуйте LockModeType.PESSIMISTIC_READ, должны начать ловить эксепшен если кто то грязными руками полез в базу
...
Рейтинг: 0 / 0
Eclipselink вопрос
    #39695727
olegeos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может не совсем понятно выразился, постоянно из программы делаю запрос через контроллер (к примеру метод find) на выборку конкретной строки и смотрю одно из значений поля(булево).
При этом если программа через этот же контроллер меняет значение ( метод edit) то все нормально, оно изменяется. А если руками через стороннюю программу (пгАдмин) вношу это (при запущенной программе) изменение то, пока поток не перезапуститься он возвращает старое значение.
...
Рейтинг: 0 / 0
Eclipselink вопрос
    #39695728
olegeos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
olegeos,
Пробовал при каждом вызове запроса пересоздавать Энтити менеджер, какое-то время работает потом опять нет.
...
Рейтинг: 0 / 0
Eclipselink вопрос
    #39695729
olegeos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsevс EclipseLink дела не имел. Не оно?

http://www.eclipse.org/eclipselink/documentation/2.4/concepts/cache001.htm

Попробую этот вариант.
...
Рейтинг: 0 / 0
Eclipselink вопрос
    #39695753
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
olegeosесли руками через стороннюю программу (пгАдмин) вношу это (при запущенной программе) изменение то
- если Вы считаете что это нормально (паралельный доступ к данным из стороннего приложения), то используйте метод refresh, для принудительной синхронизации данных с БД (недостаток - просадите производительность). Либо можно отключить кэширование - см. ниже

- если паралельный доступ к данным мимо EntityManger-а это ненормальное поведение и цель защитить приложение от таких ситуаций, то воспользуйтесь LockModeType.PESSIMISTIC_READ (его можно вкрячить и в find, и в refresh, и в Query). Будете получать эксепшн при таких ситуациях

- отключить кэширование вообще или для конкретной сущности можно так
...
Рейтинг: 0 / 0
Eclipselink вопрос
    #39695769
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
olegeos,
Может баг?
Проходило тут что это хуже пров чем хибер.
В хибере кэш первый сброс при закрытии сессии.
...
Рейтинг: 0 / 0
Eclipselink вопрос
    #39695779
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123это хуже пров чем хибер
- просто другое поведение по умолчанию, у EclipseLink L2 по умолчанию включен, у Hibernate отключен
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Eclipselink вопрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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