hibernate的get(java.lang.Class arg0, java.io.Serializable arg1) 再续
来源:互联网 发布:淘宝盗图怎样不被发现 编辑:程序博客网 时间:2024/05/18 00:07
主要讨论get(java.lang.Class arg0, java.io.Serializable arg1)和load(java.lang.Class arg0, java.io.Serializable arg1)区别
根据上篇加了lazy=“false”
将测试类改成:
package com.hibernate;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
public class Test11 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
SessionFactory sf=new Configuration().configure().buildSessionFactory();
Session session=sf.openSession();
Group g1=new Group();
g1.setName("g1");
Group g2=new Group();
g2.setName("g2");
User user1=new User();
user1.setName("u1");
user1.setGroup(g1);
User user2=new User();
user2.setName("u2");
user2.setGroup(g2);
Transaction tx=session.beginTransaction();
session.save(g1);
int id=g1.getId();
System.out.println("id--"+id);
session.save(g2);
session.save(user1);
session.save(user2);
session.flush();
tx.commit();
//缓存?直接找到存在session里面的对象?
Group g=(Group)session.load(Group.class, id);
System.out.println("name---"+g.getName());
System.out.println("s---"+g.getUsers().size());
session.clear();
int id2=g1.getId();
System.out.println("id2--"+id2);
Group gg2=(Group)session.load(Group.class, id2);
System.out.println("gg2name---"+gg2.getName());
System.out.println("gg2size---"+gg2.getUsers().size());
session.close();
}
}
后台打印:
Hibernate: select hibernate_sequence.nextval from dual
id--119
Hibernate: select hibernate_sequence.nextval from dual
Hibernate: select hibernate_sequence.nextval from dual
Hibernate: select hibernate_sequence.nextval from dual
Hibernate: insert into t_group (name, id) values (?, ?)
Hibernate: insert into t_group (name, id) values (?, ?)
Hibernate: insert into t_user (name, groupId, id) values (?, ?, ?)
Hibernate: insert into t_user (name, groupId, id) values (?, ?, ?)
name---g1
s---0
id2--119
Hibernate: select group0_.id as id3_0_, group0_.name as name3_0_ from t_group group0_ where group0_.id=?
Hibernate: select users0_.groupId as groupId1_, users0_.id as id1_, users0_.id as id4_0_, users0_.name as name4_0_, users0_.groupId as groupId4_0_ from t_user users0_ where users0_.groupId=?
gg2name---g1
gg2size---1
上篇的get(java.lang.Class arg0, java.io.Serializable arg1)是执行完这行代码,就查询数据库,产生SQL语句。
这里load(java.lang.Class arg0, java.io.Serializable arg1),即 Group gg2=(Group)session.load(Group.class, id2);是执行完了这行代码之后,没有产生SQl语句。
当 System.out.println("gg2name---"+gg2.getName());产生Hibernate: select group0_.id as id3_0_, group0_.name as name3_0_ from t_group group0_ where group0_.id=?
Hibernate: select users0_.groupId as groupId1_, users0_.id as id1_, users0_.id as id4_0_, users0_.name as name4_0_, users0_.groupId as groupId4_0_ from t_user users0_ where users0_.groupId=?
gg2name---g1
总结:
load(java.lang.Class arg0, java.io.Serializable arg1),根据主键arg1找对象,没有在session里找到缓存对象的话,产生一个代理,当调用方法时,到数据库查询数据。
get(java.lang.Class arg0, java.io.Serializable arg1),不会产生代理。
- hibernate的get(java.lang.Class arg0, java.io.Serializable arg1) 再续
- hibernate的get(java.lang.Class arg0, java.io.Serializable arg1)
- hibernate的get(java.lang.Class arg0, java.io.Serializable arg1) 续
- Ant打包jar,参数名变为无意义的arg0,arg1,Java代码提示参数名称无意义
- 解决方法参数为arg0,arg1的问题
- java.io.Serializable的作用
- hibernate get(User.class,Serializable id)
- public class 实体类名 implements java.io.Serializable{...}
- public class 实体类名 implements java.io.Serializable{...}
- public class 实体类名 implements java.io.Serializable{...}
- java.io.Serializable
- java.io.serializable
- java.io.Serializable
- java.io 接口 Serializable
- java.io.Serializable 接口
- java.io.Serializable 接口
- java.io.Serializable
- java.io.serializable 2
- Tomcat设计模式-模板方法模式
- FileWrite写中文乱码的问题
- win7下JDK环境变量设置方法
- 白胡子不杀黑胡子的真正原因
- HTTP1.1访问HTTPS使用gzip压缩及解压缩
- hibernate的get(java.lang.Class arg0, java.io.Serializable arg1) 再续
- Android LocalBroadcastManager解决BroadcastReceiver安全问题及自定义权限
- 使用JQuery来实现在cookie中保存密码的代码
- 算法小题:m个相同的苹果,放在n个相同的盘子中,求有多少种结果
- 获取string.xml中的字符
- jquery ztree 一次性通过URL请求加载整棵树,思路实现
- 关闭win7/Server 2008非正常关机启动自动修复功能
- mysql数据总结 命令
- 《Linux中断编程》中断处理底半部