我打算用hibernate设计一个新系统。例如,如果我创建一个带有映射的休眠类
@Entity
@Table(name="user")
public class User{
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Integer userid;
private String username;
private String password;
@OneToOne
private Role userrole;
.....
}
添加角色类
@Entity
public class Role {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int id;
private String roleName;
...
}
在这种情况下,每次我将用户添加到数据库时,我都必须从 db 获取角色对象并添加到用户对象并保存它。如果我将这样的映射定义到其他复杂的设计类,我必须从 db.xml 获取相关的映射类。我觉得这对 db 来说是一个额外的负担。他们有什么有效的方法吗?
我有另一个计划,没有休眠映射
@Entity
@Table(name="user")
public class User{
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Integer userid;
private String username;
private String password;
private Integer roleid;
....
}
在这种情况下,我可以将 id 添加到用户对象并保存。但是数据库类不会被映射。如果我对所有类都这样做,我将拥有没有在 db 内映射的 db 表如果我这样做是为了获取角色名称,我必须创建另一个 sql 来获取角色。
因此,在保存对象的第一种方法中,我得到了对象并保存,而在第二种方法中,我们必须创建两个 sql 来获取这两个对象。这是实现它的好方法吗?
从这两个设置中,哪个好,高效且易于使用?请讨论推荐的方式吗?