Java—DAL项目中的数据库URL

Java—DAL项目中的数据库URL,java,database,dao,modularity,Java,Database,Dao,Modularity,我正在重写API的后端代码。它使用Glassfish存储数据库URL、用户名、密码 我想使用更好的解决方案,这样我们就可以轻松地更改web服务器和数据库,而无需修改代码 我的想法是将数据库信息(url、用户名等)存储在web.xml中,并在baseDAO中检索它们 这是我的项目结构 RestAPIProject 商业项目 达尔项目 DTO项目 在我的项目中,我将创建这个类 public class BaseDAO { public Connection getConnection(

我正在重写API的后端代码。它使用Glassfish存储数据库URL、用户名、密码

我想使用更好的解决方案,这样我们就可以轻松地更改web服务器和数据库,而无需修改代码

我的想法是将数据库信息(url、用户名等)存储在
web.xml
中,并在
baseDAO
中检索它们

这是我的项目结构

  • RestAPIProject
  • 商业项目
  • 达尔项目
  • DTO项目
在我的项目中,我将创建这个类

public class BaseDAO {

    public Connection getConnection() {
        Class.forName("com.mysql.jdbc.Driver");
        String url = "jdbc:mysql://localhost:3306/DB";
        String name = "root";
        String password = "";

        Connection con = DriverManager.getConnection(url, name, password);
        return con;
    }
}

public class UserDAO extends BaseDAO {

    public User getAll() {
        Connection con = getConnection();
        ...
    }
}

如何存储这些数据库的信息?使其模块化的最佳实践是什么?我需要随时方便地更改数据库。

最好的方法是将其存储在
应用程序.properties
文件中,并在需要时进行更改:

# Details for datasource
application.db.driver = com.mysql.jdbc.Driver
application.db.url = jdbc:mysql://localhost:3306/DB
application.db.username = root
application.db.password = 
然后您可以在配置bean中使用它:

@Configuration
@PropertySource("application.properties")
public class DataConfig {
    @Autowired
    private Environment env;

    @Bean
    public DataSource dataSource() {
        BasicDataSource dataSource = new BasicDataSource();
        dataSource.setDriverClassName(env.getProperty("application.db.driver"));
        dataSource.setUrl(env.getProperty("application.db.url"));
        dataSource.setUsername(env.getProperty("application.db.username"));
        dataSource.setPassword(env.getProperty("application.db.password"));
        return dataSource;
    }
}

最好的方法是将其存储在
应用程序.properties
文件中,并在需要时进行更改:

# Details for datasource
application.db.driver = com.mysql.jdbc.Driver
application.db.url = jdbc:mysql://localhost:3306/DB
application.db.username = root
application.db.password = 
然后您可以在配置bean中使用它:

@Configuration
@PropertySource("application.properties")
public class DataConfig {
    @Autowired
    private Environment env;

    @Bean
    public DataSource dataSource() {
        BasicDataSource dataSource = new BasicDataSource();
        dataSource.setDriverClassName(env.getProperty("application.db.driver"));
        dataSource.setUrl(env.getProperty("application.db.url"));
        dataSource.setUsername(env.getProperty("application.db.username"));
        dataSource.setPassword(env.getProperty("application.db.password"));
        return dataSource;
    }
}

您可以在服务器上使用JNDI数据源,这是JavaEE中的标准。但是你使用的是什么服务器呢?目前,它是一个PostgreSQL数据库,但可能会改为OracleI我说的是应用服务器,Glassfish可以使用JNDI数据源。哦,好的,对不起,我们使用Glassfish是的。这是在glassfish中存储数据库最常用的方法吗?你能举例说明如何检索这些数据吗?我知道如何创造it@Mr_Thorynque与JDBC资源有什么区别?您可以在服务器上使用JNDI数据源,这是JavaEE中的标准。但是你使用的是什么服务器呢?目前,它是一个PostgreSQL数据库,但可能会改为OracleI我说的是应用服务器,Glassfish可以使用JNDI数据源。哦,好的,对不起,我们使用Glassfish是的。这是在glassfish中存储数据库最常用的方法吗?你能举例说明如何检索这些数据吗?我知道如何创造it@Mr_ThorynqueJDBC资源有什么区别?