Nhibernate(英文冬眠的意思) 經常使用方法html |
Contains java Evictweb Clearsql |
||||||||||||||||
在 NHibernate 中一切必須是 Virtual 的嗎? | http://www.cnblogs.com/aaa6818162/p/4675279.html數據庫 http://blog.zhaojie.me/2009/09/my-view-of-nhibernate-2-virtually-everything.html緩存 所以,若是是你的話,在寫Java代碼的時候,是願意使用getXxx()這樣的方法,仍是直接訪問類中的私有字段?所以我認爲,是Java語言的特性,致使Java開發人員傾向於直接訪問類中的私有字段,從而致使Hibernate須要避免未加載的私有字段,進一步致使Hibernate的代理類會去覆蓋全部的公開方法(只有方法,由於Java語言沒有「屬性」)——最終,因爲NHibernate在「統一大業」上的策略,使得咱們.NET開發人員也必須把全部成員標記爲virtual,不管是方法仍是屬性。安全
|
||||||||||||||||
Nhibernate API |
http://www.cnblogs.com/aaa6818162/p/4639308.htmlsession
下圖描述了NHibernate的API在分層架構中的做用,下面將進行詳細說明。多線程 NHibernate的接口大體分爲四類:架構 1. 被應用程序調用進行基本數據操做(增、刪、改、查)的接口。這些接口是應用程序的業務邏輯層和控制層與NHibernate的主要交互點。ISession, ITransaction, IQuery和ICriteria屬於此類。 2. 被應用程序用來配置NHibernate的接口。Configuration就屬此類。 3. 回調接口。應用程序用回調接口來響應NHibernate中觸發的事件。這類接口包括Interceptor, ILifecycle和IValidatable等。 4. 用於擴展NHibernate的強大映射功能的接口。這類接口一般被應用程序的基礎架構來實現。IUserType, ICompositeUserType, 和IIdentifierGenerator屬於此類。 |
||||||||||||||||
NHibernate Interceptor機制 | nhibernate是如何自動生成sql語句的 NHibernate 查看生成的sql語句:
http://www.cnblogs.com/jiezhi/articles/87414.html http://www.cnblogs.com/JeffreyZhao/archive/2009/10/13/my-view-of-nhibernate-4-interceptor.html |
||||||||||||||||
NHibernate中Session是線程不安全(多線程中Session不能被共享) | http://www.cnblogs.com/aaa6818162/p/4631412.html | ||||||||||||||||
Nhibernate 設置派生屬性 | http://www.cnblogs.com/cnjava/archive/2012/07/21/2602294.html
|
||||||||||||||||
關係數據庫中的主鍵可分爲 天然主鍵(具備業務含義)和代理主鍵(不具備業務含義) | |||||||||||||||||
Nhibernate鎖 數據併發 版本號 | http://www.cnblogs.com/lyj/archive/2008/10/21/1316269.html
|
||||||||||||||||
Nhibernate 一級緩存 |
|||||||||||||||||
NHibernate的Session管理策略 | http://www.cnblogs.com/13yan/archive/2013/05/17/3083552.html 1)在Web應用程序中 一個請求中第一次會打開一個Session並保存再web上下文,之後就再也不新打開了 2)在WinForm或單元測試中,使用另外一種策略,每一個線程用一個Session。 修改hibernate.cfg.xml配置文件,加入一個屬性<property name="current_session_context_class">web</property>,修改這個屬性就能夠修改Session策略。 sessionFactory = new Configuration().Configure() |
||||||||||||||||
NHibernate 怎麼樣去爲咱們的實體類設置一個通用的基類 | http://www.cnblogs.com/aaa6818162/p/4631443.html | ||||||||||||||||
hibernate session的flushMode的區別 |
http://blog.csdn.net/looyo/article/details/6309136
http://stackoverflow.com/questions/3295169/nhibernate-flushmode-auto-not-flushing-before-find
session.flushmode=auto
/// <summary>
Cardtype entity2 = session
entity.Cardtypename = "66";
|
||||||||||||||||
NHibernate中Get和Load的區別 | 1.get()採用當即加載方式,而load()採用延遲加載; get()方法執行的時候,會當即向數據庫發出查詢語句, 而load()方法返回的是一個代理(此代理中只有一個id屬性),只有等真正使用該對象屬性的時候,纔會發出sql語句 2.若是數據庫中沒有對應的記錄,get()方法返回的是null.而load()方法出現異常ObjectNotFoundException 若是加載一個對象的目的是威力訪問它的屬性,能夠用get方法 若是加載一個對象的目的是爲了刪除它,或者是爲了創建於別的對象的關聯,能夠用load |
||||||||||||||||
域對象在持久化層的三種狀態 |
臨時狀態(Transient):當new一個實體對象後,這個對象處於臨時狀態,即這個對象只是一個保存臨時數據的內存 區域,若是沒有變量引用這個對象,則會被jre垃圾回收機制回收。這個對象所保存的數據 與數據庫沒有任何關係,除非經過Session的save或者SaveOrUpdate把臨時對象與數據庫 關聯,並把數據插入或者更新到數據庫,這個對象才轉換爲持久對象。
持久狀態(Persistent): 持久化對象的實例在數據庫中有對應的記錄,並擁有一個持久化表示(ID)。對持久化對 象進行delete操做後,數據庫中對應的記錄將被刪除,那麼持久化對象與數據庫記錄再也不 存在對應關係,持久化對象變成臨時狀態。持久化對象被修改變動後,不會立刻同步到數 據庫,直到數據庫事務提交。在同步以前,持久化對象是髒的(Dirty)。
遊離狀態(Detached):當Session進行了Close、Clear或者evict後,持久化對象雖然擁有持久化標識符和與數據 庫對應記錄一致的值,可是由於會話已經消失,對象不在持久化管理以內,因此處於遊離 狀態(也叫:脫管狀態)。遊離狀態的對象與臨時狀態對象是十分類似的,只是它還含有 持久化標識。
總結:咱們如今系統默認取出來的對象一直在持久狀態 由於session綁定的web上線文 只有請求結束才進行session的close protected void Application_BeginRequest(object sender, EventArgs e) protected void Application_EndRequest(object sender, EventArgs e) |