你们的 save 方法是写在实体上,还是写 Dao 上?
注:Dao 在不同语言中的叫法可能不一样。Dao 可以理解为对数据进行持久化的具体实现。 关于实体的保存,笔者知道行业内有两种方式: dogDao.save(dog); dog.save(); 相信不少同学,现实中,通常使用第一种,很少见到第二种写法。 为了让大家站在同一个讨论上下文,笔者决定贴出更详细的代码。 注:以下代码会省略很多本文不相关的代码,比如数据校验。读者朋友不必太纠结。 第一种写法:save 方法写在 Dao 上 Dog dog = new Dog() dog.setName('didi'); dog.setColor('white'); dogDao.save(dog); 第二种写法:save 方法写在实体上 // DogService.java Dog dog = new Dog() dog.setName('didi'); dog.setColor('white'); dog.save(); 这两种写法,有什么区别吗?事实上,从字面上看,没有什么区别。因为 Dog 类的 save() 方法是这样实现: // Dog.java public void save(){ dogDao.save(this); } 但是从抽象的角度来看,就不一样了。 假如你的项目中存在这样的抽象: 如果采用第一种写法,意味着,每多出多一种 Animal,我们就必须多写一套 Service。Service 中会很多这样的方法: // DogService.java void save(Dog dog){ dogDao.save(dog); } // FishService.java void save(Fish fish){ fishDao.save(fish); } // BirdService.java void save(Bird bird){ birdDao.save(bird); } 相信大家对于以上代码并不陌生。 ...