|
|
|
Hibernate и локализация строк в БД
|
|||
|---|---|---|---|
|
#18+
Для реализации мультиязыковости в БД было реализовано следующие: все поля с требующими локализации строками были заменены ссылками на некую таблицу-ресурс этих строк. Т.е. была введена таблица TITLE (title_id, language_id, value). К примеру, таблица STATUS (status_id, name) изменилась на STATUS (status_id, title_id). В каждый момент времени выбираются данные по параметру - language_id. Если ли какие-нибудь методы, подходы для выборки подобных данных? Теоретически можно вытаскивать все строки для всех существующих языков, но ИМХО это не совсем правильно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2005, 18:41 |
|
||
|
Hibernate и локализация строк в БД
|
|||
|---|---|---|---|
|
#18+
[quot Denis Popov] Днеис, несовсем понятна проблема ... title_id, language_id вроде бы однозначно должны определять выбираемую строку, или я чего то непонимаю ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2005, 00:21 |
|
||
|
Hibernate и локализация строк в БД
|
|||
|---|---|---|---|
|
#18+
незаметил про Hibernate, если некритичнен контроль только на стороне AS то можно при выборе локали использовать пакетные переменные и вьюшку для текущей сессии (для оракла, с другими не работал), плюс ненадо перегенерить мэппинги, минус логика частично уходит в базу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2005, 00:42 |
|
||
|
Hibernate и локализация строк в БД
|
|||
|---|---|---|---|
|
#18+
Забыл пароль .. wrote: > незаметил про Hibernate, если некритичнен контроль только на стороне AS > то можно при выборе локали использовать пакетные переменные и вьюшку для > текущей сессии (для оракла, с другими не работал), плюс ненадо > перегенерить мэппинги, минус логика частично уходит в базу Насчет установки контекста сессии (т.е. контекста связанного с ней Connection) это мысль, спасибо. Просто проект реализован на Oracle, а заказчик спросил, во что обойдется его расширение на другие БД. пока что метод выбора локализованных значений из базы - один из вопросов, который хотелось бы прояснить для принятия решения, стоит ли вообще этим заниматься. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2005, 12:41 |
|
||
|
Hibernate и локализация строк в БД
|
|||
|---|---|---|---|
|
#18+
Рад если помог, возможно мне придется похожее скоро делать, появятся интересные идеи - плиз кинь в ветку ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2005, 16:41 |
|
||
|
Hibernate и локализация строк в БД
|
|||
|---|---|---|---|
|
#18+
Пока кроме как работы с контекстом сессии ничего путного в голокву не лезет. Т.е. это подразумевает обращение приложения не напрямую к таблицам, а в представлениям на их основе, где в нужных местах выводятся значения строк в зависимости от установленного контекста. Но это достаточно непереносимо в общем смысле: допустим, в MSSQL или Sybase или еще где найдется нечто подобное, но что делать с остальными БД, где такого может не быть? В-вторых, проблема с кешированием объектов: а вдруг поменялся язык. Другая мысль: читать строки на всех языках в некий список, а уже на клиенте выбирать нужный, исходя из текущего языка. Как вообще можно справиться с такой структурой? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2006, 16:26 |
|
||
|
Hibernate и локализация строк в БД
|
|||
|---|---|---|---|
|
#18+
не мапиш Text-Title relation Получаешь объекты title с id, а потом локализуешь их на слое web представления, для этого В качестве ResourceBundle нужно подсунуть Session Bean (Facade) который бует обращаться к Text'ам ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2006, 01:30 |
|
||
|
Hibernate и локализация строк в БД
|
|||
|---|---|---|---|
|
#18+
в text делаешь composite prim key (а ... уже) а в Title Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Title, потом установишь lang, и попросишь хибер например merge, то он вполне может загрузить по отношению i18n нужный тext, главное, чтобы он эту связку сделал в кэше а, не через базу после этого вполне можнно передавать локализованный Title на слой представления. но для следующего клиента трюк придётся повторить - переустановить lang ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2006, 07:08 |
|
||
|
Hibernate и локализация строк в БД
|
|||
|---|---|---|---|
|
#18+
Вот еще что придумал: в БД делается слой представлений (VIEW) и Hibernate подсовываются именно они, а не таблицы. Для STATUS это примерно так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. Т.е. получается декартово произведение по всем языкам. В Hibernate прописываем фильтр : Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. и устанавливаем его для сессии. Тоже не особенно нравится: куча представлений и предполагаемая необходимость instead-of триггеров на них, которые не везде есть - почти полноценный еще один слой логики. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2006, 15:02 |
|
||
|
Hibernate и локализация строк в БД
|
|||
|---|---|---|---|
|
#18+
С фильтрами выходит не все так прекрасно. Они, как я понял, налагаются именно на ту сущность, которая выбирается в данный момент. Но допустим, что есть некий класc Document, у него есть поле Status вышеописанного класса - при выборке "from Document" статусы уже фильтроваться не будут: "Hibernate3 adds the ability to pre-define filter criteria and attach those filters at both a class and a collection level .". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2006, 16:21 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=752&tid=2150286]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
38ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 209ms |
| total: | 332ms |

| 0 / 0 |
