Hibernate
會使對數據據庫的操作,變成一個面向對象的操作(如現在有一個User對象,現在只有調用Hibernate 直接插入一個對象到數據庫中去,但是實際上是Hibernate自動生成了Sql 語句去操作數據庫),是一個應用於Dao層的框架,所以我們要告訴Hibernate 我們的對象與數據庫中表的射關係(ORM)ORM Object Relationnal Mapping 對象關係映射
transaction
當事務提交了會把當前的線程的session 關閉,當再次調用getCurrentSession()時返回的session是一個新對象
- hibernate.cfg.xml 配置文件
<property name="hbm2ddl.auto ">update</property>
update :如果數據庫不存在表結構,就自動創建表結構,如是存在表結構,並且表結構與實體一致,那麼不修改,如果表結構不一致,那麼會修改表結構,會保留原有列。
create: 無論是否數據庫中存在表結構,每次都會重新創建表結構,(數據會丟失)
create-drop:無論數據庫存在表結構,每次啓動hibernate 都會重新創建表結構,每執行完都會將表刪除
validate:不會創建表結構,也不會自動維護表結構。只負責校驗表結構,如果表結構不一致,將會拋出異常
- orm 配置文件
<generator class="" ></generaotr>
generator : 主鍵生成策略
1、increment 數據庫自己生成主鍵,先從數據庫中查詢ID 最大值然後加一,
2、identity 依賴於數據的主鍵自增功能
3、sequence 依賴於數據中的序列功能(oracle)
4、hilo(這個永遠用不到)hibernate 自己實現序列的算法,自己生成主鍵(hilo算法)
5、native 自行根據數據庫判斷,三選一,identity|sequence|hilo
6、uuid 生成三十二位的不重複隨機字符串作爲主鍵
7、assigned 自己指定主鍵的值,表的主鍵是自然主鍵時,使用assigned,(自然主鍵:當某一個字段滿足、不爲空、不重複、唯一時,就可以把這個字段設爲自然主鍵)
property 節點中 type 屬性
表達該屬性的類型可以用三種方式指定屬性 1、java 類型 java.lang.String 2、數據庫類型指定 varchar 3、Hibernate類型指定 string