hibernate的session.get/load方法的比较
来源:互联网 发布:淘宝直通车怎么用啊 编辑:程序博客网 时间:2024/05/17 00:52
public static void main(String[] args) {User user = new User();user.setName("test3");user.setBirthday(new Date());try {addObject(user);User user1 = getUser(user.getId());System.out.println("user1" + user1.getClass().getName());System.out.println(user.getId());System.out.println(user1.toString());} catch (Exception e) {e.printStackTrace();}}static User getUser(int userId) throws Exception {Session session = null;User user = null;try {session = HibernateUtil.getSession();user = (User) session.get(User.class, userId);//user = (User) session.load(User.class, userId);return user;} catch (HibernateException e) {e.printStackTrace();throw e;}finally{session.close();}}
打印结果:
Hibernate: insert into USERS (USER_NAME, BIRTHDAY) values (?, ?)
Hibernate: select user0_.USER_ID as USER1_0_0_, user0_.USER_NAME as USER2_0_0_, user0_.BIRTHDAY as BIRTHDAY0_0_ from USERS user0_ where user0_.USER_ID=?
user1blog.hibernate.domain.User
14
User [birthday=2012-08-14 10:53:50.0, id=14, name=test3]
使用load方法打印的结果:
Hibernate: insert into USERS (USER_NAME, BIRTHDAY) values (?, ?)
user1blog.hibernate.domain.User_$$_javassist_0
15
log4j:WARN No appenders could be found for logger (org.hibernate.cfg.Environment).
log4j:WARN Please initialize the log4j system properly.
org.hibernate.LazyInitializationException: could not initialize proxy - no Session
at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:132)
at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:174)
at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:190)
at blog.hibernate.domain.User_$$_javassist_0.toString(User_$$_javassist_0.java)
at blog.hibernate.Base.main(Base.java:25)
session.load(User.class, userId);的理解:
load方法具有懒加载的作用,只会在第一次用到时才会去查询。所以当session关闭后,才第一次用到的话就没法查询了 ,于是就报错了。而get方法没有懒加载的作用。
而且load方法返回的对象永远也不会为Null.
hibernate要求进行映射的类不能是final类型的,因为final类型的类是不能被继承的。这个可以从load方法体会,因为load方法返回的对象实际上是从load(Class clazz,Serializable id)方法的参数Class这个类继承来在实例化的,要是final的话就无法继承了。
- hibernate的session.get/load方法的比较
- hibernate中session的get()、load()方法比较
- hibernate中session的get()、load()方法比较
- hibernate中session的get()、load()方法比较
- hibernate中session的get()、load()方法比较
- hibernate中session的get()、load()方法比较
- hibernate 中 session的get 和load方法比较
- hibernate中session的get、load比较
- hibernate session的get和load方法
- Hibernate中Session.get()方法和load()方法的详细比较
- Hibernate中Session.get()方法和load()方法的详细比较
- Hibernate中Session.get()方法和load()方法的详细比较
- Hibernate中Session.get()方法和load()方法的详细比较
- Hibernate中Session.get()方法和load()方法的详细比较
- hibernate中session的get跟load方法的比较【转载】
- Hibernate中session.get()和session.load()方法的异同
- Hibernate session.get()和session.load()方法的区别
- (hibernate之四)session的load方法和get方法
- 自动更新时间/时区问题
- 谷歌需要虚拟货币吗
- MySQL数据库基础:数据类型及列类型
- delphi变量小记
- 程序开发的哲学
- hibernate的session.get/load方法的比较
- Mongodb 之 数据类型
- 采用 ACE Reactor 实现服务程序例子
- 学习过程中的五谷杂粮
- record
- 换了个3g手机号之后
- 商务智能的应用前景
- 2篇关于JAVA回调函数机制的文章
- 重口味图片