`

spring和hibernate注解集成

 
阅读更多

最近在做多数据库支持访问,使用spring的配置方式,在 junit下测试没有问题,但是启动平台就加载不到实体jar包,spring配置文件如下:

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">       
        <property name="dataSource" ref="dataSource" />       
        <property name="annotatedPackages">
            <list>
                <value>cn.ac.iscas.core.entity</value>
            </list>
        </property>
...
 

 

经过反复试验,类包始终加载不到,hibernate访问数据库时,一直报not mapped entity。

为何在junit下没有问题,但在平台启动环境下就是不行,换用实体工具的 AnnotationFactory试验,

 

bean id="sessionFactory" class="cn.ac.intec.entity.orm.AnnotationFactory">       
        <property name="dataSource" ref="dataSource" />       
        <property name="annotatedPackages">
            <list>
                <value>cn.ac.iscas.core.doors</value>
            </list>
        </property>
...

 


结果还是无法加载类包,数据库中无法自动创建表。

无奈之下,查看实体工具源代码,结果发现
AnnotationFactory是我们自己的实现,重写了 setAnnotatedPackages(String[] annotatedPackages),而这个函数就是加载类包及自动搜索annotated class的,但是,这个方法依赖于原有的Appcontex,对于重新定义的Spring BeanFactory,他是无法自动去帮助加载类包的。(原来的实体工具没考虑到多数据库的扩展:))

继续无奈!最终,总算在Internet和google的帮助下,查到spring 2.0对annotatedPackages的支持不好,基本成功不了。好在类不是很多,用annotatedClasses方式是可以的,于是修改配置 文件如下:


 

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">       
        <property name="dataSource" ref="dataSource" />       
       
        <property name="annotatedClasses">
            <list>
                <value>cn.ac.iscas.core.doors.Module</value>
                <value>cn.ac.iscas.core.doors.Basecompare</value>
                <value>cn.ac.iscas.core.doors.Baseline</value>
                <value>cn.ac.iscas.core.doors.BaselinePK</value>
                <value>cn.ac.iscas.core.doors.Enumerationdata</value>
                <value>cn.ac.iscas.core.doors.Modreqproperty</value>
                <value>cn.ac.iscas.core.doors.Modulereqstat</value>
                <value>cn.ac.iscas.core.doors.Property</value>
                <value>cn.ac.iscas.core.doors.Reqinfo</value>
            </list>
        </property>
...
 


再次启动平台,一切问题都解决了~~~

浪费了我一下午3小时+早晨1小时啊

总结:spring2.0自带的AnnotationSessionFactoryBean不好用,用 annotatedClasses可以解决问题,但只适合class较少的情况,如果class比较多,还是自己实现 AnnotationSessionFactoryBean的子类,自己去遍历annotatedClass比较好。

 

 

 

 另:Spring 2.5.6中,增加了< property  name ="packagesToScan"  value ="com.**.bo" /> , 总算是解决了自动扫描类包的问题,相关资料请参考:

《Spring 2.5.6新特性之packagesToScan》

《Spring下使用 Hibenrate annotation》

分享到:
评论

相关推荐

    Spring与Hibernate集成

    6. **测试和运行**: 最后,编写测试用例验证Spring和Hibernate的集成是否成功。运行应用,确保数据的持久化和检索功能正常工作。 在实际开发中,为了提高代码的可读性和可维护性,我们可以采用基于注解的配置和实体...

    非注解Springmvc+spring+hibernate 入门实例

    总的来说,这个入门实例旨在帮助初学者理解如何在没有使用注解的情况下,通过XML配置文件集成SpringMVC、Spring和Hibernate,完成一个简单的Web应用。虽然现在的最佳实践倾向于使用注解和Spring Boot,但理解非注解...

    Spring+Hibernate注解事务实例

    下面我们将详细讲解如何配置和使用Spring+Hibernate注解声明式事务: 1. **配置Spring**: - 首先,我们需要在Spring配置文件中启用事务管理器,通常是`HibernateTransactionManager`,并配置数据源。 - 然后,...

    spring mvc + spring + hibernate 全注解整合开发视频教程 12

    在本教程中,我们将深入探讨如何使用Spring MVC、Spring和Hibernate三大框架进行全注解的整合开发。这个视频教程系列的第12部分,将帮助开发者掌握如何在Java Web项目中高效地集成这三个核心框架,实现松耦合、可...

    spring mvc + spring + hibernate 全注解整合开发视频教程 04

    在本视频教程“Spring MVC + Spring + Hibernate 全注解整合开发视频教程 04”中,我们将深入探讨Java企业级开发中的三大核心技术——Spring、Spring MVC和Hibernate的集成与应用,尤其是通过注解实现的简化配置。...

    struts2.0 spring2.5 hibernate3.2 注解最新框架

    开发者可能会在该文件中找到一个简单的Struts2 Action,一个带有注解的Spring Bean,以及一个用Hibernate注解配置的实体类。通过分析和运行这个`test`文件,可以更好地理解三大框架如何协同工作,以及注解如何简化...

    Spring2 Hibernate3集成

    2. **对象关系映射**:Hibernate通过配置文件或注解的方式定义实体类与数据库表之间的映射关系,而Spring则负责管理这些实体对象的生命周期。 3. **异常处理**:Spring为Hibernate提供了一层异常转换机制,将...

    Struts+Spring+Hibernate注解零配置整合

    本项目"Struts+Spring+Hibernate注解零配置整合"的目标是展示如何通过注解方式实现这三大框架的无缝集成,从而减少XML配置文件的使用,提高开发效率和代码可读性。 在传统的Struts、Spring和Hibernate整合中,大量...

    spring和hibernate集成Demo

    这篇关于"Spring和Hibernate集成Demo"的内容将深入探讨这两者如何协同工作,以及如何构建一个集成的小型项目。 **Spring框架** Spring的核心是依赖注入(Dependency Injection,DI),它允许开发者通过配置文件或...

    spring mvc + spring + hibernate 全注解整合开发视频教程 05

    在本视频教程“Spring MVC + Spring + Hibernate 全注解整合开发 05”中,我们将深入探讨Java企业级开发中的三大核心技术——Spring MVC、Spring和Hibernate的集成应用,特别是如何利用注解进行高效无XML配置的开发...

    Spring与Hibernate集成---声明式事务

    总结来说,Spring与Hibernate的集成使我们可以轻松地在应用程序中管理数据访问和事务,同时保持代码的整洁和模块化。声明式事务管理让开发者专注于业务逻辑,而无需关心事务控制的细节,提高了开发效率和代码质量。...

    spring和hibernate框架

    在使用 Spring 和 Hibernate 进行项目开发时,MyEclipse 是一个常用的集成开发环境(IDE)。MyEclipse 提供了对 Spring 和 Hibernate 的良好支持,包括自动配置、代码生成、调试等功能,使得开发者可以快速构建基于...

    Spring集成Hibernate所需jar包

    - Hibernate注解:`hibernate-annotations.jar`,提供Java 5+的注解支持,简化实体类的配置。 - Hibernate实体关系映射:`hibernate-entitymanager.jar`,提供JPA(Java Persistence API)的实现。 - Hibernate...

    Spring集成Hibernate myeclipse 下

    5. **映射文件或注解**:在实体类上使用Hibernate注解(如@Entity、@Table、@Column等)或创建对应的`.hbm.xml`映射文件,定义实体类与数据库表的关系。 6. **DAO层**:创建DAO(数据访问对象)接口和实现类,用于...

    struts2、spring和hibernate的集成

    Struts2、Spring和Hibernate是Java企业级开发中三大核心框架,它们的集成是构建高效、灵活和可扩展的企业级应用程序的重要方式。Struts2作为MVC(模型-视图-控制器)框架,负责处理HTTP请求,管理视图与业务逻辑的...

    Spring3+Struts2+Hibernate3 全注解集成开发

    在这个"Spring3+Struts2+Hibernate3 全注解集成开发"项目中,我们将深入探讨如何使用这三个框架的注解版本进行集成,以实现对Emp表的操作。 首先,Spring3是依赖注入(DI)和面向切面编程(AOP)的优秀框架。在全...

    spring mvc + spring + hibernate 全注解整合开发视频教程 03

    在本视频教程“Spring MVC + Spring + Hibernate 全注解整合开发 03”中,我们将深入探讨Java企业级开发中的三大核心框架——Spring、Spring MVC和Hibernate的整合应用,尤其是利用注解进行的无XML配置。以下是这些...

    Struts2 Spring3 Hibernate 注解功能 DAO 泛型 通用分页

    Struts2、Spring3和Hibernate是Java开发中的三大框架,它们的集成使用极大地提升了Web应用的开发效率和可维护性。在这个项目"SSHWithAnnotationDemo"中,开发者利用注解功能,DAO泛型以及通用分页技术,进一步优化了...

    struts2 spring hibernate集成

    集成Struts2、Spring和Hibernate时,需要注意配置文件的正确设置,包括Action配置、Spring Bean的定义、Hibernate的数据库连接和实体映射。同时,理解这三个框架的工作原理和相互作用,对于解决问题和优化代码至关...

    spring mvc + spring + hibernate 全注解整合开发视频教程 07

    同时,我们需要配置一个Spring配置文件,声明数据源、事务管理器以及Hibernate的SessionFactory,并使用@EnableWebMvc、@ComponentScan等注解启动Spring MVC和扫描注解的组件。 在实际项目中,通常会使用Spring的...

Global site tag (gtag.js) - Google Analytics