2012-02-28 58 views
0

说我有这些类:插入一个Hibernate实体关系

public class Loan { 
    @Id 
    private Long id; 

    @ManyToOne 
    @JoinColumn(name = "lender_id") 
    private User lender; 
} 

public class User { 

    @Id 
    private Long id; 

    @Column 
    private String userName; 

    @OneToMany 
    private List<Loan> loans; 
} 

现在,让我们说我有用户(贷款人)的ID,并在DAO层,我想基础上,id创建Loan的贷款人?

我知道我可以做到以下几点:

User u = userDao.getUserById(1234L); 
loanDao.createLoan(u, "someLoan"); 

但我不知道是否有可能做到这一点无需预先加载,该User记录?

回答

2

没有一种好的方法可以做到这一点,部分原因是它会从根本上导致错误的ORM代码。程序员负责管理实体的内存状态并保持其正确。如果你创建一个新的贷款并且说它属于一个用户,并且一个用户有一个贷款集合,那么你有责任将该贷款添加到用户中! (只要缓存涉及,这会产生真正的后果。)

您正在使用ORM,您需要考虑对象而不是数据库。在外键列中添加数字不是什么重要的事,设置对象的正确的内存中表示模型对您来说很重要。数据库是hibernate的问题。