* 实现数据库的增删改查 * API: * 1.Configuration:这个类负责读取XML文档(映射配置文件) * configure():读xml * buildSessionFactory():创建一个生产session对象的工厂,其实是再次检查 * 因为hibernate和jdbc不一样,jdbc是如果不手动设置开启事务,那它 * 就是马上执行sql的,hibernate的不会马上执行,是事务提交后执行 * 默认情况下就是打开事务的状态,这里只是再检查以下 * 2.SessionFactory:负责生产session对象 * openSession():创建一个session * 3.Session类:这个是主要的类,负责增删改查,开启事务等 * beginTransaction():产生一个事务对象(Transaction) * save():增加相当于操作sql中的insert语句 * 4.Transaction类:负责管理事务的 * commit():提交一个事务 * test1():测试插入的功能 * test2():测试数据同步更新的功能 * test3():测试saveOrUpdate() * test4():测试clear()和flush() */ package Yuchen.fristHbn.client;
import org.hibernate.Session; import org.hibernate.Transaction;
import Yuchen.fristHbn.business.Biz.FruitManager; import Yuchen.fristHbn.business.entity.Fruit; import Yuchen.fristHbn.util.HbnUtil;
public class Test {
public void test1(){ Fruit fruit=new Fruit("lisi","hello",100); // fruit.setName("zhangsan"); // fruit.setComments("hello"); // fruit.setPrice(100);
FruitManager fm=new FruitManager(); fm.insert(fruit); }
public void test2(){ //测试同步更新的功能 Fruit fruit=new Fruit("meigui","hongse",70);//顺态 FruitManager fm=new FruitManager(); Fruit fruit2=new Fruit();
Integer id=fm.insert(fruit); fruit2=fm.selectId(id); System.out.println(fruit2.getFid()); System.out.println(fruit2.getName());
fruit.setName("ziluolan");//这里修改了对象 fruit2=fm.selectId(id); System.out.println(fruit2.getFid());//但是结果没有更新 System.out.println(fruit2.getName()); //因为fruit在Integer id=fm.insert(fruit);后变成游离态了 //也就是说只有持久态才能实现同步更新 System.out.println(fruit.getFid()); System.out.println(fruit.getName()); }
public void test3(){ Session session=HbnUtil.getSession(); Transaction t=session.beginTransaction(); Fruit fruit=new Fruit("ziluolan","lanse",100);//顺态 Fruit fruit2=new Fruit(); FruitManager fm=new FruitManager(); session.save(fruit);//fruit在运行完此句后变为游离态 fruit2=(Fruit) session.get(Fruit.class, fruit.getFid()); //从数据库读并打印出来 System.out.println(fruit2.getFid()+":"+fruit2.getName());
session.saveOrUpdate(fruit);//如果该对象为游历态就更新数据库update //否则就是顺态,增加insert fruit2=(Fruit) session.get(Fruit.class, fruit.getFid()); //saveOrUpdate后再从数据库读并打印出来 System.out.println(fruit2.getFid()+":"+fruit2.getName()); //两个打印结果一样,saveOrUpdate方法判断如果id为null,就
上一篇:Hibernate中的Session什么时候关闭?
下一篇:struts+hibernate如何整合在一起?
|