Voici comment nous mettons en œuvre cette fonctionel
Comme vous pouvez le voir, nous avons beaucoup d'applications (ici, il se comporte comme votre site web). Modérateur, WebMaster et membre, comme indiqué dans votre mappage, ce serait mieux comme un rôle. Que se passe-t-il si vous devez ajouter un nouveau "rôle"? Peut-être que vous devez changer tout votre modèle.
Chaque UserApplication (UserWebsite) a ses dates de début et de fin. Et chaque application a son propre rôle. Un site Web de la Banque a besoin d'un rôle de gestionnaire. Un site de la Société d'assurance-maladie a besoin d'un rôle d'agent et ainsi de suite ...
MISE À JOUR
Je comprends la composition login/utilisateur (partie/ensemble) de la relation. Avant de continuer, voir ce answer sur la composition par rapport à l'agrégation.
Mais ce que je ne comprends pas le but des UserApplication et des classes d'application
Think d'application comme votre site Web. Je travaille pour une grande compagnie d'assurance maladie où nous avons beaucoup de modules (chaque module (application) a son propre site web). Mais certains utilisateurs, pas tous, peuvent utiliser chaque module. Cela explique pourquoi je définis UserApplication.
rôle de rôle dans ce processus de connexion
Aucun. Cela donne simplement un rôle UserApplication. Je peux utiliser le module financier, qui définit les rôles suivants: Manager, Customer et Other, où je peux jouer le rôle de Manager.Mais je peux vous attribuer un utilisateur temporaire (startDate et endDate) en tant que client pour utiliser le module financier.
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);
Votre site ressemble
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);
Comme vous pouvez le voir, WebMaster, modérateur et membres ne sont que des rôles définis par votre site Web. Rien d'autre.
Une bonne ressource sur UML et ORM est Java Persistence avec le livre Hibernate.
Opps, j'aurais dû laisser le Web_master hériter du modérateur afin de ne pas avoir à réécrire la fonction delete_reg_member – Anthony