在我的托管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个文件中摆弄。
有吗
提前致谢
答案 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?