您的位置:首页 > 编程语言 > Java开发

hibernate Session的几个简单方法

2016-01-21 20:00 417 查看
News news1=new News("DD", "dd");
session.persist(news1);

flush()方法
    //flush()方法:使数据库中的记录和Session中的记录保持一致,为了保持一致可能会发送对应的sql语句

    //Transaction.comit()方法中  会先执行Session.flush(),再提交事务

    //**注意: 在未提交事务或者未使用flush()方法时,也有可能会进行flush()方法

    //1)执行HQL或者QBC查询时,会先进行flush()方法。

save()方法

    //save()方法使一个临时对象转换为持久化对象,执行insert操作

    //为对象分配ID

    //在flush缓存时发出一天insert语句

    //持久化对象的id不可修改.使用映射文件指定的方法生成ID;

Persit()  同save()方法,执行insert操作

     当id不为零时,save会以一个新的id保存到数据库,persit()则会抛出异常

<span style="font-size:18px;"> News news=new news(1,"title","test");
session.save(news);</span>
get()     load()

     Get和Load方法  持久化对象转为临时对象(就是从数据库中获得对象)

     执行Get方法会立即执行查询操作加载对象

     Load方法不会立即执行查询操作,返回一个代理对象。当使用时再进行查询。

     若数据表中没有对应数据,get返回一个空的对象,load抛出异常

     Load方法,在初始化代理对象之前就关闭Session

     会抛出异常LazyInitialazytionException

@Test
public void testGet(){
News news=(News)session.get(News.class, 5);
System.out.println(news);
}
@Test
public void testLoad(){
News news=(News)session.load(News.class, 5);
System.out.println(news.getClass().getName());
}update()
     若更新对象在session中,不需要显示的调用update(), commit()方法会自动update;

     不在session中时 处于游离状态,需要调用update()方法;

     调用update时无论更新的对象是否与数据表里的一致都会执行update操作

     ----如何避免   在.hbm.xml.配置文件中的 class节点设置select-before-update=true

     当update()方法关联一个游离对象时,如果session中已经存在一个相同ID的对象,抛出异常

     public void testUpdate(){
News news=(News)session.get(News.class, 5);
news.setAuthor("123");
session.clear();
System.out.println("123");
session.update(news);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  hibernate java Session