2009-12-31 2 views
2

Я пытаюсь найти решение для архитектурной ошибки, и я не архитектор: PДва отображение для таблицы одной базы данных

Есть ли возможность иметь два отображения для одной и тех же таблиц в Hibernate3? В первом случае некоторые ленивые атрибуты будут установлены в true. Второе отображение будет иметь некоторые ленивые атрибуты, заданные как false; кроме того, сопоставления равны. Я знаю, это странное и причудливое поведение, но клиент требует быстрого решения.

+1

Вам действительно нужно второе сопоставление, или вы можете просто установить letch для true или false при получении вашей сущности? – bertolami

+0

Я думаю, что требуется второе сопоставление, потому что два разных сценария: один и тот же объект читается онлайн-и пакетными процессами. Онлайновый процесс уже разработал свое сопоставление, где lazy установлен в false. Для пакетного процесса это проблема, потому что lazy = false вызывает чтение всей иерархии; это большая проблема при длительных задачах. Это архитектурная проблема: возможно ли иметь второе сопоставление (где lazy установлено значение true), чтобы избежать изменения «онлайн-сопоставления»? Спасибо за вашу помощь, бертолами. –

ответ

2

В теории нет причин, по которым нет, но вы должны быть осторожны. Кэш гибернации (сеансы и кеши L2) будет относиться к ним как к различным, поэтому, если вы будете манипулировать строкой таблицы, используя оба сопоставления в одном сеансе, вы рискуете потеря данных, так как спящий режим не будет знать, что они ссылаются на одинаковые базовые данные.

0

Очень быстрое решение состоит в том, чтобы иметь 2 разных класса, сопоставленных с одной таблицей.

Смежные вопросы