import com.hibernate.util.HibernateSessionFactory;
import com.pojos.Dep;
public class SessionFlush {
/**
* @param args
* 在同一个事务,hibernate会先select/save/update/delete这样顺序
*/
public static void main(String[] args) {
Session session = HibernateSessionFactory.getSession();
Transaction tr = session.beginTransaction();
try {
Dep dep = (Dep) session.get(Dep.class, 11);
dep.setDepName("aaa1");
Dep dd = new Dep();
dd.setDepName("b");
session.update(dep);
session.flush(); //刷新缓存,把缓存中sql语句发送到数据库
session.save(dd);
tr.commit();
} catch (Exception e) {
// TODO: handle exception
tr.rollback();
e.printStackTrace();
}
}
}
import org.hibernate.LockMode;
import org.hibernate.Session;
import com.hibernate.util.HibernateSessionFactory;
import com.pojos.Dep;
public class SessionLock {
/**
* @param args
*/
public static void main(String[] args) {
Session session= HibernateSessionFactory.getSession();
Dep dep1 = (Dep) session.get(Dep.class,1);
session.clear(); //执行完,dep1变成游离状态
session.lock(dep1, LockMode.NONE);//把游离状态转为持久(在缓存中有)
Dep dep2 = (Dep) session.get(Dep.class,1);
}
}
import org.hibernate.Session;
import org.hibernate.Transaction;
import com.hibernate.util.HibernateSessionFactory;
import com.pojos.Dep;
public class SessionSessionOrUpdate {
/**
* 如果记录在数据库中存在,就做:update
* 不存在,修改
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Session session = HibernateSessionFactory.getSession();
Dep d = new Dep();
//d.setDepId(1);
d.setDepName("聊天部2");
Transaction tr = session.beginTransaction();
session.saveOrUpdate(d);
tr.commit();
}
}
public class SessionUpdate {
/**
* @param args
*/
public static void main(String[] args) {
Session session = HibernateSessionFactory.getSession();
//如果有这句就会报错,查找出来会放在缓存,修改也会放在缓存,这样缓存中有两个一样的1号
Dep dep =(Dep) session.get(Dep.class,1);
Dep d = new Dep();
d.setDepId(1);
d.setDepName("聊天部2");
Transaction tr = session.beginTransaction();
session.update(d);
tr.commit();
}
}
import org.hibernate.Session;
import org.hibernate.Transaction;
import com.hibernate.util.HibernateSessionFactory;
import com.pojos.Dep;
public class SessionMerge {
/**合并
* 有就合并,没有添加(不放入缓存)
* 1.没有主键时,做save操作
* 有主键时,就到缓存中查找出此对象,缓存中没有,就到数据库查找此对象
* 2.
* 如果存在,把当前对象值d,给dep,如果完全一样,就不做操作,不一样做update操作
*
* 3.如果不存在,就save
*/
public static void main(String[] args) {
Session session = HibernateSessionFactory.getSession();
//查出来,放在缓存
Dep dep =(Dep) session.get(Dep.class,1);
Dep d = new Dep();
d.setDepId(-1);
d.setDepName("聊天部3");
Transaction tr = session.beginTransaction();
session.merge(d);
tr.commit();
}
}
import org.hibernate.Session;
import org.hibernate.Transaction;
import com.hibernate.util.HibernateSessionFactory;
import com.pojos.Dep;
public class SessionSessionOrUpdate {
/**
* 如果记录在数据库中存在,就做:update
* 不存在,修改
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Session session = HibernateSessionFactory.getSession();
Dep d = new Dep();
//d.setDepId(1);
d.setDepName("聊天部2");
Transaction tr = session.beginTransaction();
session.saveOrUpdate(d);
tr.commit();
}
}