插入具有关系的Hibernate实体

时间:2012-02-28 05:32:06

标签: java hibernate orm relational-database entity-relationship

说我有这些课程:

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层,我想根据贷方的Loan创建一个id

我意识到我可以做到以下几点:

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

但我想知道是否可以在不加载User记录的情况下进行此操作?

1 个答案:

答案 0 :(得分:2)

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

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