load()和get()的区别
来源:互联网 发布:wtaps15aw裤数据 编辑:程序博客网 时间:2024/06/13 09:38
load加载方法:
Java代码
Users user = (Users)session.load(Users.class, userId);
Users user = (Users)session.load(Users.class, userId);
get加载方法:
Java代码
Users user = (Users)session.get(Users.class, userId);
Users user = (Users)session.get(Users.class, userId);
两加载方法区别:
区别1:如果数据库中,没有userId的对象。如果通过get方法加载,则返回的是一个null;如果通过load加载,则返回一个代理对象,如果后面代码如果调用user对象的某个属性(比如user.getPassword())会抛出异常:org.hibernate.ObjectNotFoundException;
区别2:load支持延迟加载,get不支持延迟加载。
也就是说:
Java代码
Users user = (Users)session.load(Users.class, userId);
Users user = (Users)session.load(Users.class, userId);
这句代码不会去执行数据库查询,只有用到user时才会去执行数据库查询。
而:
Java代码
Users user = (Users)session.get(Users.class, userId);
Users user = (Users)session.get(Users.class, userId);
则立即去执行数据库查询。 所以Users user = (Users)session.load(Users.class, userId);不会执行任何sql。
注意:
Java代码
Users user = (Users)session.load(Users.class, userId);
System.out.println(user.getId());
Users user = (Users)session.load(Users.class, userId);
System.out.println(user.getId());
上面这2句代码,不会去执行数据库操作。因为load后会在hibernate的一级缓存里存放一个map对象,该map的key就是userId的值,但是当你getId()时,它会去一级缓存里拿map的key值,而不去执行数据库查询。所以不会报任何错。不会执行任何数据库操作。
- get 和 load 的区别
- load()和get()的区别
- get和load的区别
- get 和 load的区别
- get()和load()的区别
- get和load的区别
- get()和load()的区别
- get和load的区别
- load()和get()的区别
- .load()和get()的区别
- get 和 load 区别
- Hibernate的get和load的区别
- Hibernate的get和load的区别
- Hibernate的get和load的区别
- hibernate的load和get的区别
- spring的load和get的区别
- hibernate的load()和get()的区别
- hibernate的load()和get()的区别
- Android studio mac快捷键以及mac快捷图标对应
- 中国移动宽带密码重置方法
- jndi配置
- ARM64 小汇编程序:
- Matlab编程与数据类型 -- 结构数组
- load()和get()的区别
- Linux文件的特殊权限之Sticky Bit (粘滞位,SBIT)
- 机器学习之旅-重要的Python库:pandas
- Mfc子窗口修改Static Text控件的字体、大小、颜色
- 习题3-1 得分(Score, ACM/ICPC Seoul 2005, UVa 1585)
- javascript中的String
- Hibernate与 MyBatis的比较
- centos最小化安装后推荐安装的软件包
- Android 文件读写