首頁  >  問答  >  主體

spring-mvc - 问个Java 遇见数据库时的对象设计问题

用的 spring mvc + mybatis3 框架,假设有 用户与角色两张表, 以及一张关联表,分别对应的实体 userroleuser_role. 在 service 层, 为这 2 个对象分别建立 IUserService, IRoleService

我想问的是:

  1. 需要为中间表建对象user_role吗?
  2. 如果建了user_role, 需要建IUserRoleService吗?
  3. 中间表的关系维护职责应该放哪个service, 如删除用户同时需删除与角色的关系,删除角色,需删除与用户的关系等等。。

多谢指点!

黄舟黄舟2765 天前406

全部回覆(3)我來回復

  • 高洛峰

    高洛峰2017-04-17 13:03:24

    完全不需要,資料庫設計不一定要跟Java物件設計一致,在你的user物件裡麵包含role,或是role物件包含user就可以了。

    補充:

    public class UserService {
        @Autowired
        private UserRepository userRepository;
    
        @Autowired
        private UserRoleRepository userRoleRepository;
    
        public void deleteUser(User user) {
            userRepository.delete(user);
            userRoleRepository.deleteRoles(user);
        }
    }
    
    public class RoleService {
        @Autowired
        private RoleRepository roleRepository;
    
        @Autowired
        private UserRoleRepository userRoleRepository;
    
        public void deleteRole(Role role) {
            roleRepository.delete(role);
            userRoleRepository.deleteUsers(role);
        }
    }    
    

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-17 13:03:24

    再請教一下, 取得使用者對應的角色,是放在 getUserRoles(User user) 是放在 UserService還是 RoleService ? 判斷依據是什麼?

    回覆
    0
  • 迷茫

    迷茫2017-04-17 13:03:24

    放哪似乎都可以,如果要避免爭論,放到一個單獨的命令裡頭

    回覆
    0
  • 取消回覆