当我必须连接到数据库时,这是我经常遇到的一个问题。如何将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 }
有什么办法可以做到这一点?还是我们应该只是为不同类型的插入,查询等添加功能?
谢谢!
如果您想要一个声音体系结构,那么您将需要至少几个层次来分离问题。
首先,从模型类开始(大多数情况下,数据库中的每个表都需要一个)。自己编写它们,或使用ORM(例如EclipseLink,Hibernate)自动生成它们。这些应该是POJO(普通的旧Java对象),这意味着它们是simple具有属性的对象(例如Name,StringId类型,integer类型等)。您的模型对象应该是数据的载体,仅此而已(一定没有逻辑或处理能力)。
simple
Name
Id
然后,为所有模型类创建DAO(数据访问对象)(如果需要,可以构建要继承的GenericDao类)。在这里,您将通过将 模型 对象作为参数的方法来提供CRUD操作(插入,更新,删除)。这是特定于数据库后端的,尽管您可以根据需要插入与数据库无关的DAO层。
第三,每个逻辑类组都有一个 服务 或 管理器 层(这是所有前端和控制器代码都应与之对话的所有所需功能的层)。可以调用一种典型的方法registerCustomer(...)(可以使用不同的DAO类)。或findCustomerByName()等
registerCustomer(...)
findCustomerByName()
以这种方式构造您的应用程序称为MVC(模型-视图-控制器),因此如果您需要更多信息,这就是google的术语。
MVC
这样,您通常将没有比DAO层更高的SQL查询,这意味着您的应用程序是a)可维护的,并且b)以后更改后端更容易。