2015-09-25 75 views
0

我有下一種情況。我有POJO類:休眠正確啓動OneToOne對象

@Entity 
    @Table(name="project") 
    public class Project { 

     public Donation donation; 

     public Project() {} 
     public Project(int param1, int param2 ...) { 
      ...//other field initialisied 
      donation = new Donation(param1, param2); 
     } 

     //methods 

     @OneToOne 
     @JoinColumn(name = "donation_project_id") 
     public Donation getDonation() { 
      return donation; 
     } 
    } 

     public void setDonation(Donation donation) { 
      this.donation = donation; 
     } 
    } 

捐贈類:

@Entity 
@Table(name="donation") 
public class Donation { 

     public Donation() {} 

     public DonationLogic(int param1, int param2) { 
      //initialisation 
     } 
     //other methods 
} 

項目表/類繼電器一些參數到另一個表/類捐贈。兩個類是實體。我使用Spring + Hibernate。我的問題是,如果我正確地啓動類捐贈這是在的項目類的構造函數中創建的?我覺得在Spring裏使用新的運算符味道不好。也許有另一種方式來完成這項任務? - 創建由另一個表/類填充的類/表。也許單獨的兩個類的參數,並不使用一個構造函數來啓動類?但是使用捐贈類的setters?但是,如果我有很多的參數,很多制定者,我會需要使用(((HMM((

+0

Hibernate對所有的持久類 – leeor

+0

對不起一個無參數的構造函數。我的錯。我忘了錯誤的構造函數。但你不明白我的問題。編輯的問題。 – ovod

回答

0

我認爲使用新的運營商內部的彈簧味道不好。

不是真的。但是,不管怎樣,你在@Entity類和整個模型層不應該使用new相反的,你應該移到new到服務層,因爲現在它看起來像業務邏輯是實體類

回到你的問題:你應該更好地重新考慮你的應用程序架構。正如我所說,new op erator不應該在模型層和@Entity類中使用。您正在創建新的bean,因此它看起來像是一些邏輯操作。因此,將此操作移至@Service類,並使用@Repository作爲DAO訪問對持久性對象的基本操作。您的DAO將支持並處理@OneToOne註釋,而無需在您的實體bean中編寫new

有用的鏈接:Effective pattern for data access with JPA