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: 如果別的用戶先於我爲數據庫加鎖,放棄操作,並拋出異常。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章