今天遇到的问题主要是Spring与Hibernate整合的。
在ApplicationContent.xml中整合Hibernate的框架。好像专业术语这样说,hibernate的bean由Spring统一管理。我也不怎么清楚。呵呵。。。
在ApplicationContent.xml中加入:
<bean id="dataSource"
class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close">
<property name="driverClass"
value="oracle.jdbc.driver.OracleDriver" />
<property name="jdbcUrl"
value="jdbc:oracle:thin:@localhost:1521:orcl" />
<property name="user" value="kevin" />
<property name="password" value="123456" />
</bean>
其中,class是什么意思我不太清楚。但我使用这个没错。这个以后学会了补上。呵呵。。其他的应该都容易看懂。
其次,还要加入:
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.connection.pool.size">10</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="jdbc.fetch_size">100</prop>
<prop key="jdbc.batch_size">50</prop>
<prop key="jdbc.use_scrollable_resultset">false</prop>
<prop key="hibernate.hbm2ddl.auto">none</prop>
<prop key="hibernate.dialect">
org.hibernate.dialect.Oracle9Dialect
</prop>
</props>
</property>
<!-- 需要加载的Hibernate实体类(不需要hbm.xml了) -->
<property name="packagesToScan" value="com.test.entity" />
</bean>
这个就是只用hibernate时的hibernate.cfg.xml文件。
其中:
<property name="packagesToScan" value="com.test.entity" />
是将hibernate与数据库中的表进行绑定。
使用此语句就不需要复杂的hbm.xml文件了。
值得注意的:数据库中的表必须要有主键。否则讲报错。这个问题我纠结了一个半小时。
假设你适应@Resource的话。
这个ApplicationContent.xml文件中必须要包含这样一句
<context:component-scan base-package="com.test"/>
否则你会发现你的@Resource压根没作用。