关于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包:
如果和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整合过程中可能遇到的异常: