项目中使用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有点相似。
相关推荐
通过myeclipse自动生成Hibernate类文件和hbm.xml文件,链接数据库库自动生成
然而,在实际开发过程中,我们可能会遇到一些问题,比如在处理`hbm.xml`文件中的中文注释时出现乱码,或者希望自动生成的实体类中包含有详细的注释。本文将详细介绍如何利用`Hibernate-tools`来解决这些问题,以`...
本文将详细介绍如何利用Hibernate逆向生成实体类的方法,包括通过注解映射以及hbm.xml文件映射两种方式。 #### 一、环境准备与配置 1. **安装并配置MyEclipse**: - 安装MyEclipse,并确保已安装Hibernate插件。 ...
在Hibernate 3之前,实体类和它们与数据库表之间的映射通常通过XML配置文件(如hibernate.cfg.xml和.hbm.xml)来定义。然而,随着注解的引入,这些信息可以直接在Java类上声明,使得代码更加简洁、易读。 ### 2. ...
在Java的持久化框架Hibernate中,注解的引入极大地简化了对象关系映射(ORM)的配置过程。本文将详细讲解如何在Hibernate中使用注解进行实体bean的配置。 首先,我们来看一下Hibernate注解的基本概念。自从JDK 1.5...
hibernate.queries.hbm.xml这个文件需要放在jbpm*(版本).jar中。。的org.jbpm.db目录下,先删除以前的文件,然后,换上共享中这个。。大家可以用文件比较器看看,并没有改变以前的,只是新加了。。
在Hibernate3版本中,有两个重要的工具,即hbm2ddl和hbm2java,它们在项目开发中扮演着重要角色。 1. hbm2ddl: hbm2ddl是Hibernate提供的一个自动化数据库建模工具,它可以将Hibernate的映射文件(.hbm.xml)转换...
标题中的“利用Middlegen Hibernate3生成hbm.xml配置和java类”指的是使用Middlegen工具来自动化创建Hibernate3框架所需的映射文件(hbm.xml)和对应的Java实体类。这个过程是数据库对象到Java对象(O/R Mapping)的...
在Hibernate中,注解用于将Java类与数据库表关联,以及将类的属性与表的列对应起来,从而实现了对象关系映射(ORM)。 1. **实体类注解**: - `@Entity`:标记一个Java类为数据库中的一个实体表,相当于传统的...
在Eclipse中,选择`右键项目 -> Hibernate -> Generate Hibernate Artifacts`,在弹出的对话框中,选择`hibernate.cfg.xml`和`hibernate.reveng.xml`文件,然后指定生成的目标目录。点击确定后,Hibernate Tool会...
在Java的持久化框架Hibernate中,`hibernate.hbm.xml`文件是至关重要的,它定义了Java对象与数据库表之间的映射关系,使得对象模型能够与关系型数据库无缝对接。这篇文章将深入解析`hibernate.hbm.xml`的结构和主要...
详解hibernate.hbm2ddl.atuo 属性的配置
3. 将 hbm.xml 文件加入到 application.mappinginfo.xml 中:将 hbm.xml 文件加入到 application.mappinginfo.xml 中,以便于 Hibernate 可以正确地加载映射关系。 五、 小结 通过以上步骤,开发者可以使用 ...
在 NHibernate 中,`hbm.xml` 文件是用于定义对象和数据库表之间映射的关键文件。本实例代码详细介绍了三种不同的 `hbm.xml` 加载方式,这对于理解和使用 NHibernate 进行数据持久化至关重要。 1. **文档直接引用**...
MyEclipse中自动生成Hibernate的POJO、DAO和hbm.xml文件 MyEclipse是一款功能强大且流行的集成开发环境(IDE),它提供了许多实用的功能来帮助开发者快速构建和维护项目。其中,MyEclipse提供了对Hibernate的支持,...
在开发过程中,为了减少手动编写实体类(Entity)和对应的hbm.xml配置文件的工作量,Hibernate提供了一个逆向工程工具,可以基于现有数据库结构自动生成这些代码。 实体类是Java对象,它们代表数据库中的表,而hbm....
- **自动创建/更新表**: `hibernate.hbm2ddl.auto=update` 表示当表结构与HBM映射文件不一致时,会自动更新表结构。 #### 二、映射实体类 接下来是实体类的映射部分,这部分定义了Java对象和数据库表之间的映射...
修改了Hibernate的源码,可动态增加映射文件
针对hibernate关系映射进行了一个总结,包含xml配置形式和@注解配置形式,one-to-many,one-to-noe,many-to-one,many-to-many等单方向的配置和双方都配置的事例