小编典典

将SQL与Java代码分开

sql

当我必须连接到数据库时,这是我经常遇到的一个问题。如何将SQL与普通的Java代码分开?我通常为数据库连接使用一个单独的类,但是,当您在每个数据库中有多个数据库和多个表时,总是很难做到这一点100%

例如,如果要将所有Java
SQL放在名为DBConnector.java的类中,我们如何通用地为不同的插入,删除,数据检索等进行编码?我认为理想的情况是,所有SQL语句都应该在同一类中,并且应该与数据库应用程序范围内的同一操作的不同风格兼容,从而在逻辑上与其余代码分离。

public void insertData (String db, String table, <Whatever Fields to be Inserted>)
{
  //generic SQL INSERT statement and execution 
}

public ResultSet retrieveData (String db, String table, <Whatever Fields Relevant>) 
{
  //generic retrieval of data
}

有什么办法可以做到这一点?还是我们应该只是为不同类型的插入,查询等添加功能?

谢谢!


阅读 185

收藏
2021-04-07

共1个答案

小编典典

如果您想要一个声音体系结构,那么您将需要至少几个层次来分离问题。

首先,从模型类开始(大多数情况下,数据库中的每个表都需要一个)。自己编写它们,或使用ORM(例如EclipseLink,Hibernate)自动生成它们。这些应该是POJO(普通的旧Java对象),这意味着它们是simple具有属性的对象(例如Name,StringId类型,integer类型等)。您的模型对象应该是数据的载体,仅此而已(一定没有逻辑或处理能力)。

然后,为所有模型类创建DAO(数据访问对象)(如果需要,可以构建要继承的GenericDao类)。在这里,您将通过将 模型
对象作为参数的方法来提供CRUD操作(插入,更新,删除)。这是特定于数据库后端的,尽管您可以根据需要插入与数据库无关的DAO层。

第三,每个逻辑类组都有一个 服务管理器
层(这是所有前端和控制器代码都应与之对话的所有所需功能的层)。可以调用一种典型的方法registerCustomer(...)(可以使用不同的DAO类)。或findCustomerByName()

以这种方式构造您的应用程序称为MVC(模型-视图-控制器),因此如果您需要更多信息,这就是google的术语。

这样,您通常将没有比DAO层更高的SQL查询,这意味着您的应用程序是a)可维护的,并且b)以后更改后端更容易。

2021-04-07