package Text;import java.util.Date;import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.stat.Statistics;import domain.IdCard;
import domain.person;import tool.HibernateUtil;public class One2One {
public static void main(String[] args) {
//add();
query(2);
Statistics st=HibernateUtil.getSessionFactory().getStatistics();
System.out.println("put:"+st.getSecondLevelCachePutCount());
System.out.println("hit:"+st.getSecondLevelCacheHitCount()); System.out.println("miss:"+st.getSecondLevelCacheMissCount());
}
static void add()
{
Session s=null;
Transaction tx=null;
try{
IdCard idCard=new IdCard();
idCard.setTime(new Date());
person person=new person();
person.setName("p");
person.setIdCard(idCard);
idCard.setPerson(person);
s=HibernateUtil.getSession();
tx=s.beginTransaction();
s.save(idCard);
s.save(person);
tx.commit(); }finally{ if(s!=null) s.close();}
}static void query(int id)
{ Session s=null;
try{ s=HibernateUtil.getSession();
person p=(person)s.get(person.class, id);
System.out.println(p.getIdCard().getTime());
p=(person)s.get(person.class, id);
System.out.println("----------");
System.out.println(p.getIdCard().getTime());
}finally{ if(s!=null) s.close();}
try{ s=HibernateUtil.getSession();
person p=(person)s.get(person.class, id);
System.out.println(p.getIdCard().getTime());
}finally{ if(s!=null) s.close();}
}
}配置是:
Hibernage.cfg.xml<property name="cache.use_second_level_cache">true</property>
<property name="cache.provider_class">org.hibernate.cache.OSCacheProvider</property>person.hbm.xml<cache usage="read-write"/> 结果是:
Hibernate: select person0_.id as id5_1_, person0_.name as name5_1_, idcard1_.id as id6_0_, idcard1_.time as time6_0_ from person person0_ left outer join id_card idcard1_ on person0_.id=idcard1_.id where person0_.id=?
2010-03-10 20:22:04.0
----------
2010-03-10 20:22:04.0
Hibernate: select idcard0_.id as id6_0_, idcard0_.time as time6_0_ from id_card idcard0_ where idcard0_.id=?
2010-03-10 20:22:04.0
put:0
hit:0
miss:0
解决方案 »
- 怎么把String转成Date
- 用JAVA写一个多线程程序,输出1,2,3,4,5,6,7。。。
- 一个运算符的操作
- struts2的select标签如何选中选项就能提交?
- freemarker list生成静态网页
- tomcat出现不编译单个页面,其他页面都正常
- myfaces中的DataTable接受一个list,但是这么做的话需要把数据库的数据全部选出来,这些麻烦了,数据库20多万记录,我8000条就要卡住10几秒,
- [200分]j2ee中如何通过web service访问一个c++开发的系统中的API,急等-----急等!
- 我装CVS后,在客户端运行,为什么总显示,"no sunch repository err"
- java读excel出错
- hibernate的一些jar文件
- 关于servlet返回的text/html格式信息的时候
http://rujingzhang.javaeye.com/blog/219487
你查询第二次的时候应该是
s2=HibernateUtil.getSession();
p=(person)s2.get(person.class, id);
这样你试试..
效果应该能出来
static void query(int id)
{ {
Session s=null;
try{
s=HibernateUtil.getSession();
person p=(person)s.get(person.class, id);
System.out.println(p.getIdCard().getTime());
System.out.println("----------");
p=(person)s.get(person.class, id);
System.out.println(p.getIdCard().getTime());
}finally{ if(s!=null) s.close();}
}
{Session s2=null;
try{
s2=HibernateUtil.getSession();
person p=(person)s2.get(person.class, id);
System.out.println(p.getIdCard().getTime());
}finally{ if(s2!=null) s2.close();}
}
}
老兄再给看看