Я работаю над проектом JavaEE с базами данных WildFly
, Hibernate
(JPA
), C3P0
и MS SQL Server
.
База данных - это устаревшая база данных, содержащая более тысячи объектов базы данных, таких как Stored Procedures
, Functions
, Views
, Triggers
и т. Д.Все эти объекты базы данных имеют детализированные разрешения, установленные на уровне User Role
.
Теперь мне нужно получить доступ к этой базе данных с помощью веб-приложения JavaEE.Моя проблема в том, что обычная конфигурация JPA позволяет мне установить только одно имя пользователя / пароль для базы данных в файле конфигурации.Я не могу найти какой-либо способ настроить слой JPA, чтобы получить доступ к БД с помощью логина конечного пользователя.
В итоге я создал по одному EntityManagerFactory для каждого пользователя, вызвав
EntityManagerFactory entityManagerFactory =
Persistence.createEntityManagerFactory(properties_with_credentials_here)
один раз для каждого пользователя.
Проблема с этим подходом заключается в том, что он в основном будет создавать весь слой JPA для каждого пользователя и потреблять слишком много памяти.Конечно, я не использую какой-либо слой Cache.Память используется только для метаинформации сущностей (что очень много).
Теперь мой оригинальный вопрос: есть ли в JavaEE (JPA) какой-либо «стандартный» способ доступа к слою базы данных с помощью логина и пароля конечного пользователя?
Не могу поверить, что я первыйЧеловек столкнулся с этой ситуацией.Мне кажется, что «олицетворение» вполне нормально в .net
веб-приложениях.Так что, я думаю, должен быть способ сделать это на Java.
Любые комментарии, советы или новые подходы приветствуются.