配置spring和hibernate集成包括哪些步骤
2016-04-05 · 百度知道合伙人官方认证企业
育知同创教育
1【专注:Python+人工智能|Java大数据|HTML5培训】 2【免费提供名师直播课堂、公开课及视频教程】 3【地址:北京市昌平区三旗百汇物美大卖场2层,微信公众号:yuzhitc】
向TA提问
关注
展开全部
spring和hibernate集成的步骤如下:
1、将hibernate的配置加入到Spring的配置中(这里以datasource和sessionfactory为例进行配置说明):
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
<property name="url" value="jdbc:oracle:thin:@localhost:1521:ORCL" />
<property name="username" value="user" />
<property name="password" value="pwd" />
</bean>
<bean id="mySessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="mappingResources">
<list>
<value>com/test/spring/hibernate/Hbtest.hbm.xml
</value>
</list>
</property>
<property name="hibernateProperties">
<value>
hibernate.dialect=org.hibernate.dialect.Oracle10gDialect
hibernate.show_sql=true
hibernate.format_sql=true
hibernate.current_session_context_class=thread
</value>
</property>
</bean>
Hibernate的配置也可以单独放在hibernate.cfg.xml文件中,然后通过如下的配置指向config文件,这样在spring配置中就不要配置dataSource和其他Hibernate相关的信息了。
<bean id="mySessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation" value="classpath:conf/Hibernate.cfg.xml" />
</bean>
2、将sessionfactory注入到DAO中,通过sessionfactory操作Hibernate提供的API:
<bean id="PlainHibernateDAO" class="com.test.spring.hibernate.PlainHibernateDAO">
<property name="sessionFactory" ref="mySessionFactory" />
</bean>
3、配置事务管理:
(1)显式用Hibernate提供的 SessionFactory.getCurrentSession().beginTransaction(),commit自动提交事务,那么在hibernateProperties要配置hibernate.current_session_context_class=thread:
<span style="color:#000000;">
<property name="hibernateProperties">
<value>
hibernate.current_session_context_class=thread
</value>
</span>
(2)利用Spring的事务声明来做管理:hibernateProperties不能配置hibernate.current_session_context_class=thread
<tx:advice id="txAdvice" transaction-manager="txManager">
<tx:attributes>
<tx:method name="*" propagation="REQUIRED"/>
</tx:attributes>
</tx:advice>
<bean id="txManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="mySessionFactory" />
</bean>
<aop:config>
<aop:pointcut id="persistOperation"
expression="execution(* com.test.spring.hibernate.PlainHibernateDAO.*(..))" />
<aop:advisor advice-ref="txAdvice" pointcut-ref="persistOperation" />
</aop:config>
1、将hibernate的配置加入到Spring的配置中(这里以datasource和sessionfactory为例进行配置说明):
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
<property name="url" value="jdbc:oracle:thin:@localhost:1521:ORCL" />
<property name="username" value="user" />
<property name="password" value="pwd" />
</bean>
<bean id="mySessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="mappingResources">
<list>
<value>com/test/spring/hibernate/Hbtest.hbm.xml
</value>
</list>
</property>
<property name="hibernateProperties">
<value>
hibernate.dialect=org.hibernate.dialect.Oracle10gDialect
hibernate.show_sql=true
hibernate.format_sql=true
hibernate.current_session_context_class=thread
</value>
</property>
</bean>
Hibernate的配置也可以单独放在hibernate.cfg.xml文件中,然后通过如下的配置指向config文件,这样在spring配置中就不要配置dataSource和其他Hibernate相关的信息了。
<bean id="mySessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation" value="classpath:conf/Hibernate.cfg.xml" />
</bean>
2、将sessionfactory注入到DAO中,通过sessionfactory操作Hibernate提供的API:
<bean id="PlainHibernateDAO" class="com.test.spring.hibernate.PlainHibernateDAO">
<property name="sessionFactory" ref="mySessionFactory" />
</bean>
3、配置事务管理:
(1)显式用Hibernate提供的 SessionFactory.getCurrentSession().beginTransaction(),commit自动提交事务,那么在hibernateProperties要配置hibernate.current_session_context_class=thread:
<span style="color:#000000;">
<property name="hibernateProperties">
<value>
hibernate.current_session_context_class=thread
</value>
</span>
(2)利用Spring的事务声明来做管理:hibernateProperties不能配置hibernate.current_session_context_class=thread
<tx:advice id="txAdvice" transaction-manager="txManager">
<tx:attributes>
<tx:method name="*" propagation="REQUIRED"/>
</tx:attributes>
</tx:advice>
<bean id="txManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="mySessionFactory" />
</bean>
<aop:config>
<aop:pointcut id="persistOperation"
expression="execution(* com.test.spring.hibernate.PlainHibernateDAO.*(..))" />
<aop:advisor advice-ref="txAdvice" pointcut-ref="persistOperation" />
</aop:config>
展开全部
操作步骤如下:
1、bundle>=com.abc.def.lib.common:第三方jar包的统一管理,RCP中常用的jar包都在这边打包。当然,可以根据具体需要进行拆分;
2、bundle>=com.abc.def.properties:配置文件管理bundle,其可以动态读取Eclipse RCP的根目录下properties目录中的*.properties文件。新的业务Bundle也可以往此bundle中注册自己的properties文件。目录"%ECLIPSE_RCP_HOME%/properties/" 中的properties文件可供手动修改,如hibernate的数据库连接信息等;
3、bundle>=com.abc.def.lib.common:hibernate相关的jar包,依赖com.abc.def.lib.common 和 com.abc.def.properties两个bundle,MANIFEST.MF中增加: Eclipse-BuddyPolicy: dependent
4、bundle>=com.abc.def.lib.spring:Spring相关的jar包和相关的类,依赖com.abc.def.lib.common、 com.abc.def.properties、com.abc.def.lib.hibernate三个bundle,MANIFEST.MF中增加: Eclipse-BuddyPolicy: dependent
5、bundle>=com.abc.def.main:基础架构的入口bundle,这里进行RCP的初始化管理,依赖以上所有bundle。
6、RCP和SH的集成,很关键的一点就是上面红色字体标注部分,通过Eclipse的buddy机制实现bundle之间的双向访问。
7、bundle>=com.abc.def.lib.spring中,修改覆盖了jar包中的org.springframework.util.ResourceUtils,避免Spring访问Annotation标注的Service类时找不到类的问题。
8、Spring和Hibernate实现了真正的零配置,所有Entity和Service都通过Spring和Hibernate的Annotation直接定义。目前在bundle>=com.abc.def.lib.spring中,在DataSourceConfig类中,用Annotation定义了dataSource、sessionFactory、txManager等bean,其中,sessionFactory中,通过PackagesToScan设置了model的统一根节点:com.abc.def,只要在这个package(包括子包)下的Annotation定义的model,都将自动纳入到SH的管理。
9、bundle>=com.abc.def.main中,通过ApplicationContext appContext = new AnnotationConfigApplicationContext("com.abc.def"),得到ApplicationContext。
1、bundle>=com.abc.def.lib.common:第三方jar包的统一管理,RCP中常用的jar包都在这边打包。当然,可以根据具体需要进行拆分;
2、bundle>=com.abc.def.properties:配置文件管理bundle,其可以动态读取Eclipse RCP的根目录下properties目录中的*.properties文件。新的业务Bundle也可以往此bundle中注册自己的properties文件。目录"%ECLIPSE_RCP_HOME%/properties/" 中的properties文件可供手动修改,如hibernate的数据库连接信息等;
3、bundle>=com.abc.def.lib.common:hibernate相关的jar包,依赖com.abc.def.lib.common 和 com.abc.def.properties两个bundle,MANIFEST.MF中增加: Eclipse-BuddyPolicy: dependent
4、bundle>=com.abc.def.lib.spring:Spring相关的jar包和相关的类,依赖com.abc.def.lib.common、 com.abc.def.properties、com.abc.def.lib.hibernate三个bundle,MANIFEST.MF中增加: Eclipse-BuddyPolicy: dependent
5、bundle>=com.abc.def.main:基础架构的入口bundle,这里进行RCP的初始化管理,依赖以上所有bundle。
6、RCP和SH的集成,很关键的一点就是上面红色字体标注部分,通过Eclipse的buddy机制实现bundle之间的双向访问。
7、bundle>=com.abc.def.lib.spring中,修改覆盖了jar包中的org.springframework.util.ResourceUtils,避免Spring访问Annotation标注的Service类时找不到类的问题。
8、Spring和Hibernate实现了真正的零配置,所有Entity和Service都通过Spring和Hibernate的Annotation直接定义。目前在bundle>=com.abc.def.lib.spring中,在DataSourceConfig类中,用Annotation定义了dataSource、sessionFactory、txManager等bean,其中,sessionFactory中,通过PackagesToScan设置了model的统一根节点:com.abc.def,只要在这个package(包括子包)下的Annotation定义的model,都将自动纳入到SH的管理。
9、bundle>=com.abc.def.main中,通过ApplicationContext appContext = new AnnotationConfigApplicationContext("com.abc.def"),得到ApplicationContext。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询