【问题标题】:Database Connection Best Practice in Java FXJava FX 中的数据库连接最佳实践
【发布时间】:2016-03-06 11:10:04
【问题描述】:

我正在设计一个具有密集数据库连接的 MVC JAVAFX 程序。我不知道在哪里放置数据库连接详细信息。我是否应该在模型表单中定义连接详细信息并将连接作为控制器处理,还是应该将它们放在一个模型文件中。

从长远来看,我需要该连接作为整个程序的会话,直到用户注销。

有没有什么简单的例子可以研究这个问题。我知道使用休眠是最好的方法,但我仍在学习 Java FX,我需要一些指导。

谢谢。

【问题讨论】:

  • 对于“密集型”数据库算法,使用 ORM(如 JPA)要好得多,例如:docs.oracle.com/javaee/7/tutorial/partpersist.htm。其他一切都会导致可怕的、无法维护的混乱,没人愿意处理。
  • 这个问题太宽泛了:“可能的答案太多了,或者对于这种格式来说,好的答案太长了。”你真的可以就这个主题写一整本书。也许看看stackoverflow.com/questions/25651641/…(出于同样的原因,我可能也不应该回答这个问题......)
  • @specializt “密集”是什么意思?这是否意味着像我们在大多数企业 ERP 系统中所做的那样?
  • @KonzMama 你先用了“密集”这个词……是什么意思?但是,最好的做法是 1. 将所有数据访问代码封装在一个类(“数据访问对象”)中,以及 2. 编程到接口。因此,您使用数据访问方法定义一个接口,然后定义一个实现类。您的第一个实现可能是 JDBC,但是 --if-- 当它变得不可维护时,您可以使用 JPA 定义一个新的实现,而对应用程序的其余部分的影响最小。
  • 非常感谢@James_D 我会看看它并学习它......

标签: java javafx


【解决方案1】:

如果您使用的是 MVC,请下载 Spring Boot 依赖项并将其放入您的 application.properties...

【讨论】:

    【解决方案2】:

    目前,我还在一个带有数据库连接的 JavaFX 应用程序中。我选择的方式如下:创建一个SQL-Controller-Class。此类应包含处理您的 SQL 数据的所有内容(例如:connect-打开连接的方法 - close-方法也没有错)。在所有控制器类中使用此类来获取您需要的数据或保存您拥有的数据。

    这里是一个小例子

    SQLController 类可能如下所示:

    public class SqlController {
    
       //Put you connection string with pw, user, ... here
       private static final String YOUR_CONNECTION_STRING = ""; 
    
       public boolean openConnection() {
           boolean result;
           try {
               // Open your connection
               result = true;
           } catch (Exception e) {
            result = false;
           }
           return result;
       }
    
       public boolean closeConnection() {
           boolean result;
           try {
               // Close your connection
               result = true;
           } catch (Exception e) {
               result = false;
           }
           return result;
       }
    
       public YourData getSomeData(){
    
        //get The Data you want.
        return YourData;
       }
    }
    

    您可以在 UI-Controller 的任何方法中使用该控制器。

    public void handelSomeUiThing()
    {
        SqlController sc = new SqlController();
        sc.openConnection();
        YourData = sc.getSomeData();
        sc.closeConnection();
    }
    

    希望有帮助!

    PS:每个人都有自己的编程风格。你必须看看什么适合你的应用,什么是最适合你的方式。

    【讨论】:

    • 那么您在哪里存储您的连接详细信息,例如用户名、密码和连接字符串? U 将其存储为模型 >??
    • 我会做一个常量,在 SQLController 中查看我的编辑
    • SqlController ?这是新名词吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-07
    • 2018-08-23
    • 1970-01-01
    • 2011-04-01
    • 2020-05-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多