首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

关于Hibernate3.2之后版本的注解映射

2012-08-24 
关于Hibernate3.2以后版本的注解映射??? Hibernate是一个开发源码的对象关系映射框架,它对JDBC进行例如非

关于Hibernate3.2以后版本的注解映射

??? Hibernate是一个开发源码的对象关系映射框架,它对JDBC进行例如非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象思维来操作数据库。
??? Hibernate可以应用的任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servler/JSP的web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的JAVAEE架构中取代CMP,完成数据持久化的重任。
??? 大多数开发机构经常采取创建各自独立的数据持久层。一旦底层的数据结构发生改变,那么修改应用的其余部分使之适应这种改变的代价是十分巨大的。Hibernate适时的填补了这以空白,它为Java应用提供了一个易用的,高效率的对象关系映射框架。Hibernte是一个轻量级的持久性框架,功能却非常丰富。
主要优点:
1.Hibernate使用JAVA反射机制而不是字节码增强程序来实现透明性。
2.Hibernate的性能非常好,因为它是一个轻量级的框架。映射的灵活性很出色。

它支持各种数据库,从一对一到多对多的各种复杂关系。

Hibernate3.2以前的版本并不支持注解映射,每一个POJO类都要对应一个映射文件(XXX.hbm.xml),在一个比较大的项目中,如果采用配置文件映射,可想而知,相当复杂,容易混乱,正好,Hibernate3.2以后版本解决了此问题,通过注解,即可完成映射,并不需要映射文件,如图:
关于Hibernate3.2之后版本的注解映射

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

关于Hibernate3.2之后版本的注解映射

?

?

?

?

?? 图中,完成了id和name的映射,其中@Column表示映射的列, name 属性表示数据库中的列名,strategy 属性表示了主键是生成策略,@Entity表示实体类,@Table表示映射的表,name表示映射到数据库中的表名,其中name可以省略,前提是类名和表名相同。

??? 这些注解均在?javax.persistence包中,所以要导入这个包,才能使用这些注解

?

?

使用Hibernate3.2 以上版本的注解映射,需导入以下jar包:

如果和Spring 整合,那么需要另外导入一个jar包(spring.jar)。

注意:

此spring.jar必须是 Spring2.5以上版本的,因为,Spring2.5之前org.springframework.orm.hibernate3.LocalSessionFactoryBean类中,并没有 packageToScan 这个属性,只有mappingResuorces这个属性。而packageToScan这个属性正是映射包中的类,而mappingResuorces只是映射某个文件。

<property name=” packageToScan”>

?????? <list><value>com.test.po</value></list>

</property>

这样,即可完成映射。

?

在使用 Hiberante注解映射和Spring整合过程中可能遇到的异常:

    ?如出现java.lang.NoClassDefFoundError: org/dom4j/ ,导入dom4j.jar包即可如出现java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory? ,? 需要导入以下四个jar包(1: slf4j-api-1.4.3.jar、2:slf4j-jdk14-1.4.3.jar、3:slf4j-log4j12-1.4.3.jar、4:log4j-over-slf4j-1.4.3.jar) 即可如出现java.lang.NoClassDefFoundError: javax/transaction/TransactionManager? , 需要导入 jta.jar包? java.lang.ClassNotFoundException: antlr.ANTLRException? 则需要导入ant.jar包? org.springframework.util.Assert.noNullElements([Ljava/lang/Object;Ljava/lang/String;)V? Invalid property 'packagesToScan' of bean class [org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean]: Bean property 'packagesToScan' is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter??? 这是由于,spring.jar包的版本不符,把spring.jar换成Spring 2.5以上版本即可6.? java.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit(IILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)V??????? jar包冲突,删除asm-2.2.3.jar? 即可

热点排行