一、单模
1 .根据第一个项目,将创建sessionfactory的代码封装到类中,并在manager中调用。 静态代码块中的操作只执行一次
package cn.hrbust.dao;
importorg.hibernate.hibernate exception;
importorg.hibernate.session factory;
importorg.hibernate.CFG.configuration;
//会话工厂单工模式
公共类共享实用工具{
私有状态会话factorysf=null;
私有状态配置文件=空值;
加载static {//类时只运行一次
try {
cfg=new Configuration ().configure );
sf=cfg.buildSessionFactory (;
}catch(hibernateexceptione ) {
//todo auto-generated catch块
e .打印堆栈跟踪(;
}
}
publicstaticsessionfactorygetsessionfactory {
返回科幻;
}
publicstaticvoidclosesessionfactory {
sf.close (;
}
}
将以下内容添加到hibernate.cfg.xml中的session-factory标记中
property name=' hibernate.current _ session _ context _ class ' thread/property
使用util工具而不是manageUser会话工厂,如何打开会话将openSession转换为getCurrentSession
configuration conf=new configuration ().configure );
sssionfactorysf=hibernate util.getsession factory (;//会话工厂单工模式
sssionsession=SF.getcurrentsession (; //确保每个读写线程都有唯一的session实例
4 .测试并成功插入了当前的HibernateUtil工具类
二、使用JUnit测试方法(用JUnit测试main中没有的函数) ) ) ) ) )。
1.manageUser类继承TestCase并部署Junit 3jar包
添加testSaveUser方法并测试save功能:
//保存用户对象
公共语音测试用户
sssionfactorysf=hibernate util.getsession factory (;
sssionsession=SF.getcurrentsession (;
传输ts=null;
try{
ts=session.beginTransaction (;
用户用户=new user (;
user.setName (行人丙);
user.setGender (女);
user.setage(21;
user.set birthday (date.value of (2021-6-14 ) );
sssion.save(user );
ts.commit (;
}catch(exceptione ) {
if(ts!=null () { ts.rollback; }
e .打印堆栈跟踪(;
}
}
添加testQueryUser方法并测试Query功能:
//查询用户对象
公共语音测试查询用户
configuration conf=new configuration ().configure );
sssionfactorysf=hibernate util.getsession factory (;//会话工厂单工模式
sssionsession=SF.getcurrentsession (; //确保每个读写线程都有唯一的session实例
传输ts=null;
try{
ts=session.beginTransaction (; //开始一个事务
query query=session.create query (' fromuser ' );
ListUser users=query.list (;
for(intI=0; iusers.size (; I )
{
useru=users.get(I;
system.out.println(u.getname () ' u.getAge ) );
}
ts.commit (; //提交事务
}catch(exceptione ) {
if(ts!=null () { ts.rollback; }
e .打印堆栈跟踪(;
}finally{
//session.close (;
//sf.close (;
}
}