Занимаясь разработкой приложения, состоявшего из нескольких частей, работающих на разных машинах, но подключающихся к одной и той же базе данных, столкнулся с проблемой отдельной конфигурации каждой части приложения для среды разработчика и заказчика. Собирать модули на стороне клиента не представлялось возможным, но он хотел иметь доступ к настройкам. Выход из данной ситуации нашел путем размещения на каждом сервере файла конфигурации базы данных, настройки из которого переопределяли настройки из .cfg.xml.

Реализация данного решения для переопределения строки подключения к базе данных:

public () {
	AnnotationConfiguration annotationConfiguration = new AnnotationConfiguration();
	Configuration config = annotationConfiguration.configure();
	try {
		BufferedReader reader = new BufferedReader(new FileReader(
				"/settings_file"));
		String connectionString = reader.readLine();
		reader.close();
		config.setProperty(".connection.url", connectionString);
	} catch (IOException e) {
	}
	sf = config.buildSessionFactory();
}

Как видно, решение очень простое, но действенное. Если файла settings_file не окажется, то настройки будут взяты из .cfg.xml

Для удобства, настройки можно передавать из контейнера.

Связанные записи