Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Java EE - управление сущностями в графическом интерфейсе

Автор вопроса: sofaskОтветов: 1

Я использую 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 перед передачей их управляемым компонентам, но это не похоже на хорошее решение. Я хотел бы знать, каков стандартный шаблон проектирования для такого рода проблем. Любой пример решения будет работать нормально.

Любая помощь приветствуется, заранее спасибо

jpajtaejbjakarta-eemanaged-bean

Ответы

Ответ 1 · рейтинг 1 · Szarpul

Пока вы не будете выполнять merge или insert метод из EntityManager на ваша сущность, ничего не должно происходить в БД. Вы всегда можете обновить свой объект с помощью EntityManager. Однако, если вы боитесь использовать объект в своей веб-шине, вы всегда можете использовать шаблон DTO.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы