hibernate jpa обновляет два поля на persisit и читает только из одного

1

один быстрый вопрос для пользователей java hibernate/jpa.

У меня есть две таблицы (сущности) A и B с отношениями, поскольку A имеет много B (один для многих). Объект A имеет набор значений B в java.

Из-за чтения проблемы с производительностью я хочу реализовать денормализацию мастер-данных, поэтому я хочу сохранить необработанный объект Set (возможно, сериализованный) непосредственно в сущности A (потому что отношение "многие к одному" стоило мне много времени процессора из-за чтения jpa (обновление Не ошибка)).

Проблема в том, что я могу добиться чего-то вроде этого getBs, всегда возвращает мне денормализованный объект (поэтому его быстрый), а addB добавляет новый B для установки и обновления денормализованного объекта с новыми необработанными данными, которые подготовлены для более быстрого чтения?

его оракул db.

пример сущности:

class A {
    Long id,
    String name;
    Set<B> arrayOfBs;
    byte[] denormalizedArrayOfB;

    getArrayOfBs() {
        return (Set<B>) denormalizedArrayOfB;
    }

    addArrayOfBs(B b) {
        //persist b
        // update and persist denormalizedArray with new b
    }
    //getters and setters...
}

class B {
    Long id;
    A reference;
    String x;
    String y;
    //getters and setters...
}
Теги:
hibernate
jpa
hibernate-mapping

1 ответ

0

Это сложно. Есть более эффективные подходы к вашей проблеме:

  1. Вы можете просто заменить ассоциацию "один ко многим" на запрос DAO. Поэтому всякий раз, когда вы выбираете родительские объекты, вы не сможете получить детскую коллекцию (возможно, они слишком много). Но когда вы хотите получить родительские дети, вы просто запускаете запрос DAO, который также легче фильтровать.

  2. Вы оставляете коллекцию детей, но вы используете кеш в памяти для сохранения полностью инициализированного графа объектов. Это может показаться естественным выбором, но, скорее всего, вы будете торговать согласованностью для производительности.

  • 0
    1. Хорошо, но проблема с сохранением двух атрибутов: нормализованного и денормализованного. 2. Я не хочу терять последовательность
  • 0
    И дублированные денормализованные данные не означают нарушения согласованности?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню