如何将Java程序更改为使用数据库而不是arraylist?

如何将Java程序更改为使用数据库而不是arraylist?,java,mysql,arraylist,Java,Mysql,Arraylist,在我的java程序中,我有一个book类和一个library类。 库将book对象存储在数组列表中,然后我将其显示在屏幕上 我可以使用函数添加书籍和删除书籍 我还使用AbstractJtableModel添加和删除书籍 但是现在我想使用数据库MySQL,而不是数组列表 我应该如何更改我的程序?将图书的检索和存储本身抽象为一个类-您不希望持久性逻辑与业务逻辑混合在一起。我建议创建一个名为BookStorageDAO的接口,然后您就可以拥有该接口的各种实现。一种实现可能是将书籍存储在ArrayLis

在我的java程序中,我有一个book类和一个library类。 库将book对象存储在数组列表中,然后我将其显示在屏幕上

我可以使用函数添加书籍和删除书籍

我还使用AbstractJtableModel添加和删除书籍

但是现在我想使用数据库MySQL,而不是数组列表


我应该如何更改我的程序?

将图书的检索和存储本身抽象为一个类-您不希望持久性逻辑与业务逻辑混合在一起。我建议创建一个名为BookStorageDAO的接口,然后您就可以拥有该接口的各种实现。一种实现可能是将书籍存储在ArrayList中,而另一种实现可能是将书籍存储在数据库中


通过这种方式,您可以在业务逻辑中使用接口,并随时交换实现。

将图书的检索和存储抽象为一个类,而不是将持久性逻辑与业务逻辑混为一谈。我建议创建一个名为BookStorageDAO的接口,然后您就可以拥有该接口的各种实现。一种实现可能是将书籍存储在ArrayList中,而另一种实现可能是将书籍存储在数据库中


通过这种方式,您可以在业务逻辑中使用接口,并随时交换实现。

好的,您需要编写整个应用程序: 您需要创建一个数据库,至少有一个表,您需要将库添加到类路径,并使用jdbc从数据库中获取数据


或者,您需要添加jdbc并使用类似的ORM框架,但取决于您的Java知识,如果您创建大型应用程序,这种方法在将来可能更难但更易于维护。您可以下载简单的hibernate应用程序,它对Honey:执行CRUD操作,您可以从TestExample类中提取类似于Javid Jamae建议的接口,并根据您的需要将Honey类与Book交换

好吧,您需要编写整个应用程序: 您需要创建一个数据库,至少有一个表,您需要将库添加到类路径,并使用jdbc从数据库中获取数据


或者,您需要添加jdbc并使用类似的ORM框架,但取决于您的Java知识,如果您创建大型应用程序,这种方法在将来可能更难但更易于维护。你可以下载一个简单的Hibernate应用程序,它用蜜进行CRUD操作:你可以从TestExcel类中提取类似Javid Jamae建议的接口,并根据你的需要将蜜类与书交换

你可以考虑使用数据访问对象DAO模式。只要在谷歌上搜索一下,你就会找到大量关于这个主题的文章。基本上,您将使用以下方法创建LibraryDao接口:

public interface LibraryDao {
    public void storeLibrary(Library library)
    public Library loadLibrary(long id)
    public List<Library> searchByTitle(String title)
    //...
}

您可以使用直接SQL实现此接口,也可以使用对象关系映射ORM工具来实现它。我强烈建议阅读Hibernate和JPA规范

> P>您可以考虑使用数据访问对象DAO模式。只要在谷歌上搜索一下,你就会找到大量关于这个主题的文章。基本上,您将使用以下方法创建LibraryDao接口:

public interface LibraryDao {
    public void storeLibrary(Library library)
    public Library loadLibrary(long id)
    public List<Library> searchByTitle(String title)
    //...
}

您可以使用直接SQL实现此接口,也可以使用对象关系映射ORM工具来实现它。我强烈建议阅读Hibernate和JPA规范

您仍然可以在GUI中使用ArrayList来持久化和显示数据。不同之处在于,您需要从数据库保存和加载该ArrayList的逻辑,以便即使在程序结束后也能存储数据


补充说明,扩展了DefaultTableModel,而不是AbstractJtabelModel。它为您完成了一些方法。

您仍然可以在GUI中使用ArrayList来持久化和显示数据。不同之处在于,您需要从数据库保存和加载该ArrayList的逻辑,以便即使在程序结束后也能存储数据


补充说明,扩展了DefaultTableModel,而不是AbstractJtabelModel。它为您完成了一些方法。

您本身不需要DAO,但这些答案并没有错

关注点分离

您需要做的是根据关注点分离应用程序,这是一种称为。关注点重叠是一个漏洞,因此为了解决这个问题,您可以根据关注点将应用程序分为几层或一个堆栈。典型的堆栈可能包括:

Data Access Layer (read/write data)
Service Layer (isolated business logic)
Controller (Link between view and model)
Presentation (UI)
等等,但这只能部分解决你的问题

编程到接口

正如其他人提到的,您还需要抽象代码,这将允许您使用。这非常容易实现。你所要做的就是:

为什么这样更好

您已经定义了与人员交互的合同
n模型,并且您的应用程序遵守此契约,而不暴露任何实现细节。这意味着您可以使用Hibernate实现PersonService,然后再决定使用JPA,或者使用straight JDBC或Spring等,即使您必须重构实现代码,您的应用程序代码仍然保持不变。您所要做的就是将新的实现放在类路径上,并找到它。提示:将很好地解决这个问题。

您不需要DAO本身,但这些答案并没有错

关注点分离

您需要做的是根据关注点分离应用程序,这是一种称为。关注点重叠是一个漏洞,因此为了解决这个问题,您可以根据关注点将应用程序分为几层或一个堆栈。典型的堆栈可能包括:

Data Access Layer (read/write data)
Service Layer (isolated business logic)
Controller (Link between view and model)
Presentation (UI)
等等,但这只能部分解决你的问题

编程到接口

正如其他人提到的,您还需要抽象代码,这将允许您使用。这非常容易实现。你所要做的就是:

为什么这样更好


您已经定义了与接口中的Person模型交互的契约,并且您的应用程序遵守该契约,而不暴露任何实现细节。这意味着您可以使用Hibernate实现PersonService,然后再决定使用JPA,或者使用straight JDBC或Spring等,即使您必须重构实现代码,您的应用程序代码仍然保持不变。您所要做的就是将新的实现放在类路径上并找到它提示:这样做会很好。

关注点分离不是一种模式,而是一种概念。在我看来,它是一种模式,因为缺乏关注点肯定会导致反模式。模式到底是什么,特别是如果替代方案只是一个概念?你有什么建设性的东西要包括在内吗?我怀疑学究会帮OP解决他/她的问题。谢谢,老兄,我很乐意这么做,但有没有这样的例子,让我了解一下。任何教程我想我应该说的是,说你不需要DAO,然后解释DAO工作原理背后的概念,即分离关注点,将DAO重命名为服务,从其他答案中复制代码,这是非常无用的。你可以对别人的答案发表评论。就我的2美分。分离关注点不是一种模式,而是一种概念。在我看来,这是一种模式,因为缺乏关注点肯定会导致反模式。模式到底是什么,特别是如果替代方案只是一个概念?你有什么建设性的东西要包括在内吗?我怀疑学究会帮OP解决他/她的问题。谢谢,老兄,我很乐意这么做,但有没有这样的例子,让我了解一下。任何教程我想我应该说的是,说你不需要DAO,然后解释DAO工作原理背后的概念,即分离关注点,将DAO重命名为服务,从其他答案中复制代码,这是非常无用的。你可以对别人的答案发表评论。只要我的2美分。