Hibernate框架搭建

Hibernate框架的搭建

1. 添加jar

hibernate解壓後將lib/required文件夾下的jar包都添加到WebContent/lib

2. 添加核心配置文件

 src/hibernate.cfg.xml  數據庫連接相關配置【c3p0】運行時常量【show_sql  format_sql】和註冊映射元文件【xml和註解】

 

 

運行時常量hibernate.hbm2ddl.auto 可以取值有4種:

1create:每次加載hibernate時都會刪除上一次的生成的表,然後根據你的model類再重新來生成新表,哪怕兩次沒有任何改變也要這樣執行,這就是導致數據庫表數據丟失的一個重要原因。可以理解爲drop-create

2create-drop :每次加載hibernate時根據model類生成表,但是sessionFactory一關閉,表就自動刪除。用於測試階段

3update:最常用的屬性,第一次加載hibernate時根據model類會自動建立起表的結構(前提是先建立好數據庫),以後加載hibernate時根據 model類自動更新表結構,即使表結構改變了但表中的行仍然存在不會刪除以前的行。要注意的是當部署到服務器後,表結構是不會被馬上建立起來的,是要等 應用第一次運行起來後纔會。在開發階段中配置

4validate :每次加載hibernate時,驗證創建數據庫表結構,如果表結構和對應的映射元文件不一致則會報出下面的異常

查看配置文件,可以看到唯一性約束

 

解決方法:用戶名稱必須唯一

 

 

3. 定義實體類和對應的映射元文件

 
映射元文件的定義方式有兩種:採用XML和註解開發

 

 

在覈心配置文件中註冊映射元文件

 

在這裏採用xml開發

4、編程調用

 

這裏使用JUnit單元測試進行測試

 

新增數據

public class TestAPI {
	public static void main(String[] args) {
		UserBean user = new UserBean();
		user.setUsername("xiaohui");
		user.setPassword("666666");
		
		StandardServiceRegistry ssr = new StandardServiceRegistryBuilder()
				.configure().build();
		SessionFactory fac = new MetadataSources(ssr).buildMetadata()
				.buildSessionFactory();
		Session session = fac.openSession();
		Transaction transaction = session.beginTransaction();
		session.persist(user);
		transaction.commit();
		session.close();
	}
	@Test
	public void testSave() {
		UserBean user = new UserBean();
		user.setUsername("xiaohui");
		user.setPassword("666666");
		
		StandardServiceRegistry ssr = new StandardServiceRegistryBuilder()
				.configure().build();
		SessionFactory fac = new MetadataSources(ssr).buildMetadata()
				.buildSessionFactory();
		Session session = fac.openSession();
		Transaction transaction = session.beginTransaction();
		session.persist(user);
        //session.save(user);
		transaction.commit();
		session.close();
	}

動態插入dynamic-insert="true" 和動態修改 dynamic-update="true"

刪除數據

 

按照id加載數據

5常見的異常和對應的處理方法

 

解決方法:檢查當前操作的實體類對象是否符合映射元文件中的約束說明

 

  

解決方法:檢查映射元文件中看哪個屬性在實體類中沒有進行定義


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章