将SQL与Java代码分离

Izz*_*zza 3 java sql database

当我必须连接到数据库时,这是我经常遇到的问题; 如何将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
}
Run Code Online (Sandbox Code Playgroud)

有没有办法实现这个目标?或者我们应该只为不同风格的插入,查询等添加功能?

谢谢!

Chr*_*heD 6

如果你想要一个完善的体系结构,你至少需要几层来解决问题.

首先,从模型类开始(大多数情况下,您需要为数据库中的每个表创建一个).自己编写,或者使用ORM(例如EclipseLink,Hibernate)自动生成它们.这些应该是POJO(Plain Old Java Objects),这意味着它们是simple具有属性的对象(例如Name,类型为String,Id类型为integer等...).您的模型对象应该是数据的载体,而不是更多(当然没有逻辑或处理).

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

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

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

这样,您通常不会有超过DAO层的SQL查询,这意味着您的应用程序是a)可维护的,b)以后更容易更改后端.