首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

补给知识 Session接口及get、load、persist方法

2012-09-02 
补充知识 Session接口及get、load、persist方法package cn.itcast.hibernateimport java.util.Dateimport

补充知识 Session接口及get、load、persist方法

package cn.itcast.hibernate;import java.util.Date;import org.hibernate.HibernateException;import org.hibernate.Session;import cn.itcast.hibernate.domain.User;import org.hibernate.Transaction;public class Base {    public static void main(String[] args) {                User user = new User();        user.setBirthday(new Date());        user.setName("name");        addUser(user);                    User u = getUser(user.getId());        System.out.println("name:"+u.getName());    }         static User getUser(int id){         Session s = null ;         try{             s = HibernateUtil.getSession();             Class userClass = User.class;             //User user = (User)s.get(User.class,id);             User user1 = (User)s.load(User.class,id);             System.out.println("name:"+user1.getName());             System.out.println(user1.getClass().getName());             return user1 ;         }finally {             if(s !=null)                 s.close();         }     }            static void addUser(User user){            Session s = null ;            Transaction tx = null ;            try{                s = HibernateUtil.getSession();                tx = s.beginTransaction();                s.save(user);                tx.commit();            }catch(HibernateException e){                if(tx !=null)                    tx.rollback();                throw e ;            }finally {                if(s !=null)                    s.close();            }        }        }

?

?

总结save与persist方法的区别:在没有开启事务的时候
save方法会把数据插入到数据,之后又回滚,删掉数据。而persist方法根本就不执行插入。

总结Session的几个主要方法:
1 save,persist保存数据,persist在事务外不会产生insert语句,persist方法在没开启事务根本不会产生insert?语句,sava方法会产生sql语句,但是如果没有开启事务,会回滚事务,不会插入数据
2.delete,删除对象;
3.update,更新对象,如果数据库中没有记录,会出现异常;
4.get,根据id查,会立刻访问数据库。
5.load,根据id查(返回的是代理,不会立即访问数据库)
6.saveOrUpdate,merge(根据id和version的值来确定是save或update),调用merge你的对象还是托管的。
7.lock()把对象变成持久对象,但不会同步对象的状态

?

热点排行