Я заканчиваю работу над i18n для моего приложения, и мой дизайн основан на следующих предположениях)
1) Locale.setDefault (новый Locale ("en", "US")); плохо, так как вы меняете локаль по умолчанию для JVM, а не только для своего приложения. Поэтому лучше передавать локаль вокруг приложения для каждого запроса (может быть локальным)
2) Обрабатывать все форматирование / синтаксический анализ i18n на уровне приложения. БД должна обрабатывать только сравнения (опционально), сортировку (опционально) и хранение. Так что просто установите NLS_CHARACTERSET, NLS_COMP, NLS_SORT и NLS_LENGTH_SEMANTICS. Кстати, сравнение и сортировка на уровне базы данных означает создание индексов, специфичных для локали, что замедляет вставки / обновления