-
(1)創建Hibernate的配置文件(hibernate.cfg.xml) (2)創建持久化類 (3)創建對象-關系映射文件 (4)通過HIbernate API編寫訪問數據庫的代碼 導入hibernate必須的jar包:hibernate-release-4.2.4.Final\lib\required; 導入Mysql的JDBCjar包:mysql-connecttor-java-5.1.7-bin.jar; 導入Junit4的jar包:junit-4.10.jar查看全部
-
總結: 0.Junit類的執行順序是@Before(初始化方法)|@Test(測試方法)|@After(關閉資源) 任何想要測試的方法都寫在@Test中,注意!區分大小寫的,首字母必須大寫 一般@After都是destory()方法,用于關閉數據及一些善后操作。 1.剛開始插入數據,需要將cfg.xml文件里面的hbm2ddl.auto改為create,而不影響表結構的則用update.【create會覆蓋原來的表而upadte只是更新表】 2.關于testSaveStudents里面的幾個問題: 2.1當hbm.xml文件中的<generator class="native"></generator>為native時,不管你給setId設置任何值都不起作用,因為他是根據你本地的數據庫來決定的,如果是mysql就是increment自動增長賦值(從1開始),若是oracle則是采用序列賦值。 2.2自動提交事務的寫法 session.doWork(new Work(){ @Override public void execute() throws SQLException{ Connetcion.setAutoCommit(true);//自動提交事務 } }); 【注】使用了自動提交事務,就不需要開啟事務[transcation = seesion.beginTransaction();]以及提交事務[transaction.commit();] 3.如果不是自動提交事務,需要開啟事務以及提交。因為沒有提交的話,他只是保存到Session對象中而沒有提交到數據庫中,所以數據庫中的信息是沒有變化的,所以刪、改都需要開啟事務才行??! 【如果只進行保存操作,自動提交事務即可。若還需要其他的操作,還是需要在外面開啟事務對象】 4.get和load的區別 4.1 get是馬上提交并返回信息,打不打印s都會返回信息 而load需要打印s才能返回信息?!咀ⅲ喝绻阈枰猻的完整信息,需要在 stuents類中去重寫toString()方法即可】 4.2 當沒有數據返回時,get返回null,load會報錯。查看全部
-
get與load區別2查看全部
-
get和load方法的區別1查看全部
-
關于時間與日歷類型的映射查看全部
-
基本類型在XXX.hbm.xml中的type的寫法查看全部
-
單一主鍵:指表中由某一列來充當主鍵。 assigned:由java應用程序負責生成(手工賦值) native:由底層數據庫自動生成標識符,跟數據庫密切相關。如果是mysql就是increment,如果是oracle就是sequence[序列]... assigned是指主鍵是由人工分配的,而native則指主鍵值由庫自動給出。查看全部
-
openSession與getCurrentSession的區別: 1.getCurrentSession在事務提交或者回滾之后會自動關閉,而openSession需要你手動關閉。如果使用openSession而沒有手動關閉,多次之后會導致連接池溢出。 2.openSession每次創建新的session對象,getCurrentSession使用現有的session對象查看全部
-
2種方法獲得session: 1)session = sessionFactory.openSession(); 2)session = sessionFactory.getCurrentSession(); ---------------------------注:-------------------------------------- 如果是使用getCurrentSession需要在hibernate.cfg.xml文件中進行配置: 1)如果是本地事務(idbc事務) <propertyname="hibernate.current_session_context_class">thread</property> 2)如果是全局事務(jta事務) <propertyname="hibernate.current_session_context_class">jta</property> ----------------------------------------------------------------------- 一篇關于這方面的博客;(值得研究?。。?http://aubergine-kang.iteye.com/blog/1306054http://aubergine-kang.iteye.com/blog/1306054 結論: (1)openSession()得到得session可以在顯式開啟事務的環境中使用,也可以在不開啟事務的環境中使用(進行查詢);getCurrentSession()必須在顯式開啟事務環境中使用。 (2)openSession()是否顯式開啟事務決定了session得到連接的時機不同。不開啟事務的情況下數據庫連接是在創建Statement時獲得。因此在配置二級緩存的情況get()對象時,如果二級緩存中有需要的對象時,不會占用數據庫連接。相反開啟事務的情況下,無論二級緩存中是否有對象,多會占用數據庫連接。 (3)getCurrentSession()總會占用數據庫連接。查看全部
-
1.hibernate對數據的操作都是封裝在事務當中,并且默認是非自動提交的方式。若果保存對象時,不開啟事務,并且手工提交事務,對象并不會真正保存在數據庫中。如果想hibernate像jdbc那樣自動提交事務,必須調用session對象的doWork()方法,獲得jdbc的connection后,設置其為自動提交事務模式。查看全部
-
hibernate不建議直接使用jdbc的connection操作數據庫,而是通過使用session操作數據庫。 session與connection是多對一關系,每個session都有一個與之對應的connetion,一個connection不同時刻可以供多個session使用。查看全部
-
hibernate執行流程查看全部
-
hibernate.cfg.xml常用配置。查看全部
-
Junit測試調用順序 1.先執行@Before:初始化方法 2.再執行@Test:測試方法 3.最后執行@After:釋放資源查看全部
-
1.創建hibernate Configuration File【cfg.xml】文件 2.創建持久化類 2.1必須是個公有的類 2.2提供公有的不帶參數的默認的構造方法 2.3屬性私有 2.4屬性setter/getter封裝 3.創建Hibernate XML Mapping file【hbm.xml】文件 4.在cfg.xml文件中配置<mapping resource="Students.hbm.xml"></mapping>查看全部
舉報
0/150
提交
取消