Вот как мы реализуем эту функцию
Как видите, у нас много приложений (здесь они ведут себя как ваш сайт).
Модератор, веб-мастер и член, как показано в вашем сопоставлении, было бы лучше в качестве роли. Что произойдет, если вам нужно добавить новую «Роль». Может вам придется поменять всю вашу модель.
Каждое UserApplication (UserWebsite) имеет дату начала и окончания. И у каждого приложения своя роль. Веб-сайту банка нужна роль менеджера. Веб-сайту медицинской страховой компании нужна роль агента и так далее ...
ОБНОВЛЕНИЕ
Я понимаю взаимоотношения между логином и пользователем (частично / полностью). Прежде чем продолжить, просмотрите этот ответ о композиции по сравнению с агрегированием.
Но чего я не понимаю, так это назначения классов UserApplication и Application.
Думайте о приложении как о своем веб-сайте. Я работаю в большой компании по страхованию здоровья, где у нас много модулей (каждый модуль (приложение) имеет свой веб-сайт). Но некоторые Пользователи, а не все, могут использовать каждый модуль. Это объясняет, почему я определяю UserApplication.
роль роли в этом процессе входа в систему
Никто. Это просто дает UserApplication роль. Я могу использовать финансовый модуль, который определяет следующие роли: менеджер, клиент и другие, где я могу играть роль менеджера. Но я могу назначить вам временного пользователя (startDate и endDate) в качестве клиента для использования финансового модуля.
Application financialModule = new Application();
financialModule.addRole(new Role("Manager"));
financialModule.addRole(new Role("Customer"));
financialModule.addRole(new Role("Other"));
User arthur = new User(new Login("#####", "#####"));
arthur.setFirstName("Arthur");
arthur.setLastName("Ronald");
arthur.setEnabled(true);
UserApplication financialModuleUser = new UserApplication(new Period(new Date(), null));
financialModuleUser.setUser(arthur);
financialModuleUser.addRole(financialModule.getRoleByDescription("Manager"));
financialModule.addUserApplication(financialModuleUser);
Ваш сайт выглядит как
Website myWebsite = new Website();
myWebsite.addRole(new Role("Member"));
myWebsite.addRole(new Role("WebMaster"));
myWebsite.addRole(new Role("Moderator"));
User you = new User(new Login("#####", "#####"));
you.setFirstName("FirstName");
you.setLastName("LastName");
you.setEnabled(true);
UserApplication myWebsiteUser = new UserApplication(new Period(new Date(), null));
myWebsiteUser.setUser(you);
myWebsiteUser.addRole(myWebsite.getRoleByDescription("WebMaster"));
myWebsite.addUserApplication(myWebsiteUser);
Как видите, веб-мастер, модератор и участник - это просто роли, определенные вашим веб-сайтом. Ничего больше.
Хорошим ресурсом по UML и ORM является книга «Java Persistence with Hibernate».
person
Arthur Ronald
schedule
18.03.2010