2013-07-11 2 views
1

В моем управляемом компоненте мне нужно получить доступ к базе данных mySql. До сих пор я использовал такой код:Как я могу хранить информацию о базе данных в JSF2

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); 

Теперь я должен сделать это в более чем одном компоненте, так что если мне нужно изменить учетные данные базы данных, я должен возиться в как 10 файлов.

Есть

  1. способ хранения databaseconnection
  2. способ определить некоторые переменные для всего веб-проекта

Заранее спасибо

+0

Является ли это только для обучения/хобби? В противном случае лучше искать JPA. – BalusC

ответ

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 и размещаю все свои файлы конфигурации .x и файлы .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?

2

Прежде всего, вы должны понимать основы архитектуры Проект Java EE. Не рекомендуется подключать базы данных в управляемых компонентах. Это действительно плохая практика. Пожалуйста, посмотрите мой previous answer, чтобы понять базовую архитектуру.

Соединения с базой данных выполняются в Уровне интеграции, и эти классы называются объектами доступа к данным (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

Смежные вопросы