Настройки JDBC для Hibernate и Spring [решено]

 
 
 
Сообщения:95
Доброго дня.

Столкнулся с проблемой.
В проекте используются Spring и Hibernate.
Настройки соединения с БД для Spring прописаны в файле data.xml

<?xml  version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:jee="http://www.springframework.org/schema/jee" xmlns:lang="http://www.springframework.org/schema/lang"
	xmlns:p="http://www.springframework.org/schema/p" xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:util="http://www.springframework.org/schema/util"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
        http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee.xsd
        http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang.xsd
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
        http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">

	<tx:annotation-driven transaction-manager="transactionManager" />

	<bean id="transactionManager"
		class="org.springframework.orm.hibernate3.HibernateTransactionManager">
		<property name="sessionFactory" ref="sessionFactory" />
	</bean>

	<bean id="messageSource"
		class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
		<property name="basename" value="classpath:messages" />
		<property name="defaultEncoding" value="UTF-8" />
	</bean>

	<bean id="propertyConfigurer"
		class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
		p:location="/WEB-INF/jdbc.properties" />

	<bean id="dataSource"
		class="org.springframework.jdbc.datasource.DriverManagerDataSource"
		p:driverClassName="${jdbc.driverClassName}" 
		p:url="${jdbc.databaseurl}"
		p:username="${jdbc.username}" 
		p:password="${jdbc.password}" />

	<bean id="sessionFactory"
		class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
		<property name="dataSource" ref="dataSource" />
		<property name="configLocation">
			<value>classpath:hibernate.cfg.xml</value>
		</property>
		<property name="configurationClass">
			<value>org.hibernate.cfg.AnnotationConfiguration</value>
		</property>
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.show_sql">true</prop>
				<prop key="hibernate.dialect">${jdbc.dialect}</prop>
				<prop key="hibernate.connection.charSet">UTF-8</prop>
			</props>
		</property>
	</bean>

</beans>

- то есть логин, пароль к БД беруться из стороннего файла jdbc.properties.

С другой стороны, настроки для Hibernate пишутся в файле hibernate.cfg.xml

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD//EN"
        "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>

        <session-factory>
        
                <property file="../jdbc.properties" />

                <property name="connection.driver_class">org.postgresql.Driver</property>
                <property name="connection.url">jdbc:postgresql://localhost:5432/postgres</property>
                <property name="connection.username">postgres</property>
                <property name="connection.password">root</property>
                <property name="show_sql">true</property>
                <property name="default_schema">PUBLIC</property>
                <property name="dialect">org.hibernate.dialect.PostgreSQLDialect</property>
                <property name="current_session_context_class">thread</property>
                <property name="hibernate.hbm2ddl.auto">update</property>

                <mapping class="com.vguide.prototype.domain.User" />

        </session-factory>

</hibernate-configuration>


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

Спасибо.
Изменен:26 июн 2012 14:44
 
 
Сообщения:9597
Конфигурируй все в спринге, вот пример.
 
 
Сообщения:95
Спасибо, сделал по образцу.
 
 
Сообщения:32
Староверъ:
Конфигурируй все в спринге, вот пример.


понимаю что дело было давно. а можно ли еще раз рабочию ссыллку?
 
 
Сообщения:9597
Вот есть новый пример, там правда не только Hibernate, но разобраться можно.
 
Модераторы:Нет
Сейчас эту тему просматривают:Нет