我有如下表格,
作用:
Role_Id Role_Name
201 Manager
202 Supervisor
用户:
User_ID User_Name Role_Id
1 John 201
2 Peter 202
3 Raj 202
我为两个表创建了POJO和hibernate映射文件。
映射文件:
//RoleVO
<class name="RoleVO" table="tbl_Role">
<id name="roleId" column="role_Id" >
<generator class="identity"/>
</id>
<property name="roleName" column="Role_Name" />
</class>
//UserVO
<class name="UserVO" table="tbl_User">
<id name="userId" column="user_Id" >
<generator class="identity"/>
</id>
<property name="userName" column="User_Name" />
<many-to-one name="Role" class="RoleVO" column="Role_Id"/>
</class>
当我通过hibernate在User Table中插入用户详细信息时,我应该获得Role Ref并使用User对象进行设置,还是直接添加&#34; Role Id&#34;在用户表中。
例如,
//First approach:
UserVO usr = new UserVO();
usr.serUserName("Kumar");
usr.setRoleId(202);
session.save(usr);
or
//Second Approach:
UserVO usr = new UserVO();
usr.serUserName("Kumar");
RoleVO role = session.get(RoleVO.class, 202);
usr.setRole(role);
session.save(usr);
哪种方法最好?第一或第二?
答案 0 :(得分:0)
我假设用户角色关联是多对一和单向关联。
在RoleVO
实例中设置UserVO
对象是使用hibernate作为映射文件指示在数据库中插入UserVo
对象的唯一方法:
<many-to-one name="Role" class="RoleVO" column="Role_Id"/>
因此,要在数据库中插入用户详细信息对象,您可以编写:
UserVO user = new UserVO();
//Set user info
...
RoleVO role = (RoleVO) session.get(RoleVO.class, 202);
user.setRole(role);
session.save(user);
我建议您查看此hibernate tutorial以获取更多信息。