hibernate的ssession的方法的讲解

来源:互联网 发布:浙大中控dcs编程语言 编辑:程序博客网 时间:2024/04/27 13:37

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();


 }

}

原创粉丝点击