如何在JSF2中存储数据库信息

时间:2013-07-11 08:55:26

标签: jsf-2 jdbc

在我的托管bean中,我需要访问mySql数据库。 到目前为止,我使用了这样的代码:

    Class.forName("com.mysql.jdbc.Driver"); 
    String url = "jdbc:mysql://localhost:3306/test";
    String username = "user";
    String password = "1234";
    Connection connection = null;
    try {
        connection = DriverManager.getConnection(url, username, password);

现在我必须在多个bean中执行此操作,因此如果我需要更改数据库凭据,我必须在10个文件中摆弄。

有吗

  1. 存储数据库连接的方法
  2. 为整个Web项目定义一些变量的方法
  3. 提前致谢

2 个答案:

答案 0 :(得分:2)

首先,您应该了解Java EE项目的基本架构。连接托管bean中的数据库并不是一个好主意。这真的是不好的做法。请查看我的previous answer以了解基本架构。

数据库连接在Integration Tier中完成,这些类称为数据访问对象(DAO)。

为静态连接属性创建BaseDao类。

class BaseDao
{
    private String url = "jdbc:mysql://localhost:3306/test";
    private String username = "user";
    private String password = "1234";
    private Connection connection;

    protected Connection getConnection()
    {     
          connection = DriverManager.getConnection(url, username, password);    
          return connection;
    }
}

并将基类扩展到需要数据库连接的派生类,并使用BaseDao#getConnection()访问连接。

此外,最好将数据库连接保存在属性文件中,并将它们注入适当的类中。

相关教程

阅读BalusC教程以更好地理解DAO tutorial - the data layer

答案 1 :(得分:0)

将这些值存储在.properties文件中通常是个好主意。然后可以通过java.util.Properties(http://docs.oracle.com/javase/7/docs/api/java/util/Properties.html

访问它们

这是一个很好的教程,描述了如何访问这些文件及其值,我建议你从这开始:http://www.mkyong.com/java/java-properties-file-examples/

(更多信息:http://en.wikipedia.org/wiki/.properties

在我的IDE中,我通常会创建一个新的源包/ src / main / config,并将所有与配置相关的.properties和.xml文件放在那里。如果你这样做,你需要从你的jsf应用程序中这样访问它:

String configFilePath = "configuration.properties";

props = new Properties();

InputStream propInStream = Thread.currentThread().getContextClassLoader().getResourceAsStream(configFilePath);

props.load(propInStream);

或者你可以这样做: How to get properties file from /WEB-INF folder in JSF?