簡體   English   中英

如何在Java中同時建立一個客戶端-服務器程序和一個數據庫?

[英]How to set-up a client-server program and a database together in Java?

I need to create a program that has a client, server, and a database The client needs to input data into the database or query it via the server, I am using MySQL and JDBC to connect MySQL to my java code. 我想知道理想的設置是什么。

例如,我使用以下代碼連接到我的數據庫:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class test2 {

    public static void main(String[] args) {
        
        String url = "jdbc:mysql://localhost:3306/CovidPreventation";
        String username = "test";
        String password = "test";

        System.out.println("Connecting database...");

        try (Connection connection = DriverManager.getConnection(url, username, password)) {
            System.out.println("Database connected!");
        } catch (SQLException e) {
            throw new IllegalStateException("Cannot connect the database!", e);
        }
    
    }

}

我想知道這應該在哪里真正 go,我應該在服務器 class 或連接到服務器的單獨 class 中擁有它。 這是我第一次做這樣的事情,我希望我的做法很好,因此感謝您的幫助。

DataSource

SQL package 定義了DataSource接口。 該類型的 object 用於保存數據庫連接信息,例如數據庫服務器地址、數據庫用戶名、密碼等。

選擇該接口的實現。 JDBC 驅動程序通常帶有一個或多個特定於該特定數據庫的實現。 您需要特定於該數據庫的實現,因為各種數據庫具有各種功能和設置。

返回更通用類型的 object 接口,而不是更具體的類型,具體實現。 這樣做可以讓您靈活地將具體的 class 換成另一個,而不會破壞任何調用代碼。

    private DataSource configureDataSource ( )
    {
        System.out.println( "INFO - `configureDataSource` method. " + Instant.now() );

        com.mysql.cj.jdbc.MysqlDataSource dataSource = Objects.requireNonNull( new com.mysql.cj.jdbc.MysqlDataSource() );  // Implementation of `DataSource`.
        dataSource.setServerName( "db-mysql-lon3-433-do-user-89673-1.x.db.ondigitalocean.com" );
        dataSource.setPortNumber( 24_090 );
        dataSource.setDatabaseName( "defaultdb" );
        dataSource.setUser( "scott" );
        dataSource.setPassword( "tiger" );
        return dataSource;
    }

在您的應用程序中保留該DataSource object。 當需要數據庫連接時,調用DataSource#getConnection

最終,您可能希望使用 JNDI 來獲取DataSource object。 這使您能夠通過 Jakarta EE 服務器、LDAP 服務器等外部化數據庫配置,而不是硬編碼用戶名、密碼等。

另請參見MySQL 連接器/J 8 中 JDBC 數據源的實現

所有你需要一個 jdbc 驅動程序,你可以在這里得到它: https://mvnrepository.com/artifact/mysql/mysql-connector-java

並將 jar 文件添加到您的 ide

在您需要像這樣在代碼中調用它之后:

public static Connection getConnection(String dbURL, String userName, 
            String password) {
        Connection conn = null;
        try {
            Class.forName("com.mysql.jdbc.Driver");
            conn = DriverManager.getConnection(dbURL, userName, password);
            System.out.println("connect successfully!");
        } catch (Exception ex) {
            System.out.println("connect failure!");
            ex.printStackTrace();
        }
        return conn;
    }

我猜您是在詢問應用程序的設計/架構。 如果是這種情況,那么您應該遵循 MVC 架構模式。

** 什么是 MVC?**

MVC 具有三個主要組件:

  • Model
  • 看法
  • Controller

他們每個人都有特定的職責。

MVC 流

Model
Model 負責或維護數據。 它實際上連接到數據庫。 因此,您想要執行的任何數據操作(即添加/更新/刪除/插入)都在 model 中完成。 基本上模型只與 Controller 對話,並將所需的數據提供給 controller。 即 Model 從不直接與數據通信。

看法
數據表示,即 UI(Html/CSS 部分)由 View 完成。 Controller 向 View 提供數據,這些數據將顯示給最終用戶。 即視圖只對 controller 說話。

Controller
Controller 啟用視圖和 model 之間的交互。 它不必擔心業務邏輯。 它會告訴 model 應該做什么。 從 Model 接收到數據后,它會將其發送到 View。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM