這篇文章主要講解了“Hibernate映射怎么實現(xiàn)”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Hibernate映射怎么實現(xiàn)”吧!
成都創(chuàng)新互聯(lián)公司從2013年創(chuàng)立,先為霍林郭勒等服務(wù)建站,霍林郭勒等地企業(yè),進行企業(yè)商務(wù)咨詢服務(wù)。為霍林郭勒企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
我曾對Hibernate有很深刻的印象,但我遇到的一個問題是,在使用Hibernate進行單元測試的數(shù)據(jù)映射時,設(shè)法插入一個間接層。該附加層非常脆弱,編寫起來感到非常困難。實際部署版本簡單地通過了特定于Hibernate的實現(xiàn)。更壞的情況是,模擬版本比真正的“產(chǎn)品級”版本更復(fù)雜,只因為模擬版本里沒有基本對象存儲器和帶有Hibernate映射。
我也使用很多復(fù)雜的Hibernate查詢,想要對應(yīng)用程序的重要部分進行單元測試。然而,對活動的數(shù)據(jù)庫進行測試不是好主意,因為這幾乎總是產(chǎn)生維護問題。另外,由于測試***互相獨立,在測試上下文數(shù)據(jù)中使用相同的主鍵意味著必須在每次測試前創(chuàng)建代碼來清理數(shù)據(jù)庫,當(dāng)涉及到大量關(guān)系時就成為一個實際問題。
通過使用HSQLDB和Hibernate強大的模式生成工具,能夠?qū)?yīng)用程序映射層進行單元測試,并在對象查詢中找到不計其數(shù)的bug,這在以前手工測試時是做不到的。利用下面的技術(shù)概述,可以在開發(fā)過程中對整個應(yīng)用程序進行測試,并且在測試有效區(qū)域內(nèi)沒有損害。
設(shè)置HSQLDB
以前使用HSQLDB 1.7.3.0 版。為了使用數(shù)據(jù)庫的內(nèi)存版本,需要激活org.hsqldb.jdbcDriver的靜態(tài)加載程序。當(dāng)獲得JDBC連接時,就可以使用JDBC url例如jdbc:hspldb:mem:yourdb,這里’yourdb’就是想要使用的內(nèi)存數(shù)據(jù)庫的名稱。
因為使用Hibernate (3.0 beta 4),所以我?guī)缀鯚o需接觸實際活動的JDBC對象。相反,我可以讓Hibernate完成很多繁重的任務(wù),包括從Hibernate映射文件中自動創(chuàng)建數(shù)據(jù)庫模式。因為Hibernate創(chuàng)建自身專有的連接池,所以它會基于TestSchema類中的配置代碼自動加載HSQLDB JDBC驅(qū)動程序。下面就是該類的靜態(tài)的初始化程序。
public class TestSchema {
static {
Configuration config = new Configuration().
setProperty("hibernate.dialect", "org.hibernate.dialect.HSQLDialect").
setProperty("hibernate.connection.driver_class", "org.hsqldb.jdbcDriver").
setProperty("hibernate.connection.url", "jdbc:hsqldb:mem:baseball").
setProperty("hibernate.connection.username", "sa").
setProperty("hibernate.connection.password", "").
setProperty("hibernate.connection.pool_size", "1").
setProperty("hibernate.connection.autocommit", "true").
setProperty("hibernate.cache.provider_class", "
org.hibernate.cache.HashtableCacheProvider").setProperty("hibernate.hbm2ddl.auto", "create-drop").
setProperty("hibernate.show_sql", "true").
addClass(Player.class).
addClass(BattingStint.class).
addClass(FieldingStint.class).
addClass(PitchingStint.class);
HibernateUtil.setSessionFactory(config.buildSessionFactory());
}
感謝各位的閱讀,以上就是“Hibernate映射怎么實現(xiàn)”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對Hibernate映射怎么實現(xiàn)這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!