1.Hibernate基本使用
Configuration
SessionFactory
Session
Transaction
Query
Cirteria
openSession() 事務自動處理
問題: 插入,查詢,正常的,刪除和更新(update,delete,saveOrUpdate有問題)
getCurrentSession() 事務自己處理
插入,查詢,刪除,更新全部正常
前提條件:必須配置<property name="current_session_context_class">thread</property>
Transaction t = session.beginTransaction();
t.commit();
t.rollback();
4.hibernate.cfg.xml中
<!-- hibernate.hbm2ddl.auto:
5.2.11
create-drop:不管有沒有數據庫表,先刪除後創建表,在執行操作 ,一般做測試調試用
create:不管有沒有數據庫表,先刪除後創建表,在執行操作 ,一般做測試調試用
update:沒有數據庫表就創建,如果有直接進行插入,刪除,修改,查詢更新。
validate:校驗 表必須已經存在,而且表中的字段必須按照指定策略或者要求生成。
校驗 sql語句語法是否正常(校驗方言)
-->
<property name="hibernate.hbm2ddl.auto">update</property>
5.元數據配置文件:xx.hbm.xml
5.1 實體類映射到數據庫表的類型指定: 通過type屬性指定,但是值必須是包裝類型 (包名+類名)
示例:<id name="id" type="java.lang.Integer">
<property name="name" type="java.lang.String"></property>
備註: 建議大家實體類中的基本類型寫成包裝類型。
5.2 測試主鍵生成策略:
自然主鍵:Hibernate不管理主鍵,開發者自己維護,而且必須手動插入。
代理主鍵:hibernate管理主鍵。按照指定策略生成主鍵
推薦的主鍵生成策略是uuid。
native: 本地策略。根據數據平臺不同,根據當前數據庫的特性會自動選擇生成的主鍵策略
mysql: 生成的id特點:主鍵,不爲null,自動增長 ,identity
orcale:sequence
increment:適用於int,short,long作爲主鍵。
生成方式:
1.先去查詢數據庫的最大id,
2.再最大的id值上增加1,
3.把增加後的id值作爲新的id值進行插入
控制檯:select max(id) from stu;
insert into .....
identity:只能用在支持自動增長的數據庫中。mysql支持,Oracle不支持。
uuid:字符串類型(char,varchar),長度32位,佔用空間大,跨數據庫平臺(移植性好)。
sequence:Orcale數據庫策略