【发布时间】:2010-11-15 06:35:52
【问题描述】:
我正在使用 JSP 和 Spring MVC 3.0 开发一个动态网站,但我无法让 hibernate 使用它。另外,我使用 PostgreSQL 作为我的数据库。我不知道我应该放哪个库。我对这项技术很陌生。有人可以帮我弄这个吗?谢谢
【问题讨论】:
标签: hibernate model-view-controller spring jsp postgresql
我正在使用 JSP 和 Spring MVC 3.0 开发一个动态网站,但我无法让 hibernate 使用它。另外,我使用 PostgreSQL 作为我的数据库。我不知道我应该放哪个库。我对这项技术很陌生。有人可以帮我弄这个吗?谢谢
【问题讨论】:
标签: hibernate model-view-controller spring jsp postgresql
这些库取决于您可能想要实现的功能。
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate</artifactId>
<version>3.2.7.ga</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-annotations</artifactId>
<version>3.3.0.ga</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-commons-annotations</artifactId>
<version>3.3.0.ga</version>
</dependency>
<dependency>
<groupId>postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>8.3-603.jdbc3</version>
</dependency>
<dependency>
<groupId>c3p0</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.1</version>
</dependency>
如果您使用的是 maven,这些应该会给您一个良好的使用开始。 c3p0 用于您的 postgres 连接上的连接池。
我强烈建议使用 hibernate 注释方法(正如您通过 maven 添加的注释包所看到的那样)。 因此,要使用您的 postgresql db + hibernate,请将以下内容添加到您的 applicationContext:
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
p:location="/WEB-INF/jdbc.properties" />
<!-- Uses mchange connection pooling -->
<bean id="dataSource"
class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"
p:driverClass="${jdbc.driverClassName}"
p:jdbcUrl="${jdbc.url}"
p:user="${jdbc.username}"
p:password="${jdbc.password}" />
<bean id="hibernateProps" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
<property name="properties">
<props>
<prop key="hibernate.hbm2ddl.auto">update</prop>
<prop key="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</prop>
<prop key="hibernate.show_sql">false</prop>
<prop key="hibernate.c3p0.minPoolSize">5</prop>
<prop key="hibernate.c3p0.maxPoolSize">20</prop>
<prop key="hibernate.c3p0.idleTestPeriod">300</prop>
<prop key="hibernate.c3p0.timeout">600</prop>
<prop key="hibernate.c3p0.max_statement">50</prop>
<prop key="hibernate.c3p0.testConnectionOnCheckout">false</prop>
<prop key="hibernate.c3p0.preferredTestQuery">select 1;</prop>
</props>
</property>
</bean>
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"
p:dataSource-ref="dataSource"
p:packagesToScan="package.with.your.domain.objects.in.it"
p:hibernateProperties-ref="hibernateProps" />
您在这里所做的基本上是使用 jdbc.properties 文件配置 jdbc 连接(您需要创建一个 - 如果您需要帮助,请给我评论。最重要的是 jdbc 驱动程序,即 org.properties 文件。 postgresql.驱动程序)。然后将这些属性连接到 c3p0 连接池中,并将其传递给 AnnotationSessionfactory。
要在你的应用程序中使用这个 sessionfactory,你可以在你的 Dao 类中扩展 HibernateDaoSupport(HibernateDaoSupport 是 Spring 自带的,基本上是为你做事务管理),然后在 sessionFactory 参数上注入 sessionfactory。但是,建议不要再使用 HibernateDaoSupport,而是使用 @Repository Annotation - 在 google 上查看。
我希望这能给您一些帮助。您可以随时在 Google 上搜索更多教程,例如 http://www.vaannila.com/hibernate/hibernate-example/hibernate-annotations-1.html
干杯
【讨论】: