Meilleure façon de faire face JPA fusion?

Je suis nouveau à l'ensemble de la JPA chose donc j'ai plusieurs questions sur la meilleure façon de gérer JPA de fusion et de persister.

  1. J'ai un objet utilisateur qui doit être mis à jour (certaines valeurs comme la date et le nom). Dois-je les fusionner l'objet passé en premier ou est-il plus sûr de trouver le nouvel objet?

    Actuellement mon code pour la mise à jour d'un utilisateur ressemble à ceci:

    public void updateUserName(User user, String name) {
         //maybe first merge it?
         user.setName(name);
         user.setChangeDate(new Date());
         em.merge(user);   
     }

    Comment puis-je être sûr que l'utilisateur n'a pas été manipulé avant la mise à jour de la méthode est appelée? Est-il sécuritaire de faire quelque chose comme ceci:

     public void updateUserName(int userId, String name) {
         User user = em.getReference(User.class, userId);
         user.setName(name);
         user.setChangeDate(new Date());
         em.merge(user);   
     }

    Peut-être d'autres solutions? J'ai regardé plusieurs vidéos et a vu de nombreux exemples, mais ils étaient tous différents et personne n'a expliqué ce que la meilleure pratique est.

  2. Quelle est la meilleure approche pour ajouter des enfants à des relations? Par exemple, mon objet utilisateur a une connexion à plusieurs groupes. Devrais-je appeler la JPA gestionnaire pour les utilisateurs et il suffit d'ajouter le nouveau groupe à la liste de groupe utilisateur ou dois-je créer le groupe dans le cadre d'un groupe de gestionnaire de persister et de l'ajouter manuellement à mon objet utilisateur?

Espère que quelqu'un ici a une idée 😉

OriginalL'auteur ManuPanu | 2013-04-05