java Dao接口设计要不要批量操作?
Should there be batch operation for java Dao interface design?
通常,我们有如下的 Dao 接口:
void add(long id);
boolean delete(long id);
可不可以增加下面的批量操作接口来一次操作?
void add(long id);
boolean delete(long id);
void add(long[] ids);
boolean delete(long[] ids);
这是一个糟糕的设计吗?为什么?
Could we have below additional batch operation interfaces to operate in a time?
如果我们谈论 "Database Access Objects" 那么是的,我编写的 DAO 层次结构肯定包含批处理调用。
它们之所以强大的原因之一是我们通常对底层数据库存储进行 DAO 操作,并且使用单个事务或单个数据库连接来进行这些更改与进行插入或插入相比可以显着加快操作速度1 1 删除 1.
大多数 ORM 库也会在事务内部禁用自动提交,从而显着加快同时插入或删除一批实体的速度。
例如,我的 ORMLite 库有:
- Dao.create(Collection) 创建项目集合。
- Dao.delete(Collection) 删除项目集合。
通常,我们有如下的 Dao 接口:
void add(long id);
boolean delete(long id);
可不可以增加下面的批量操作接口来一次操作?
void add(long id);
boolean delete(long id);
void add(long[] ids);
boolean delete(long[] ids);
这是一个糟糕的设计吗?为什么?
Could we have below additional batch operation interfaces to operate in a time?
如果我们谈论 "Database Access Objects" 那么是的,我编写的 DAO 层次结构肯定包含批处理调用。
它们之所以强大的原因之一是我们通常对底层数据库存储进行 DAO 操作,并且使用单个事务或单个数据库连接来进行这些更改与进行插入或插入相比可以显着加快操作速度1 1 删除 1.
大多数 ORM 库也会在事务内部禁用自动提交,从而显着加快同时插入或删除一批实体的速度。
例如,我的 ORMLite 库有:
- Dao.create(Collection) 创建项目集合。
- Dao.delete(Collection) 删除项目集合。