package Test; import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration; import model.stud; public class testmain {
public static void main(String[] args) { //配置信息对象
Configuration config=new Configuration();
//配置全局对象
config=config.configure("hibernate.cfg.xml");
//创建session工厂
SessionFactory sessionfactory=config.buildSessionFactory();
//建立数据库会话
Session session=sessionfactory.openSession();
//获取事务对象
Transaction t=session.beginTransaction();
stud stu=new stud(null, "猪大肠", "123456", "嫖娼");
session.save(stu);
t.commit();
session.close();
}
}
以上是测试的基本配置
Session对象的方法
1.save:保存对象(就相当于sql语句里面的添加语句一样);
persist():保存一个对象,跟save作用一样(*如果手动设置了ID,则save方法会忽略ID,而persist方法会抛出一个异常)
2.get:根据OID获取对象(*根据id查询对象):
stud stud = session.get(stud.class, 1);
System.out.println(stud);
3.load:加载一个对象,跟get方法一样:
1.get会立即查询,而load不会立即查询,要等到调用到它时它才会去查询
2.load加载之后,如果session被管理,则直接抛出异常
3.如果数据库中没得响应的结果,则get会返回一个null,而load会直接抛出异常
stud stud=session.load(stud.class, 1);
System.out.println(stud);
4.clear:清空缓存
session.clear();
5.refresh.重新加载某个对象
6.evict:可以将某个被session管理的持久化对象,从session中移除,使其变为游离对象;
1.瞬时态:
存在于程序中,不存在数据库中,没有oid,不在session中
如下:
1 UserInfo userInfo = new UserInfo(88,"恶霸天","987654",30,"小鱼儿与花无缺","simalfishchild@qq.com");
2 System.out.println(userInfo);
2.游离态:
存在与程序中,存在与数据库中,有oid,不在session中
如下:
1 UserInfo userInfo3 = session.get(UserInfo.class, 4);
2 session.clear();
//修改密码
3 userInfo3.setPassWord("6666666");
3.持久态:
存在于程序中,存在于数据库中,有oid,在session中
如下:
UserInfo userInfo2 = session.get(UserInfo.class, 5);
7.close:关闭
session.close();
8.update:更新对象(游离),该对象会转变为持久化对象
//修改
session.update(userInfo);
9.delete:从数据库中删除一个对象, session的delete方法是通过主键进行删除的,主键不存在则异常,持久状态对象被delete后变成瞬时状态对象
session.delete(1);
10.saveOrUpdate:系统会判断该对象,如果是临时对象,就会执行保存操作,如果是游离对象,则执行更新操作
stud stu1=new stud(null, "王胖子", "123456", "嫖娼");
session.saveOrUpdate(stu1);
11.flush:发送让session对象SQL语句
以上方法本人已测试,如有写错的地方请大家指出