Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java个人项目中,如何访问数据库?_Java_Oop_Design Patterns_Jdbc - Fatal编程技术网

在Java个人项目中,如何访问数据库?

在Java个人项目中,如何访问数据库?,java,oop,design-patterns,jdbc,Java,Oop,Design Patterns,Jdbc,我在java中的第一个项目将是一个程序,最终我必须创建一个GUI界面,但现在CLI可以跟踪我的书籍,类似于图书馆只有一个更简单的界面。 我需要能够插入,更新,删除,显示所有的书,更新,按姓名或作者或日期搜索 对于这个设计,我考虑了一个主类库,它将把上面所有的方法都作为连接到数据库并检索数据的方法 这个方法行吗?我意识到这很简单,但这是我的第一个真正的项目,我希望得到一些反馈 还有,考虑设计模式和数据库设计是否太早?p> 我建议您使用Hibernate,这是一种使用面向对象的数据库接口的工具。在您

我在java中的第一个项目将是一个程序,最终我必须创建一个GUI界面,但现在CLI可以跟踪我的书籍,类似于图书馆只有一个更简单的界面。 我需要能够插入,更新,删除,显示所有的书,更新,按姓名或作者或日期搜索

对于这个设计,我考虑了一个主类库,它将把上面所有的方法都作为连接到数据库并检索数据的方法

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


还有,考虑设计模式和数据库设计是否太早?p> 我建议您使用Hibernate,这是一种使用面向对象的数据库接口的工具。在您的项目中,您将拥有一组对应于DB实体的bean类以及一些XML配置和映射文件。还有一个反向工程工具可以从数据库自动创建此类和XML。因此,您可以这样做:从实体关系方案开始设计数据库,创建数据库,例如在Eclipse中安装Hibernate,运行Hibernate反向工程,然后首先在纸上开始程序设计,然后使用代码;这样你可以避免事后的许多烦恼

Hibernate是一个高级工具。如果您编写这个程序只是为了学习Java和DB访问,那么最好从基本的JDBC开始


无论如何,我相信已经有很多管理书籍的程序了。我个人更喜欢社交网络,在那里你可以管理和交换书籍!但我想你的程序是一种练习。

我建议你使用Hibernate,一种使用面向对象接口访问数据库的工具。在您的项目中,您将拥有一组对应于DB实体的bean类以及一些XML配置和映射文件。还有一个反向工程工具可以从数据库自动创建此类和XML。因此,您可以这样做:从实体关系方案开始设计数据库,创建数据库,例如在Eclipse中安装Hibernate,运行Hibernate反向工程,然后首先在纸上开始程序设计,然后使用代码;这样你可以避免事后的许多烦恼

Hibernate是一个高级工具。如果您编写这个程序只是为了学习Java和DB访问,那么最好从基本的JDBC开始


无论如何,我相信已经有很多管理书籍的程序了。我个人更喜欢社交网络,在那里你可以管理和交换书籍!但我想你的程序是一个练习。

你还需要至少一本教科书——很难想象你的库接口会是什么样子。一个好主意是使用库接口而不是类,这样您就可以有多个存储实现——现在您想要使用DB,然后您可能突然想要使用XML。我还建议不要将Library类设为main,而是创建一个单独的LibraryCLI类。然后,您可以稍后添加LibraryGUI,而不必对库类本身做任何事情。分离总是好的


不,阅读设计模式永远不会太早。你越早开始了解这些事情,就越好。否则,您将得到不可使用和不可维护的代码。好吧,你最终可能会得到一些,只是程度较轻,如果你至少在实现它们之前尝试弄清楚如何做,那么修复起来可能会容易得多。

你还需要至少一本类书——很难想象你的库接口会是什么样子。一个好主意是使用库接口而不是类,这样您就可以有多个存储实现——现在您想要使用DB,然后您可能突然想要使用XML。我还建议不要将Library类设为main,而是创建一个单独的LibraryCLI类。然后,您可以稍后添加LibraryGUI,而不必对库类本身做任何事情。分离总是好的


不,阅读设计模式永远不会太早。你越早开始了解这些事情,就越好。否则,您将得到不可使用和不可维护的代码。好吧,你最终可能会遇到一些问题,只是程度较轻,如果你至少在实现它们之前想办法解决这些问题,可能会更容易解决。

使用设计模式会更好,而不是使用静态方法。

使用设计模式会更好,而不是使用静态方法。

您希望查找模式

首先,创建一个Javabean类,它表示一本书,也称为实体

然后,创建一个DAO类,它在bo上执行所需的操作 好的

在这个类中,您可以编写所有必要的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"));
// ...
您可以找到一篇包含基本启动示例的详细文章

为了更进一步,您可能会发现Java持久性API很有趣。它在JDBC上添加了一个额外的层,这样您就可以以更面向对象的方式与DB交互,而无需编写所有JDBC样板文件。没错,它是JavaEE的一部分,但您也可以独立使用它。另请参阅关于在桌面/客户端应用程序中使用JPA的说明。

您希望查找该模式

首先,创建一个Javabean类,它表示一本书,也称为实体

然后,创建一个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 {
        // ...
    }

}
在这个类中,您可以编写所有必要的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"));
// ...
您可以找到一篇包含基本启动示例的详细文章


为了更进一步,您可能会发现Java持久性API很有趣。它在JDBC上添加了一个额外的层,这样您就可以以更面向对象的方式与DB交互,而无需编写所有JDBC样板文件。没错,它是JavaEE的一部分,但您也可以独立使用它。请参阅在桌面/客户端应用程序中使用JPA。

虽然对于您的小型个人应用程序可能会过份,但您可能需要考虑三层方法。通过n层体系结构,数据管理在逻辑上被分为不同的层。例如,三层通常是用户界面->业务逻辑->数据访问

每一层只知道它下面的一层。UI调用业务层,业务层调用数据访问层,数据访问层最终查询数据库。这些层本身也是多层的,这也很常见。例如,通常最好使用DAO设计模式,但也使用服务层,该层进一步抽象DAO层,并可能执行其他业务逻辑,因此您的体系结构可能如下所示:

UI=>业务逻辑=>服务=>DAO


在您的例子中,您的域模型非常简单。您有一个域实体,一本书。这是唯一的持久类。再说一次,像Hibernate这样的ORM框架可能有些过分,但它是一个非常方便的学习工具。它可能值得使用,因为它使数据持久化变得非常简单

>虽然你的小个人应用程序可能会过份,但你可能需要考虑一个三层的方法。通过n层体系结构,数据管理在逻辑上被分为不同的层。例如,三层通常是用户界面->业务逻辑->数据访问

每一层只知道它下面的一层。UI调用业务层,业务层调用数据访问层,数据访问层最终查询数据库。这些层本身也是多层的,这也很常见。例如,通常最好使用DAO设计模式,但也使用服务层,该层进一步抽象DAO层,并可能执行其他业务逻辑,因此您的体系结构可能如下所示:

UI=>业务逻辑=>服务=>DAO


在您的例子中,您的域模型非常简单。您有一个域实体,一本书。这是唯一的持久类。再说一次,像Hibernate这样的ORM框架可能有些过分,但它是一个非常方便的学习工具。它可能值得使用,因为它使数据持久化变得非常简单

我建议你用一个更重要的标题来回答这个问题,比如带有Java和DB交互的个人库项目。我建议你用一个更重要的标题来回答这个问题,比如带有Java和DB交互的个人库项目。这不是一个好主意。我闻到SQL注入等的味道。不介意select方法返回一个结果集,并失去准备好的语句的作用域等。静态连接会带来麻烦。另外,通过公共方法传递ResultSet也会带来麻烦。是的,使用static会导致troubleNot成为一个好主意。我闻到SQL注入等的味道。不介意select方法返回一个结果集,并失去准备好的语句的作用域等。静态连接会带来麻烦。另外,通过公共方法传递ResultSet也会带来麻烦。是的,使用static会导致麻烦。我不建议这样做。。。Hibernate的学习曲线非常陡峭。我认为初学者在第一个项目中不应该经历的。我宁愿选择Mybatis或类似的。我不建议这样做。。。Hibernate的学习曲线非常陡峭。我认为初学者在第一个项目中不应该经历的。宁可选择Mybatis或类似产品。