hibernate Session的几个简单方法

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值