hibernate小知识点总结--持续更新

1. hibernate中只更新部分字段

hibernate中如果直接使用update 或者 saveOrUpdate方法,会把表中所有的字段更新一遍。

但是修改时,form表单只提交需要更新的字段.

解决方法:

在不需要更新的字段(如创建时间,id)上,加上updae="false"

示例:

注解方式

@Column(name="created_time",updatable=false)
	public Date getCreateTime() {
		return createTime;
	}
或者

xml配置:

<property name="createtTime" column="created_time" update="false"></property>  

2. hibernate的悲观锁和乐观锁 

hibernate的乐观锁:在表中增加一个version字段,当提交数据时,从表中获取version的值,跟现在的versioon进行对比.如果现有的versioon小于表中的version,则说明有人提前进行了提交,则取消此次操作。否则,正常操作。

hibernate的悲观锁:通过数据库的机制来进行加锁

示例:select * from account where name = "12345" for update,通过for update子句,这条SQL锁定了account表中所有符合检索条件的记录。本次事务提交之前(事务提交时会释放事务过程中的锁),外界无法修改这些记录。

Hibernate 的悲观锁,也是基于数据库的锁机制实现。

下面的代码实现了对查询记录的加锁:

String hqlStr = "from TUser as user where user.name='123456'";

Query query = session.createQuery(hqlStr);

query.setLockMode("user",LockMode.UPDATE);//加锁

List userList = query.list();

 

3. load与get的区别

http://www.cnblogs.com/xiaoluo501395377/p/3371776.html


--未完待续----

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值