【发布时间】:2011-02-04 14:16:28
【问题描述】:
我正在使用 Hibernate,但遇到了流程/最佳实践问题。例如,假设我们有 2 个实体 Truck 和 Wheel。轮子有 2 个属性 wheelid 和 wheelmanufacturer。所以在我的应用程序中,用户可以创建一辆卡车,他们可以选择数据库中存在的各种车轮或创建自己的车轮。
我的问题是当我从前端收到一个卡车对象时,我如何确保如果轮子确实存在于数据库中,则使用 db 副本,如果它不存在于数据库中,它被添加。这是我的服务现在如何工作的基本示例
public Truck saveTruck( Truck truck )
{
//Yes, this is a two-wheel truck =)
Wheel frontWheel = truck.getFrontWheel();
if( frontWheel != null && frontWheel.getWheelId() != null )
{
Wheel dbWheel = wheelDao.getWheelById( frontWheel.getWheelId() );
if( dbWheel != null )
{
truck.setFrontWheel(dbWheel );
}
}
}
这样做的动机是我不希望用户能够覆盖数据库中的对象,但是他们需要能够编写自定义对象。上面的代码可以工作,但是如果你有一辆有 10 个属性的卡车,它就变得非常多余了。我想知道其他人是如何解决这个问题的。
谢谢
【问题讨论】: