关于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以后版本解决了此问题,通过注解,即可完成映射,并不需要映射文件,如图:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

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

 

 

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

1.       ejb3-persistence.jar

2.       hibernate-annotations.jar

3.       hibernate-commons-annotations.jar

4.       hibernate-core.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整合过程中可能遇到的异常:

  1.  如出现java.lang.NoClassDefFoundError: org/dom4j/ ,导入dom4j.jar包即可
  2. 如出现java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory    需要导入以下四个jar(1 slf4j-api-1.4.3.jar2slf4j-jdk14-1.4.3.jar3slf4j-log4j12-1.4.3.jar4log4j-over-slf4j-1.4.3.jar) 即可
  3. 如出现java.lang.NoClassDefFoundError: javax/transaction/TransactionManager  需要导入 jta.jar
  4.   java.lang.ClassNotFoundException: antlr.ANTLRException  则需要导入ant.jar
  5.   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. 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  即可
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值