Hibernate单条查询语句get/load方法区别
来源:互联网 发布:淘宝助理导出订单 编辑:程序博客网 时间:2024/05/29 15:52
下午看了Hibernate的视频,讲到了单条查询语句get和load方法的区别,主要有三点:
- get方法会返回一个持久化类的对象,load方法则返回一个代理对象,其中只保存了持久化类的id属性
- get方法查询时会立即执行sql语句,load方法查询时则不会立即执行sql语句,而是当真正用到被查询对象(即被查询数据)的某个其他属性(即该条数据字段)时,才会去执行sql语句
- 当被查询对象不存在(即数据库中某条数据不存在)时,get方法会返回一个null,而load方法会直接抛出异常(org.hibernate.ObjectNotFoundException)
打开eclipse测试一下get和load方法的区别:
@Test public void loadAndGet() { Student s = new Student("小黄", 98, "男", new Date()); Student s1 = new Student("小李", 28, "男", new Date()); session.save(s); session.save(s1); Student sGet = (Student) session.get(Student.class, 1); Student sLoad = (Student) session.load(Student.class, 2); System.out.println(sGet.toString()); System.out.println(sLoad.toString()); }
- 设置开启sql语言的打印和格式化,主键的生成策略为native。JUnit测试正常无报错,数据库正确生成表并保存数据,按照上面贴出的代码段,应该get和load方法都会打印输出select语句(重写了student对象的toString()方法,用到了student的所有属性,所以load方法也执行了sql语句),但是发现怎么也看不见select语句的打印输出!!!!只有建表跟插入语句。
- 于是又测试了hibernate的update、delete方法,也能打印正确的update跟delete的sql语句,就是不打印select!!!!
- 解决:hibernate.cfg.xml配置文件中建表模式问题:
<property name="hbm2ddl.auto">create</property>
create模式下就是不打印select语句,非常执着~~,其他一切正常,改为update方式后即可打印select语句。。
阅读全文
0 0
- Hibernate单条查询语句get/load方法区别
- Hibernate单表操作(六)——查询记录get()与load()方法区别
- hibernate load get方法区别
- hibernate get/load方法区别
- Hibernate 中 get与load方法区别
- Hibernate 中 get与load方法区别
- hibernate:get和load方法的区别
- Hibernate中load和get方法区别
- Hibernate中load和get方法区别
- hibernate的get和load方法区别
- hibernate 的get()和load()方法区别
- hibernate get和load 方法的区别
- Hibernate get和load方法区别
- 浅谈Hibernate中Session查询时get方法与load方法的区别
- hibernate get() load() 区别
- hibernate get() load() 区别
- Hibernate load get 区别
- hibernate get load 区别
- 对JAVA强引用、软引用、弱引用、虚引用的理解
- scala建议使用常量val,而不使用变量var
- HNUST 1695: 跳格子(简单模拟)
- CSS清除浮动方法及优缺点分析
- Fragment结合ViewPager之懒加载 1
- Hibernate单条查询语句get/load方法区别
- 使用Object对象的toString()方法自定义判断数据类型方法
- 如何关闭TestFlight beta测试
- Android 6.0权限动态获取
- 流程随便写写啦
- Java类的加载顺序
- [机器学习]详解分类算法--决策树算法
- 如何写代码 —— 编程内功心法
- 恢复程序默认打开的窗口位置