【发布时间】:2026-02-09 19:35:01
【问题描述】:
我即将创建一个项目,我希望在其中有一个将我的应用程序连接到数据库的类。
我想以最好的面向对象的方式,遵循 Solid 原则!
我的问题是:
将 Provider 划分为子类是否明智,例如从数据库获取信息的子类和可以将数据插入数据库的子类?还是您将这些功能保留在一个庞大的类中?
【问题讨论】:
我即将创建一个项目,我希望在其中有一个将我的应用程序连接到数据库的类。
我想以最好的面向对象的方式,遵循 Solid 原则!
我的问题是:
将 Provider 划分为子类是否明智,例如从数据库获取信息的子类和可以将数据插入数据库的子类?还是您将这些功能保留在一个庞大的类中?
【问题讨论】:
我建议您查看 Martin Fowler 的 Patterns of Enterprise Application Architecture。他有一篇关于持久性模式的精彩章节。
这个问题已经解决了很多很多次:ORM 解决方案,如 JPA 和 Hibernate、iBatis 映射、Spring JDBC。我无法想象你将如何改进以前所做的事情。如果您无法清楚说明有何不同,我建议您在投资新事物之前先使用经过编写、测试和验证的内容。
如果必须,我建议使用通用 DAO。这是一个非常简单的:
package persistence;
public interface GenericDao<K, V> {
V find(K key);
List<V> find();
K save(V value);
void update(V value);
void delete(V value);
}
【讨论】:
我不同意 ORM 总是要走的路。
如果您想在靠近数据库的地方进行编程,像 mybatis 这样的查询映射器是 ORM 方法的有用替代方案。
MyBatis 数据映射器框架可以更轻松地将关系数据库与面向对象的应用程序一起使用。 MyBatis 使用 XML 描述符或注释将对象与存储过程或 SQL 语句耦合。简单性是 MyBatis 数据映射器相对于对象关系映射工具的最大优势。
mybatis 是 supported by Spring,这让您的生活更加更轻松。
【讨论】:
【讨论】:
通常最好按对象(即客户、客户、汽车)而不是功能(即读写)来拆分这些类。这是ORM使用的方法,java具体看Hibernate ORM Framework
http://docs.jboss.org/hibernate/orm/3.5/api/
上面的文档,毫无疑问你可以在 google 上找到好的教程
【讨论】: