0

所以我有这个复杂的对象,例如:

@Entity
public class House {

private Kitchen kitchen;
private LivingRoom livingRoom;
private MainBedRoom mainBedRoom;
private Toilet toilet;
etc...


}

现在 House 类中的每个对象(Kitchen、LivingRoom 等)都非常复杂,带有非原始字段等等。

我有以下服务:

@Service
public HouseService {


}

@Service
public KitchenService{


}

.. 等等..

我的问题是:

如果我在我的 HouseService 中创建一个新的 House 对象,我是否必须使用其他服务来实现该创建方法?

似乎我什至根本不需要所有其他服务,因为 House 是所有对象的根,而我只需要一个(显然很大)HouseService?那正确吗?

IE :

HouseService.createNewHouse {

House house  = new House(...);
Kitchen kitchen = new Kitchen(...);
... 

   house.setKitchen(kitchen);
  this.dao.save(house);
  return house; 
  }

}
4

1 回答 1

1

虽然你可以,但不要让你的生活变得复杂。我假设您的每个实体类都有多个 DAO。只是@Inject(或@Autowired) and use them directly in each服务类。

您的@Service课程应该已经完成​​,因此您从其他课程中@Transactional一无所获(除非有特定的业务逻辑) 。@Service

代替

@Service
public class FirstService {
    @Autowired
    private SecondService secondService;
    @Autowired
    private FirstDao firstDao;

    @Transactional
    public void saveFirst(First first) {
        secondService.saveSecond(first.getSecond());
        firstDao.save(first);
    }
}

@Service
public class SecondService {
    @Autowired
    private SecondDao secondDao ;

    @Transactional
    public void saveSecond(Second second) {
        secondDao .save(second);
    }
}

直接去DAO

@Service
public class FirstService {
    @Autowired
    private SecondDao secondDao;
    @Autowired
    private FirstDao firstDao;

    @Transactional
    public void saveFirst(First first) {
        secondDao.save(first.getSecond());
        firstDao.save(first);
    }
}
于 2013-09-04T14:29:50.870 回答