Java中的个人项目,如何处理数据库访问?

1 java oop design-patterns jdbc

我在java中的第一个项目将是一个程序(最终我不得不创建一个GUI界面,但现在CLI会做)来跟踪我的书(类似于图书馆只有一个简单的东西).我需要能够插入,更新,删除,显示所有书籍,更新,搜索(按名称或作者或日期).

对于设计我正在考虑一个主类库,它将具有连接到db并检索数据的所有上述方法.

这种方法可以吗?我意识到这很简单,但这是我的第一个真正的项目,我希望得到一些反馈.

此外,考虑阅读设计模式和数据库设计还为时尚早吗?

Bal*_*usC 5

您想查找DAO(数据访问对象)模式.

首先,创建一个代表一本书(也称为实体)的Javabean类.

public class Book {

    private Long id;
    private String title;
    private String author;
    private Date date;

    // Add/generate c'tor/getter/setter/hashcode/equals/tostring boilerplate.
}
Run Code Online (Sandbox Code Playgroud)

然后,创建一个DAO类,在书上执行所需的操作.

public class BookDAO {

    public Book find(Long id) throws SQLException {
        // ...
    }

    public List<Book> search(Book example) throws SQLException {
        // ...
    }

    public List<Book> list() throws SQLException {
        // ...
    }

    public List<Book> listByDate(Date before, Date after) throws SQLException {
        // ...
    }

    public void save(Book book) throws SQLException {
        // ...
    }

    public void delete(Book book) throws SQLException {
        // ...
    }

}
Run Code Online (Sandbox Code Playgroud)

在这个类中,您可以编写所有必需的JDBC样板.

最后,您最终以下列方式使用它:

Book newBook = new Book("Pro JPA 2", "Merrick Schincariol");
bookDAO.save(newBook);
// ...
Book book = bookDAO.find(1L);
// ...
List<Book> allBooks = bookDAO.list();
// ...
List<Book> matchingBooks = bookDAO.search(new Book(null, "Schincariol"));
// ...
Run Code Online (Sandbox Code Playgroud)

您可以在此处找到包含基本启动示例的详细文章.


为了更进一步,您可能会发现JPA(Java Persistence API)很有趣.它在JDBC上添加了一个额外的层,以便您可以以更面向对象的方式与DB交互,而无需编写所有JDBC样板.确实,它是Java EE的一部分,但您也可以单独使用它.另请参阅本教程,了解如何在桌面/客户端应用程序中使用JPA