使用Java的SQL提供程序

使用Java的SQL提供程序,java,database,provider,Java,Database,Provider,我将要创建一个项目,其中我希望有一个类将我的应用程序连接到数据库 我想以最好的面向对象的方式,遵循坚实的原则来做这件事 我的问题是: 将提供者划分为子类(例如从数据库获取信息的子类和可以将数据插入数据库的子类)是否明智?还是将这些功能放在一个大类中?您可以从阅读网站开始。一旦你记下了,再深入研究 简短的回答是:是的,一定要将特定对象/类的持久性代码放在一起 干杯,我建议你看看马丁·福勒的。他有一个关于持久性模式的好章节 这个问题已经解决了很多次:像JPA和Hibernate这样的ORM解决方案,

我将要创建一个项目,其中我希望有一个类将我的应用程序连接到数据库

我想以最好的面向对象的方式,遵循坚实的原则来做这件事

我的问题是:


将提供者划分为子类(例如从数据库获取信息的子类和可以将数据插入数据库的子类)是否明智?还是将这些功能放在一个大类中?

您可以从阅读网站开始。一旦你记下了,再深入研究

简短的回答是:是的,一定要将特定对象/类的持久性代码放在一起


干杯,

我建议你看看马丁·福勒的。他有一个关于持久性模式的好章节

这个问题已经解决了很多次:像JPA和Hibernate这样的ORM解决方案,iBatis映射,SpringJDBC。我无法想象你将如何改进以前所做的工作。如果你不能清楚地表达什么是不同的,我建议你在投资新的东西之前使用一些已经编写、测试和验证过的东西

如果必须的话,我推荐一种通用的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);
}
包持久化;
公共接口通用DAO{
V查找(K键);
列表查找();
K保存(V值);
无效更新(V值);
无效删除(V值);
}

通常,最好按对象(即客户、客户端、汽车)划分这些类,而不是按功能(即读写)划分。这是ORM使用的方法,对于java,请特别关注Hibernate ORM框架

在上面的文档中,您无疑可以在google上找到好的教程

我不同意ORM永远是一条出路

如果您想在数据库附近编程,像查询映射器这样的查询映射器是ORM方法的有用替代方法

MyBatis数据映射器框架使关系数据库与面向对象的应用程序结合使用变得更加容易。MyBatis使用XML描述符或注释将对象与存储过程或SQL语句相耦合。简单性是MyBatis数据映射器相对于对象关系映射工具的最大优势


mybatis是一个使您的生活更加轻松的类。

因此,提供程序是一个包含get data和insert data的大型类?但理论上所有SQL语句都应该在同一个类中?不,不是真的。你似乎太沉迷于理论和你的原始想法了。如果通用DAO的实现是ORM,那么将为您生成SQL。实际上,您可能需要一个通用DAO,并将其扩展为具体的DTO。一旦你的模型中有3个以上的类,你就会想了解JPA和Hibernate:但是如果你想有一个包含所有SQL的提供者类(1个类),这比把1个类分成几个类要好吗?+1-我完全同意。如果没有实体对象模型,ORM就没有意义。