2012-02-28 60 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的問題。