最近在做多数据库支持访问,使用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》
分享到:
相关推荐
6. **测试和运行**: 最后,编写测试用例验证Spring和Hibernate的集成是否成功。运行应用,确保数据的持久化和检索功能正常工作。 在实际开发中,为了提高代码的可读性和可维护性,我们可以采用基于注解的配置和实体...
总的来说,这个入门实例旨在帮助初学者理解如何在没有使用注解的情况下,通过XML配置文件集成SpringMVC、Spring和Hibernate,完成一个简单的Web应用。虽然现在的最佳实践倾向于使用注解和Spring Boot,但理解非注解...
下面我们将详细讲解如何配置和使用Spring+Hibernate注解声明式事务: 1. **配置Spring**: - 首先,我们需要在Spring配置文件中启用事务管理器,通常是`HibernateTransactionManager`,并配置数据源。 - 然后,...
在本教程中,我们将深入探讨如何使用Spring MVC、Spring和Hibernate三大框架进行全注解的整合开发。这个视频教程系列的第12部分,将帮助开发者掌握如何在Java Web项目中高效地集成这三个核心框架,实现松耦合、可...
在本视频教程“Spring MVC + Spring + Hibernate 全注解整合开发视频教程 04”中,我们将深入探讨Java企业级开发中的三大核心技术——Spring、Spring MVC和Hibernate的集成与应用,尤其是通过注解实现的简化配置。...
开发者可能会在该文件中找到一个简单的Struts2 Action,一个带有注解的Spring Bean,以及一个用Hibernate注解配置的实体类。通过分析和运行这个`test`文件,可以更好地理解三大框架如何协同工作,以及注解如何简化...
2. **对象关系映射**:Hibernate通过配置文件或注解的方式定义实体类与数据库表之间的映射关系,而Spring则负责管理这些实体对象的生命周期。 3. **异常处理**:Spring为Hibernate提供了一层异常转换机制,将...
本项目"Struts+Spring+Hibernate注解零配置整合"的目标是展示如何通过注解方式实现这三大框架的无缝集成,从而减少XML配置文件的使用,提高开发效率和代码可读性。 在传统的Struts、Spring和Hibernate整合中,大量...
这篇关于"Spring和Hibernate集成Demo"的内容将深入探讨这两者如何协同工作,以及如何构建一个集成的小型项目。 **Spring框架** Spring的核心是依赖注入(Dependency Injection,DI),它允许开发者通过配置文件或...
在本视频教程“Spring MVC + Spring + Hibernate 全注解整合开发 05”中,我们将深入探讨Java企业级开发中的三大核心技术——Spring MVC、Spring和Hibernate的集成应用,特别是如何利用注解进行高效无XML配置的开发...
总结来说,Spring与Hibernate的集成使我们可以轻松地在应用程序中管理数据访问和事务,同时保持代码的整洁和模块化。声明式事务管理让开发者专注于业务逻辑,而无需关心事务控制的细节,提高了开发效率和代码质量。...
在使用 Spring 和 Hibernate 进行项目开发时,MyEclipse 是一个常用的集成开发环境(IDE)。MyEclipse 提供了对 Spring 和 Hibernate 的良好支持,包括自动配置、代码生成、调试等功能,使得开发者可以快速构建基于...
- Hibernate注解:`hibernate-annotations.jar`,提供Java 5+的注解支持,简化实体类的配置。 - Hibernate实体关系映射:`hibernate-entitymanager.jar`,提供JPA(Java Persistence API)的实现。 - Hibernate...
5. **映射文件或注解**:在实体类上使用Hibernate注解(如@Entity、@Table、@Column等)或创建对应的`.hbm.xml`映射文件,定义实体类与数据库表的关系。 6. **DAO层**:创建DAO(数据访问对象)接口和实现类,用于...
Struts2、Spring和Hibernate是Java企业级开发中三大核心框架,它们的集成是构建高效、灵活和可扩展的企业级应用程序的重要方式。Struts2作为MVC(模型-视图-控制器)框架,负责处理HTTP请求,管理视图与业务逻辑的...
在这个"Spring3+Struts2+Hibernate3 全注解集成开发"项目中,我们将深入探讨如何使用这三个框架的注解版本进行集成,以实现对Emp表的操作。 首先,Spring3是依赖注入(DI)和面向切面编程(AOP)的优秀框架。在全...
在本视频教程“Spring MVC + Spring + Hibernate 全注解整合开发 03”中,我们将深入探讨Java企业级开发中的三大核心框架——Spring、Spring MVC和Hibernate的整合应用,尤其是利用注解进行的无XML配置。以下是这些...
Struts2、Spring3和Hibernate是Java开发中的三大框架,它们的集成使用极大地提升了Web应用的开发效率和可维护性。在这个项目"SSHWithAnnotationDemo"中,开发者利用注解功能,DAO泛型以及通用分页技术,进一步优化了...
集成Struts2、Spring和Hibernate时,需要注意配置文件的正确设置,包括Action配置、Spring Bean的定义、Hibernate的数据库连接和实体映射。同时,理解这三个框架的工作原理和相互作用,对于解决问题和优化代码至关...
同时,我们需要配置一个Spring配置文件,声明数据源、事务管理器以及Hibernate的SessionFactory,并使用@EnableWebMvc、@ComponentScan等注解启动Spring MVC和扫描注解的组件。 在实际项目中,通常会使用Spring的...