发票是业务操作。我会说这种逻辑存在于您的服务层中。您对发票进行更新以将其标记为无效,然后将其传递到数据层进行保存。
数据层应包含纯CRUD类型的方法,即添加/保存/查找。
使用许多现代数据框架,您甚至不需要编写数据层…例如,请参见http://blog.springsource.org/2011/02/10/getting-
started-with-spring-data-
jpa/

发票是业务操作。我会说这种逻辑存在于您的服务层中。您对发票进行更新以将其标记为无效,然后将其传递到数据层进行保存。
数据层应包含纯CRUD类型的方法,即添加/保存/查找。
使用许多现代数据框架,您甚至不需要编写数据层…例如,请参见http://blog.springsource.org/2011/02/10/getting-
started-with-spring-data-
jpa/