首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PropertyPlaceholderConfigurer与Hibernate.cfg.xml

PropertyPlaceholderConfigurer与Hibernate.cfg.xml
EN

Stack Overflow用户
提问于 2013-07-30 06:01:50
回答 1查看 6.4K关注 0票数 3

我有两个需要绑定的文件: hibernate.cfg.xml和hibernate属性。如何使用PropertyPlaceholderConfigurer将它们指向对方?不把它们声明为豆子可以吗?(我是春天的初学者)。每一个答案都很感激。

提前谢谢。

纳扎尔

hibernate.cfg.xml:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration SYSTEM 
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

<hibernate-configuration>

    <session-factory>
           <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="db">
            <value>hibernate.properties</value>
        </property>
    </bean>
        <property name="hibernate.dialect">${db.dialect}</property>
        <property name="hibernate.connection.driver_class">${db.driver}</property>
        <property name="hibernate.connection.url">${db.url}</property>
        <property name="hibernate.connection.username">${db.username}</property>
        <property name="hibernate.connection.password">${db.password}</property>
        <property name="connection.pool_size">${db.pool_size}</property>
        <property name="current_session_context_class">${db.current_session_context_class}</property>
        <property name="hibernate.show_sql">${db.show_sql}</property>
        <property name="hibernate.cache.provider_class">${db.provider_class}</property>
        <property name="hibernate.cache.use_second_level_cache">${db.use_second_level_cache}</property>
        <property name="hibernate.cache.use_query_cache">${db.use_query_cache}</property>
        <property name="hibernate.hbm2ddl.auto">${db.hbm2ddl_auto}</property>
        <property name="hibernate.hbm2ddl.import_files">${db.import_files}</property>
        <mapping class="com.dataart.mediaportal.model.User"/>
        <mapping class="com.dataart.mediaportal.model.Album"/>
        <mapping class="com.dataart.mediaportal.model.Role"/>
        <mapping class="com.dataart.mediaportal.model.Image"/>

    </session-factory>
</hibernate-configuration>

hibernate.properties:

代码语言:javascript
复制
db.username=postgres
db.password=4351
db.driver=org.postgresql.Driver
db.url=jdbc:postgresql://localhost/MediaPortalDB
db.pool_size=1
db.dialect=org.hibernate.dialect.PostgreSQLDialect
db.import_files=import.sql
db.hbm2ddl_auto=create
db.use_query_cache=true
db.use_second_level_cache=true
db.provider_class=org.hibernate.cache.HashtableCacheProvider
db.show_sql=true
db.current_session_context_class=thread
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-30 06:15:34

是的,您可以访问两个文件并使用它们创建会话工厂。但是,不要在hibernate配置文件中这样做。我建议在应用程序上下文中这样做,因为首先,您的hibernate.cfg.xml不包含声明bean所需的名称空间,其次是。它需要由上下文配置器读取,以便它可以实例化bean。

在应用程序上下文中,可以使用这样的hibernate.properties文件创建数据源。

代码语言:javascript
复制
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
p:location="{location of hibernate properties files}" />

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
    <property name="driverClass" value="${db.driverClassName}"/>
    <property name="jdbcUrl" value="${db.databaseurl}"/>
    ....other properties...
</bean>

最后,创建这样的会话工厂

代码语言:javascript
复制
<beans:bean id="sessionFactory"
        class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <beans:property name="dataSource" ref="dataSource" />
        <beans:property name="configLocation">
            <beans:value>classpath:hibernate.cfg.xml</beans:value>
        </beans:property>
        <beans:property name="configurationClass">
            <beans:value>org.hibernate.cfg.AnnotationConfiguration</beans:value>
        </beans:property>

这将为您创建一个会话工厂单例实例,可以使用自动装配访问该实例。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17939339

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档