Я использую JPA с JTA в корпоративном приложении Java EE, включая ejb и веб-модуль, который включает управляемые компоненты, связанные с веб-страницами.
Управляемые компоненты должны иметь возможность извлекать объекты из базы данных с помощью методов, предлагаемых моими ejbs.
У меня есть объект User, представляющий данные пользователей, зарегистрированных в системе, и я хочу разрешить пользователю изменять свою электронную почту, пароль и некоторые другие настройки.
Например, давайте рассмотрим эту сущность (абстрагированную от всех факторов, которые здесь не имеют влияния):
@Entity
public class User {
..........
private string email;
*getter and setter for email*
private string city;
*getter and setter for city*
..........
}
В моем веб-модуле у меня есть файлы xhtml, ссылающиеся на управляемые компоненты через язык выражений.
например, у меня может быть в Index.xhtml
<someEditableTag>#{myBean.user.email}</someEditableTag>
<someEditableTag>#{myBean.user.city}</someEditableTag>
<someButton>#{myBean.user.confirm()}</someButton>
В моем бобе тогда:
@Managed
@RequestScoped
public class myBean {
..........
private user;
public getUser() {
if(user == null)
user = someEJB.getLoggedUser(); // Retrieve from DB the user entity associated to logged user
return user;
}
public void confirm() {
// Call some ejb method to update the settings of the user in the database with the new data on the page
}
..........
}
Моя проблема заключается в том, что если редактируемые поля относятся к моей сущности в контексте сохраняемости, не должно ли это уже каким-то образом вызывать обновление, когда я редактирую данные на странице? Не совсем тогда, когда я пишу данные, но отредактированные данные ссылаются на мою сущность через язык выражений в xhtml.
Короче говоря, я боюсь, что управляемый компонент может изменить объект в базе данных, просто обратившись к установщикам объекта, который я возвращаю из своего ejb, если изменения в управляемом объекте фиксируются автоматически, а не с помощью моей функции подтверждения, которая вызывает некоторый метод ejb.
Я многого не знаю об этих инструментах, поэтому я хотел бы узнать ваше мнение об этом сомнении, о котором я только что упомянул.
Я думал о некоторых решениях, таких как, например, отсоединение объектов в ejbs перед передачей их управляемым компонентам, но это не похоже на хорошее решение. Я хотел бы знать, каков стандартный шаблон проектирования для такого рода проблем. Любой пример решения будет работать нормально.
Любая помощь приветствуется, заранее спасибо