Hibernate 马上入门(三)

、Hibernate中Query的API:
1 基本API: Query query = session.createQuery("hql"); query.setXXX(); query.list(); query.iterate(); query.uniqueResult();执行单个对象的查询

2 分页查询方法: Query query = session.createQuery("hql"); query.setFirstResult(1); qurey.setMaxResult(3); query.list(); 注意:query分页结果集result从0开始。 3 BulkUpdate 批量更新: Query query = session.createQuery("hql"); query.executeUpdate(); 例如:

Query qurey = session.createQuery ("update Employee as e set e.name = 'xiaohei' "); query.executeUpdate(); Query query = session.createQuery("delete from Employee as e where e.id = 1 "); query.executeUpdate(); BulkUpdate批量更新的特点: 1、不操作缓存 2、不涉及级联操作 3、不维护乐观锁

4 命名query (NameQuery): a在 xxx.hbm.xml中加入: <query name=""> <!CDATA[ HQL ]]> </query> b java中(DAO层)通过name获取HQl,并执行: Query query = session.getNamedQuery(); 5 SQL Query直接写sql语句(类似jdbc中的操作): SQLQuery query = session.createSQLQuery("sql");
qurey.addEntity(类.class); qurey.addEntity(“表别名”,类.class); query.list();

Hibernate锁机制
A乐观锁: 对多用户并发访问持有乐观的态度。 开发步骤: 1实体对象(entity)中加入版本属性; 2数据库表(table)中加入版本列; 3 xxx.hbm.xml中加入<version />标签。

B悲观锁: 对多用户并发访问持有悲观观的态度。 数据库中锁得实现: 1数据库中查询操作加锁:select * from t_account for update; 2数据库中插入等操作加锁insert update delete db默认加锁。 Hibernate中锁的实现: 查询操作加锁(设置锁模式): Account account =(Account) session.get(Account.class, 111,LockMode.UPGRADE); Account account1 =(Account) session.load(Account.class, 111,LockMode.UPGRADE); Query query = session.createQuery("from Account as a where a.id = 111 "); query.setLockMode("a", LockMode.UPGRADE); Account account = (Account)query.uniqueResult(); Hibernate锁模式: LockMode.UPGRADE:

如果别的用户先于我为数据库加锁,等待用户释放锁后,在加锁。 LockMode.UPGRADE_NOWAIT: 如果别的用户先于我为数据库加锁,放弃操作,并抛出异常。

你可能感兴趣的:(Hibernate,api,职场,Java框架,休闲)