gpt4 book ai didi

java - 如何决定关联表是否需要单独的实体和 DAO?

转载 作者:太空宇宙 更新时间:2023-11-04 13:55:31 25 4
gpt4 key购买 nike

如何决定关联表是否需要单独的实体和 DAO?

假设我有 3 个表:userroleuser_roleuser_role 是关联表。

create table user (user_id int not null primary key, login varchar(50) not null unique key, password varchar(100))
create table role (role_id int not null primary key, description varchar(100))
create table user_role (user_role_id int not null identity(1,1) primary key, user_id int not null foreign key references user(user_id), role_id int not null foreign key references role(role_id))

现在我将为 userrole 表提供单独的实体和 DAO。

public class User {
private int userId;
private String login;
private String password;
// getters and setters
}
public interface UserDAO {
User getUserById(int userId);
void insertUser(User user);
void updateUserById(User user);
void deleteUserById(User user);
}

public class Role {
private int roleId;
private String description;
// getters and setters
}
public interface RoleDAO {
User getRoleById(int roleId);
void insertRole(Role role);
void updateRoleById(Role role);
void deleteRoleById(Role role);
}

我将有 3 个屏幕:

  • 屏幕 1:我将有一个屏幕来维护 user 表上的 CRUD 操作。

  • 屏幕 2:我将有一个屏幕来维护 role 表上的 CRUD 操作。

  • 屏幕 3:我将有一个屏幕,用户将在其中分配角色。

但我对如何处理 user_role 表感到困惑。

a) User 实体是否应该具有关联的Role 列表。这样就够了吗?

public class User {
private int userId;
private String login;
private String password;
private Set<Role> roles;
// getters and setters
}

b) Role 实体是否应该具有关联的User 列表。这样就够了吗?

public class Role {
private int roleId;
private String description;
private Set<User> users;
// getters and setters
}

c) 我是否应该为 user_role 表拥有一个单独的实体和 DAO,如下所示:

public class UserRole {
private int userRoleId;
private User user;
private Role role;
}
public interface UserRoleDAO {
User getUserRoleById(int userRoleId);
void insertUserRole(UserRole userRole);
void updateUserRoleById(UserRole userRole);
void deleteUserRoleById(UserRole userRole);
}

最佳答案

我想,由于它是用户和角色之间的双向关系,因此您应该在 User.java 中拥有一组角色,并在 Roles.java 中拥有一组用户。绝对需要一个单独的实体 user_roles。如果您有用户的 dao,您可以在 userdao 中使用以下方法

 User getUserRoleById(int userRoleId);
void insertUserRole(UserRole userRole);
void updateUserRoleById(UserRole userRole);
void deleteUserRoleById(UserRole userRole);

关于java - 如何决定关联表是否需要单独的实体和 DAO?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29867750/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com