项目中使用Spring2.5+hibernate3.3+Struts2.0 注解,但是在项目的工作流中使用到工作流的配置文件hbm文件。所以研究一下注解和hbm的的加载顺序。
首先注解使用的AnnotationSessionFactoryBean 的bean:
public class AnnotationSessionFactoryBean extends LocalSessionFactoryBean implements ResourceLoaderAware;
private static final String RESOURCE_PATTERN = "**/*.class";
private Class[] annotatedClasses;
private String[] annotatedPackages;
private String[] packagesToScan;
//注解类的类型
private TypeFilter[] entityTypeFilters = new TypeFilter[] {
new AnnotationTypeFilter(Entity.class, false),
new AnnotationTypeFilter(Embeddable.class, false),
new AnnotationTypeFilter(MappedSuperclass.class, false)};
private ResourcePatternResolver resourcePatternResolver = new PathMatchingResourcePatternResolver();
注解中可以使用:可以使用注解类,注解包,hbm文件。
/**
* Specify annotated classes, for which mappings will be read from
* class-level JDK 1.5+ annotation metadata.
* @see org.hibernate.cfg.AnnotationConfiguration#addAnnotatedClass(Class)
*/
public void setAnnotatedClasses(Class[] annotatedClasses) {
this.annotatedClasses = annotatedClasses;
}
/**
* Specify the names of annotated packages, for which package-level
* JDK 1.5+ annotation metadata will be read.
* @see org.hibernate.cfg.AnnotationConfiguration#addPackage(String)
*/
public void setAnnotatedPackages(String[] annotatedPackages) {
this.annotatedPackages = annotatedPackages;
}
/**
* Set whether to use Spring-based scanning for entity classes in the classpath
* instead of listing annotated classes explicitly.
* <p>Default is none. Specify packages to search for autodetection of your entity
* classes in the classpath. This is analogous to Spring's component-scan feature
* ({@link org.springframework.context.annotation.ClassPathBeanDefinitionScanner}).
*/
public void setPackagesToScan(String[] packagesToScan) {
this.packagesToScan = packagesToScan;
}
hibernate 的注解和传统的hibernate配置:除了启动方式和配置文件有所改变之外,结合注解来使用hbiernate API和以前的的没有区别。
原来的各种配置文件仍然可以使用。甚至对于同一sessionfactory,你课可以混合注解的持久类以及传统的hbm声明方式,然而你不能多次声明同一个类(注解和hbm采用其中一种),而且在一个映射实体的类继承层中,这两个配置策略不能同时使用。
为了简化从hbm文件到注解的迁移过程。配置机制将自动检测在注解和hbm文件中重复的映射,默认情况下hbm文件按中声明比类中注解元数据具有更高的优先级,这种优先级的设定是以类为单位的,
你可以通过hibernate.mapping.precedence修改这种优先级别,默认值是:hbm,class ,如果该为class,hbm,当发生冲突的时候,类中注解将比hbm文件中具有更改的优先级。
学习技术必须会对比:
在struts2.0中
通常struts2加载struts2常量的顺序如下:
struts-default.xml
struts-plugin.xml
struts.xml
struts.properties
web.xml
在不同的配置文件里存在相同的常量的话,后者将会覆盖前者.
可以看出,struts2.0的xml中声明中属性优先加载,在这点上和hibernate有点相似。
相关推荐
Struts2、Hibernate和iBatis是Java Web开发中三个非常重要的开源框架,它们分别用于MVC(模型-视图-控制器)架构、对象关系映射(ORM)和SQL映射。将这三个框架整合在一起可以构建高效、灵活的Web应用程序。 **...
2. 映射文件(Mapping File):实体与数据库表之间的关系通过Hibernate的XML配置文件(.hbm.xml)或注解进行描述。 3. Session:Hibernate的工作核心,负责在实体对象和数据库之间建立临时的会话,执行CRUD操作。 4....
综合布线施工计划完整版各种表格.doc
桂林电子科技大学硕士研究生入学考试复试试卷离散数学程序设计基础.doc
深信服虚拟化渠道初级认证考卷卷.docx
计算机photoshop等级考试试题.docx
电大程序设计形成性考核答案.doc
网络整改项目参数要求.doc
【目标检测】4种铁轨表面缺陷检测数据集4020张YOLO+VOC格式.docx
网络流量分析解决方案.doc
福建省施工企业三类人员网络继续教育测试题.doc
人工免疫算法专家讲座.pptx
电信互联网数据中心IDC总体技术要求.docx
网易游戏游戏开发工程师与游戏测试面试题.doc
高等教育管理_SpringBootVueMySQLRedisElementUIShiro_大学生体质健康测试全流程信息化管理平台_实现高校学生体质测试预约管理成绩录入分.zip
计算机等级考试一级MSOffice考试样题.doc
理论题电子商务师三级含答案.doc
计算机网络课程考试复习.doc
计算机图形学实验报告新编.doc
数据集介绍:多物种动物目标检测数据集 一、基础信息 数据集名称:多物种动物目标检测数据集 图片数量: - 训练集:4,510张 - 验证集:566张 - 测试集:565张 分类类别(67类): 涵盖陆地、海洋及空中生物,包括熊科(棕熊、北极熊)、猫科(猎豹、狮子)、偶蹄目(骆驼、牛)、鸟类(鹦鹉、鹰)、水生生物(鲨鱼、海龟)、昆虫(蝴蝶、瓢虫)等,完整覆盖常见家养动物与野生动物物种。 标注格式: YOLO格式,包含归一化坐标的边界框标注,适配主流目标检测框架。 二、适用场景 生态监测系统开发: 支持构建野生动物自动识别系统,应用于自然保护区、森林巡护等场景的物种分布监测。 农业智能化管理: 识别家禽、牲畜等农业相关动物,辅助养殖场自动化管理及健康监测。 生物学研究支持: 提供跨物种的视觉识别基准数据,助力动物行为学、种群生态学等研究。 教育科普应用: 适用于自然教育类应用的开发,提供动物识别与知识图谱关联功能。 三、数据集优势 跨域物种全覆盖: 包含67个动物类别,涵盖哺乳动物、鸟类、爬行类、水生生物及昆虫,满足多场景泛化需求。 标注质量保障: YOLO格式标注经严格校验,边界框定位精准,支持高精度目标检测模型训练。 场景多样性突出: 数据来源于航拍、地面拍摄等多视角采集,包含复杂背景下的动物识别样本。 任务扩展性强: 兼容目标检测、物种分类等任务,支持迁移学习至濒危动物监测等垂直领域。