powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Toplink и кеширование коллекций
4 сообщений из 4, страница 1 из 1
Toplink и кеширование коллекций
    #38377761
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть связка Glassfish 3 + toplink +Oracle

Есть бин в котором объявлено что у него есть коллекция других бинов :

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
public class TestGroup implements Serializable {
    private static final long serialVersionUID = 1L;
    
    @Id
    @Column(name = "TEST_GROUP_ID")
    private Integer testGroupId;
    
    @OneToMany(fetch = FetchType.LAZY)
    @JoinColumn(name = "TEST_GROUP_ID")
    private List<TestGroupRecipient> groupRecipients  = new ArrayList<TestGroupRecipient>();
}



так вот при первом запросе - все отлично вытаскивается , коллекция из 2х элементов.

После этого toplink перестает делать подзапрос и перестает обновлять эту коллекцию.
Т.е. если руками в базе кто то добавил 3й элемент (вставка не из моей системы с базой работают другие клиенты)

то я про это никогда не узнаю !!!

Как быть ?
...
Рейтинг: 0 / 0
Toplink и кеширование коллекций
    #38378126
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все фасадные бины создаются так :

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
public abstract class AbstractFacade<T> {
    private Class<T> entityClass;

    public AbstractFacade(Class<T> entityClass) {
        this.entityClass = entityClass;
    }

    protected abstract EntityManager getEntityManager();

    public T create(T entity) {
        getEntityManager().persist(entity);
        return entity;
    }

....

@Stateless
public class TestGroupFacade extends AbstractFacade<TestGroup> {
    @PersistenceContext(unitName = "OracleTest")
    private EntityManager em;

    @Override
    protected EntityManager getEntityManager() {
        return em;
    }

    public TestGroupFacade() {
        super(TestGroup.class);
    }
...



вызов в коде :

я выставил <property name="eclipselink.logging.level" value="ALL"/> из вывода видно , что первый раз он вытягивает 1 запросом сам объект , втором коллекцию , после этого - при любом обращении идет только один запрос на выборку элемента, второго запроса нет ?!
т.е. каждый раз выполняется только find
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
    @Inject
    private TargetGroupFacade targetGroupFacade;

...

TestGroup testgroup = testGroupFacade.find(ptestgroupId); // первый select 
List<TestGroupRecipient> list = testgroup.getGroupRecipients(); //  один раз выполняется select



...

// если  я сам добавляю - изменения :

 TestGroupRecipient recipient = testGroupRecipientFacade.find(recipientId);
 recipient.setRecipientId(null); // ID
 testGroupRecipientFacade.create(recipient);


testgroup.getGroupRecipients().add(recipient);
testGroupFacade.edit(testgroup); // видимо только так происходит обновление в кеше !?
...
Рейтинг: 0 / 0
Toplink и кеширование коллекций
    #38378137
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
eclipselink
...
Рейтинг: 0 / 0
Toplink и кеширование коллекций
    #38378157
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1 eclipselink

Почитал документацию

http://wiki.eclipse.org/EclipseLink/Examples/JPA/Caching

добавил в persistence-unit

Код: java
1.
2.
3.
4.
5.
            <property name="eclipselink.cache.shared.default" value="false"/>

            <property name="eclipselink.logging.level" value="ALL"/>
            <property name="eclipselink.logging.level.sql" value="FINE"/>
            <property name="eclipselink.logging.parameters" value="true"/>



теперь каждый вызов это запрос к БД.

Что является вторым крайним случаем (нет кеширования :) )

можно ли как то на уровне бина - описать что конкретная коллекция не должна кешироваться ?
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Toplink и кеширование коллекций
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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