hibernate第一天学习笔记

一.hibernate简介


二.hibernate测试小案例

(1)导包:注意别忘了数据库驱动包


(2)创建实体类User


(3)书写对象-关系映射文件,要注意配置文件名称为:对象名.hbm.xml,比如现在文件名为User.hbm.xml


(4)书写hibernate配置文件,注意配置文件名为:hibernate.cfg.xml



(5)书写demo测试案例



三.测试过程中出现的问题:

(1)org.hibernate.boot.MappingNotFoundException: Mapping (RESOURCE) not found : src/hibernate_hello/User.java : origin(src/hibernate_hello/User.java)
at org.hibernate.boot.spi.XmlMappingBinderAccess.bind(XmlMappingBinderAccess.java:56)
at org.hibernate.boot.MetadataSources.addResource(MetadataSources.java:274)
at org.hibernate.boot.cfgxml.spi.MappingReference.apply(MappingReference.java:70)
at org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.java:413)
at org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.java:87)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:692)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:724)
at hibernate_test.Demo.fun1(Demo.java:20)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)

at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)

解决办法:发现自己在导入约束文件时出现了错误,



(2)经上述修改后,发现问题类型转换了,详情如下:



下面进行问题排查,检查一下数据库的连接问题:

(a)切换到Database Development视图


(b)创建一个数据库连接测试






(c)修改完上述问题,经行测试后还存在错误

打印台打印信息如下:


此时Junit4疯狂报错,读报错信息可发现是age列为空,所以报错


查看demo测试文件,发现:



在进行测试,发现终于正确,数据库中的表也多了一行数据:



在User类中有三个属性,其中id属于主键自增策略,name和age在配置文件User.hbm.xml中也进行了响应的对象-关系映射配置,如果在User.hbm.xml配置文件中不进行age属性的映射配置,在测试demo中也不给age属性赋值,同样会报错:


1.因此我们需要在User类中将age属性,setAge()和getAge()都删除,

2.然后再User.hbm.xml配置文件中将age属性的映射配置去掉

3.在demo测试代码中不给age属性进行赋值操作

如此操作也不会报错











































猜你喜欢

转载自blog.csdn.net/jaybillions/article/details/80546642