Hibernate 學習筆記

 Hibernate冬眠 ORM框架(OR mapping )分別是對象 關係 映射mysql

對象 – 持久化 – 數據庫 (關係數據庫、對象數據庫)sql

對象 – 關係數據庫

Hibernate的優勢:(1)使用HIBERNATE.應用層就能夠專一於業務邏輯的實現, 只需知道怎麼使用HIBERNATE所提供的接口,緩存

        而不知道具體實現的細節.                  session

   (2)封裝了JDBC以後,能夠鏈接數據庫時減小代碼的冗餘.oracle

   (3)直接用映射文件,能夠方便的實現與不一樣數據庫的鏈接.app

Hibernate的冬眠是指將對象的生命週期更長一點,也就是對象的持久化負載均衡

1講到將對象保存到文件中用到的類是ObjectOutputStream可是這種不方便,所以將此對象存儲到數據庫中,那就方便多了,hibernate就是講對象轉化爲關係,它將對象的屬性存到數據庫中,有了對象型數據庫就不會有hibernate了;框架

Insert into(User user)eclipse

Ps.setString(1,user.getUsername)這種寫法是純手工的比較比較慢,

演示的是以Java項目爲例的

 hibernate的環境搭建,將hibernate包下的hibernate3.jarlib包所有拷貝到項目中。Lib中的jar文件都要解壓出來放進工程項目下;接着導入包和數據庫驅動;hibernate中的配置文件是hibernate.cfg.xml;放到項目的src文件夾下;在hibernate.cfg.xml裏面有個session工廠;

工廠有好幾個有DEO工廠產生DEO,還有個Connection工廠用來生產connection的;

 Session工廠是用來產生session的,但不是jsp中的sessionhibernatesession只封裝了connection就是用來給客戶提供數據庫鏈接的;則將數據庫的信息配置到

  <session-factory >

<propetry name=」 hibernate.connection.driver_class」>com.mysql.jdbc.Driver</property>

<propetry name=」 hibernate.connection.url」>com.mysql.jdbc.Driver</property>

<propetry name=」 hibernate.connection.username」>hibernate </property>

<propetry name=」 hibernate.connection.password」>paswssword </property>

<propetry name=」 hibernate.dialect」>com.mysql.jdbc.Driver</property>

 

</session-factory>

                              hibernate/properties/etc/ hibernate.properties

中;配置的時候能夠參考包裏的hibernate/properties/etc/hibernate.cfg.xml文件有數據庫的相關配置信息;經過這樣的配置後就是hibernate的數據庫鏈接可是每次鏈接數據庫的時候都要new一下效率就不行了;因此最好配置好點的數據源如c3p0

hibernate.dialect org.hibernate.dialect.MySQLDialect

dialecthibernate中有方言這個概念,它能夠自動的將配置信息轉換成底層的sql語句;好比分頁,需好幾條sql語句;自動實現數據庫不一樣帶來的技術;(好比mysqlsqlserver中的主鍵有自動遞增,但oracle中就沒有這時候就要咱們去配置觸發器來實現此功能,而是序列方式;因此hibernate能夠自動的去檢測是那個數據庫;用myeclipse創建數據庫的方法

Hibernate 學習筆記 - xihuawuyu - suiyuewusheng

  點擊圖中的DB Browser,新鏈接mysql數據;

4 C3p0配置這是個比較經典的數據源配置;

C3P0 Connection Pool###

###########################

 

#hibernate.c3p0.max_size 2   最多連接是數據庫

#hibernate.c3p0.min_size 2    最少鏈接的

#hibernate.c3p0.timeout 5000  鏈接超時

#hibernate.c3p0.max_statements 100      數據庫中的緩存

#hibernate.c3p0.idle_test_period 3000     鏈接滿了後多少時間在鏈接;

#hibernate.c3p0.acquire_increment 2     從新鏈接的數量

#hibernate.c3p0.validate false         驗證鏈接是否可用;可用於壓力測試中;配置方法:

<propetry name=」 hibernate.c3p0.max_size」>50 </property>

  是否打印語句是用來檢測的時候能夠在控制檯看到sql語句;

<propetry name=」 hibernate.show_sql」>true </property>

下一步是創建關係映射,

Id(主鍵)配置持久化標識;其它屬性就用property來配置;

 

<generator class="generatorClass"/>表示主鍵生成方式mysql中是indentify

 

在這有一個和indentifymysql 主鍵生成方式)類似的關鍵字那就是increment它在集羣中不易使用

   Indentifysquence區別indentify能夠在sqlServermysql中逐漸自動遞增identity由於只能在一個table中用一次,可是不能用在oracle中;squence用在Oraclesequence能夠在一張表中的多個字段多被用到db2 支持sequence,identity的兩種用法

      

集羣也就是負載均衡的意思,可是increment它運行的時候必須在同一個虛擬機,因此它在集羣中不能使用的

6註冊映射關係:

   <mapping resource=」/kk.xml」/>

7測試用到的測試工具是Junit工具:測試時創建一個類必須繼承testcase類;用到了讀取hibernate的配置文件的方法是configuration();Configuration cfg=new Configuration();

建立session-factory的方法

SeeionFactory sf = cfg.buildSessionFactory();

相關文章
相關標籤/搜索