hibernate3.6Final的Annotation来实现实体类与数据库表的映射关系
最近在学习hibernate3.6时遇到的一些问题,记录一下自己解决异常的方法,留待以后参考。
在hibernate3.6final以前,在hibernate中使用Annotation,还需要下载Annotation库。hibernate的core类库与Annotation类库默认是分开的,当我们要是使用Annotation时,还需添加ejb3-persistence.jar hibernate-annotations.jar hibernate-commons-annotations.jar添加到classpath中。
如果我们使用了Annotation,要获得SessionFactory必须以下这样写(hibernate3.6以前)
Configuration cfg=new AnnotationConfiguration();
SessionFactory s=cfg.configure().buildSessionFactory()
而hibernate3.6final,已经把Annotation类库集成到了hibernate3.6。当我们想使用Annotation时,下载hibernate3.6final,不再需要下载hibernate-annotations-3.4.0.GA.zip了。
刚开始的时候,我使用hibernate3.6按着以前的版本那样添加了所有类库,后来就出现了以下异常:
Exception in thread "main" java.lang.NoClassDefFoundError: javax/persistence/Cacheable
at org.hibernate.cfg.AnnotationBinder.determineCacheSettings(AnnotationBinder.java:988)
at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:579)
at org.hibernate.cfg.Configuration$MetadataSourceQueue.processAnnotatedClassesQueue(Configuration.java:3977)
at org.hibernate.cfg.Configuration$MetadataSourceQueue.processMetadata(Configuration.java:3931)
at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1368)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1826)
at TeacherTest.main(TeacherTest.java:20)
Caused by: java.lang.ClassNotFoundException: javax.persistence.Cacheable
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
... 7 more
几经周折,才解决了这个异常,因为已经集成了Annotation类库,所以不在需要添加hibernate-annotations.jar hibernate-commons-annotations.jar等类库了。当我们用hibernate3.6使用Annotation时,有一个类库必须添加hibernate-jpa-2.0-api-1.0.0.Final.jar类库。添加之后,上面的异常就解决了。
hibernate 3.6要获取一个SessionFactory,我可以直接像用xml来配置实体与数据库表的映射关系那样。代码如下:
Configuration cfg=new Configuration();(注意这里的变化,跟以前版本的不同。)
SessionFactory s=cfg.configure().buildSessionFactory();
一开始我也是用xml来配置实体与数据表的映射关系的,后来发现Annotation真的很方便。
分享到:
相关推荐
jackson开发中用到的三个jar包,包含jackson-annotations-2.2.3.jar jackson-core-2.2.3.jar jackson-databind-2.2.3.jar
jackson-databind-2.9.10.8.jar升级相关jar包包含: jackson-module-jaxb-annotations-2.9.10.jar jackson-core-2.9.10.jar jackson-databind-2.9.10.8.jar jackson-annotations-2.9.10.jar jackson-jaxrs-json-...
jackson-annotations-2.9.6.jar是Jackson的注解支持包。
官方版本,亲测可用
赠送jar包:swagger-annotations-1.6.2.jar; 赠送原API文档:swagger-annotations-1.6.2-javadoc.jar; 赠送源代码:swagger-annotations-1.6.2-sources.jar; 赠送Maven依赖信息文件:swagger-annotations-1.6.2....
使用hibernate-validator 进行校验的jar包,里面包括了基础hibernate-validator-5.0.0.CR2.jar hibernate-validator-annotation-processor-5.0.0.CR2.jar 之外,还包括了el-api-2.2.jar javax.el-2.2.4等项目必不可...
赠送jar包:jboss-annotations-api_1.3_spec-2.0.1.Final.jar; 赠送原API文档:jboss-annotations-api_1.3_spec-2.0.1.Final-javadoc.jar; 赠送源代码:jboss-annotations-api_1.3_spec-2.0.1.Final-sources.jar;...
现在已经不用*.hbm.xml这种映射文件了,都是用Annotation(注解)方式来完成实体与表之间的映射关系,这样看起来比用xml文件来映射更具有可读性,自我感觉以后Hibernate Annotation的映射方式将代替hibernate 的*....
赠送jar包:audience-annotations-0.5.0.jar; 赠送原API文档:audience-annotations-0.5.0-javadoc.jar; 赠送源代码:audience-annotations-0.5.0-sources.jar; 赠送Maven依赖信息文件:audience-annotations-...
打包了Hibernate-annotations相关的几个jar包
hibernate-annotations-3.4.0.GA.rar 提供hibernate与annotation的配置包,一般现在的版本是3.5的版本,而3.5版本里面的参考文档不是很齐全,因此老版本的hibernate包还是有用的
hibernate-annotations-3.4.0.GA.rar
androidx-annotation-1.0.0.jar
jackson-2.9.4.jar包融合了databind;core;annotation;三个包的内容,省去了导包的麻烦
赠送jar包:findbugs-annotations-1.3.9-1.jar; 赠送原API文档:findbugs-annotations-1.3.9-1-javadoc.jar; 赠送源代码:findbugs-annotations-1.3.9-1-sources.jar; 赠送Maven依赖信息文件:findbugs-...
赠送jar包:jboss-annotations-api_1.3_spec-2.0.1.Final.jar; 赠送原API文档:jboss-annotations-api_1.3_spec-2.0.1.Final-javadoc.jar; 赠送源代码:jboss-annotations-api_1.3_spec-2.0.1.Final-sources.jar;...
注:下文中的 *** 代表文件名中的组件名称。 # 包含: 中文-英文对照文档:【***-javadoc-API文档-中文(简体)... (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;
目前包含jar列表如下: ant-1.9.3.jar ant-launcher-1.9.3.jar asm-all-5.0.3.jar bcpg-jdk15on-1.51.jar bcprov-jdk15on-1.51.jar bndlib-2.1.0.jar bsh-2.0b4.jar commons-beanutils-1.7.0.jar commons-...
Android Support 包之一的 support-annotations 是通过静态编译检测来提高代码质量的一个注解工具。里面包含了 Android 开发中常用的代码检测注解,帮助开发者提高代码质量。
hibernate-validator-annotation-processor-4.3.1.final-sources.jar.zip