【问题标题】:How to configure Hibernate inside Spring configuration file如何在 Spring 配置文件中配置 Hibernate
【发布时间】:2014-11-30 11:57:38
【问题描述】:

我正在学习 Spring MVC 和 Hibernate。我使用 Spring mvc (MySql DB) 处理数据库连接和查询没有问题。

现在,我正在尝试使用 Hibernate,但发现它很复杂: 创建一个休眠配置文件,创建一个用于检索 SessionFactory 的类,为任何持久对象创建一个 xml 文件等。

我确信有一种最简单的方法可以让我使用以下命令进行简单的配置:

  1. Spring xml 配置文件
  2. 注解(在持久对象类中)

我想要达到的内容类似于以下内容。我在示例中看到了类似的代码,但现在我无法在互联网上找到它了

xxxx-servlet.xml

<bean id="SessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="packagesToScan" value="com.springgestioneerrori.model" />
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
                <prop key="hibernate.connection.autocommit">true</prop>
                <prop key="hibernate.show_sql">false</prop>
                <prop key="hibernate.format_sql">true</prop>
                <prop key="hibernate.use_sql_comments">false</prop>
            </props>
        </property>       
    </bean>





<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" >
         <property name="driverClass" value="com.mysql.jdbc.Driver" />
        <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/dbName" />
        <property name="user" value="root" />
        <property name="password" value="root" />                   
 </bean>

我想,在上面的代码中,不正确的是我的 dataSource bean。有人知道达到我的目标的方法吗?

谢谢大家!

【问题讨论】:

    标签: java spring hibernate spring-mvc


    【解决方案1】:

    我认为您在“数据源”bean 中的属性名称应该如下所示:

            <property name="driverClassName" value="com.mysql.jdbc.Driver" />
            <property name="url" value="jdbc:mysql://localhost:3306/dbName" />
            <property name="username" value="root" />
            <property name="password" value="root" />
    

    所以应该是 driverClassName 而不是 driverClass 等等..

    请参考这个答案here,它谈到了使用spring DriverManagerDataSource vs apache BasicDataSource。

    希望有帮助

    【讨论】:

    • 从我正在从事的项目中可以看出,您答案中的属性名称是正确的。
    • 是的,谢谢。现在,当我启动 Eclipse 时,我没有收到任何错误。
    【解决方案2】:

    一切都必须正确,但我想建议您使用 *.properties 来保持与您的数据库的连接配置

    在 appContext.xml 中:

    <!-- JDBC DataSource bean -->
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="${jdbc.driverClassName}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>
    
    <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">
            <list>
                <value>classpath:properties/database.properties</value>
            </list>
        </property>
    </bean>
    

    在database.properties中:

    jdbc.driverClassName = com.mysql.jdbc.Driver
    jdbc.schema = schema
    jdbc.url = jdbc:mysql://localhost:3306/schema
    jdbc.username = root
    jdbc.password = password
    

    什么会妨碍你在课堂上使用注释?

    【讨论】:

    • 谢谢你。实际上我已经使用了一个属性文件,我删除了它的代码只是为了更容易阅读这篇文章。好吧,没有什么能阻止我使用注释,我想说的是我只想使用 spring 配置文件和注释,而不是用于检索 SessionFactory 的类、用于任何持久对象的 xml 文件等。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-14
    • 2016-10-02
    • 2012-01-23
    • 2015-12-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多