休眠正确启动OneToOne对象
问题描述:
我有下一种情况。我有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((
答
我认为使用新的运营商内部的弹簧味道不好。
不是真的。但是,不管怎样,你在@Entity
类和整个模型层不应该使用new
相反的,你应该移到new
到服务层,因为现在它看起来像业务逻辑是实体类
回到你的问题:你应该更好地重新考虑你的应用程序架构。正如我所说,new
op erator不应该在模型层和@Entity
类中使用。您正在创建新的bean,因此它看起来像是一些逻辑操作。因此,将此操作移至@Service
类,并使用@Repository
作为DAO访问对持久性对象的基本操作。您的DAO将支持并处理@OneToOne
注释,而无需在您的实体bean中编写new
。
Hibernate对所有的持久类 – leeor
对不起一个无参数的构造函数。我的错。我忘了错误的构造函数。但你不明白我的问题。编辑的问题。 – ovod