数据库连接数据应该在您的 JNDI 数据源中,如果您使用连接池但从不在类中会更好。由于您的是 Web 应用程序,请注意连接池配置在很大程度上取决于 Web 应用程序服务器。
例如,在Tomcat 7 数据库连接池配置和JBoss 7 数据库连接池配置中对此进行了很好的解释(在 GlassFish 和其他 Web 应用程序服务器上配置数据库连接池还有其他步骤,请注意每个服务器上的配置不同) .
从这两个示例中,您可以看到您将有一个 XML 文件,其中放置了连接属性:数据库 URL、用户、密码、最小和最大池连接大小(将打开多少个数据库连接)
Tomcat方式:
<Resource name="jdbc/ProjectX" auth="Container"
    type="javax.sql.DataSource" driverClassName="com.mysql.jdbc.Driver"
    url="jdbc:mysql://localhost:3306/projectx"
    username="user" password="password" maxActive="20" maxIdle="10" maxWait="-1"/>
 
JBoss方式:
<datasource jndi-name="jdbc/ProjectX" pool-name="MySqlDS">
        <connection-url>jdbc:mysql://localhost:3306/projectx</connection-url>
        <driver>com.mysql</driver>
        <transaction-isolation>TRANSACTION_READ_COMMITTED</transaction-isolation>
        <pool>
            <min-pool-size>10</min-pool-size>
            <max-pool-size>100</max-pool-size>
            <prefill>true</prefill>
        </pool>
        <security>
            <user-name>user</user-name>
            <password>password</password>
        </security>
        <statement>
            <prepared-statement-cache-size>32</prepared-statement-cache-size>
            <share-prepared-statements/>
        </statement>
</datasource>
<drivers>
    <driver name="com.mysql" module="com.mysql">
        <xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class>
    </driver>
</drivers>
 
最后,如果您配置了数据库连接池并且它可以工作,那么您在代码中恢复连接所需要做的就是调用InitialContext#lookup以使用其 JNDI 资源名称恢复资源。
知道了这一点,在配置 JNDI 资源以连接到名为“jdbc/ProjectX”的 MySQL 数据库后,您可以拥有一个恢复如下的Connection类:
public class DatabaseConnectivity {
    public static Connection getConnection() throws NamingException, SQLException {
        InitialContext cxt = new InitialContext();
        DataSource ds = (DataSource) cxt.lookup("java:/comp/env/jdbc/ProjectX" );
        return ds.getConnection();
    }
}
顺便说一句,我会为包使用不同的名称来了解类的功能组。例如:
src
- edu.home.controller.servlet
  + CoreServlet.java
- edu.home.controller.filter
  + SessionFilter.java
- edu.home.model.entity
  + AnEntity.java
  + AnotherEntity.java
- edu.home.model.database
  + DatabaseConnectivity.java
- edu.home.model.service
  + AnEntityService.java
  + AnotherEntityService.java
(and on and on...)