假设我有一个拥有Dog对象集合的Person类。这种关系是双向的。现在包含集合的Web应用程序域对象是否应该添加和删除项目方法?
public class Person {
private List<Dog> dogs;
// getter and setter for dogs
}
public class Dog {
private Person person;
// getter and setter for person
}
好吧,如果我只是用这些对象的工作,我会在人方法可用于添加狗和删除狗,以便客户端不直接与收集。
public void removeDog(Dog dog) {
dogs.remove(dog);
dog.setPerson(null);
}
public void addDog(Dog dog) {
dog.setPerson(this);
dogs.add(dog);
}
或沿着这些线的东西。
我的问题来处理这些对象在服务层。我可以通过addDog给一个人添加一条新狗,并简单地保存将自动持续新狗的人。但是,通过removeDog移除一只狗,然后保存该人将不会自动从持久存储中删除该狗......它只会将狗引用设置为null。
所以我最终的东西,如:
Dog dog = dogDAO.getDogById(int id);
dogDAO.remove(dog);
因为这是一个Web应用程序以及人员和狗没有在内存中保存,这工作得很好,我从来没有叫Person.removeDog()。下次我加载最初引用此狗的人时,它将不包含该狗,因为它已从存储中移除。同样的事情可以适用于添加狗:
Person person = personDAO.getPersonById(int id);
Dog dog = new Dog();
dog.setPerson(person);
dogDAO.save(dog);
这同样适用,甚至罚款,我从来没有叫Person.addDog()。
然后在我的Person类中使用addDog和removeDog方法有什么意义吗?