Configuration的其他用法(轉貼)(2005-05-27 18:22)
Configuration的其他用法
Configuration的configure ()方法還支持帶參數的訪問方式,你可以指定hbm.xml文件的位置,而不是使用默認的classpath下面的hibernate.cfg.xml這種方式,例如:
同時Configuration還提供了一系列方法用來定制hibernate的加載配置文件的過程,讓你的應用更加靈活,常用的是以下幾種:
通過以上幾個方法,除了使用默認的hibernate.properties文件,你還可以提供多個.properties配置文件,使用Hibernate的時候根據不同的情況使用不同的配置文件,例如:
除了指定.properties文件之外,還可以指定.hbm.xml文件,下面列出幾個常用的方法:
前面我們已經講了,configure()方法默認是通過訪問hibernate.cfg.xml的<mapping>元素來加載我們提供的.hbm.xml文件,上面列出的方法可以直接指定hbm.xml文件,例如addClass()方法可以直接通過指定class來加載對應的映射文件,hibernate會將提供的class的全名(包括package)自動轉化為文件路徑,如net.sf.hibernate.examples.quickstart.Cat.class對應了net/sf/hibernate/examples/quickstart/Cat.hbm.xml,還可以用addFile方法直接指定映射文件。
例一:
例二:
例三:
5、總結
Configuration提供的這些方法的好處如下:
1) 一個應用中往往有很多.hbm.xml映射文件,開發的過程中如果只是為了測試某個或幾個Java PO(Persistence Object),我們沒有必要把所有的.hbm.xml都加載到內存,這樣可以通過addClass或者addFile直接,顯得非常靈活。
2) 學習Hibernate的過程中,往往需要通過練習來體會Hibernate提供的各種特征,而很多特征是需要修改配置文件的,如果要觀察相同的代碼在不同的特征下的表現,就需要手工改配置文件,這樣太麻煩了,而且容易出錯,我們可以提供多個配置文件,每個配置文件針對需要的特征而配置,這樣我們在調用程序的時候,把不同的配置文件作為參數傳遞進去,而程序代碼里面使用setProperties和addFile指定傳入的配置文件參數就可以了。
3) 在單元測試中,特別是在集成測試里面,整個過程是自動化的,我們不能手工干預測試過程,往往需要準備多個配置文件針對不同的測試案例,這個時候setProperties和addFile方法就顯得特別有用了,在不同的測試案例中用這些方法來指定相應的配置文件,這樣就可以做到自動化測試,保證了持續性。
Configuration的configure ()方法還支持帶參數的訪問方式,你可以指定hbm.xml文件的位置,而不是使用默認的classpath下面的hibernate.cfg.xml這種方式,例如:
Configuration cfg = new Configuration().configure("myexample.xml"); |
同時Configuration還提供了一系列方法用來定制hibernate的加載配置文件的過程,讓你的應用更加靈活,常用的是以下幾種:
addProperties(Element) addProperties(Properties) setProperties(Properties) setProperty(String, String) |
通過以上幾個方法,除了使用默認的hibernate.properties文件,你還可以提供多個.properties配置文件,使用Hibernate的時候根據不同的情況使用不同的配置文件,例如:
Properties properties = Properties.load("my.properties"); Configuration config = new Configuration().setProperties(properties).configure(); |
除了指定.properties文件之外,還可以指定.hbm.xml文件,下面列出幾個常用的方法:
addClass(Class) addFile(File) addFile(String) addURL(URL) |
前面我們已經講了,configure()方法默認是通過訪問hibernate.cfg.xml的<mapping>元素來加載我們提供的.hbm.xml文件,上面列出的方法可以直接指定hbm.xml文件,例如addClass()方法可以直接通過指定class來加載對應的映射文件,hibernate會將提供的class的全名(包括package)自動轉化為文件路徑,如net.sf.hibernate.examples.quickstart.Cat.class對應了net/sf/hibernate/examples/quickstart/Cat.hbm.xml,還可以用addFile方法直接指定映射文件。
例一:
Configuration config = new Configuration().addClass(Cat.class); |
例二:
Configuration config = new Configuration().addURL(Configuration.class.getResource ("Cat.hbm.xml")); |
例三:
Configuration config = new Configuration().addFile("Cat.hbm.xml"); |
5、總結
Configuration提供的這些方法的好處如下:
1) 一個應用中往往有很多.hbm.xml映射文件,開發的過程中如果只是為了測試某個或幾個Java PO(Persistence Object),我們沒有必要把所有的.hbm.xml都加載到內存,這樣可以通過addClass或者addFile直接,顯得非常靈活。
2) 學習Hibernate的過程中,往往需要通過練習來體會Hibernate提供的各種特征,而很多特征是需要修改配置文件的,如果要觀察相同的代碼在不同的特征下的表現,就需要手工改配置文件,這樣太麻煩了,而且容易出錯,我們可以提供多個配置文件,每個配置文件針對需要的特征而配置,這樣我們在調用程序的時候,把不同的配置文件作為參數傳遞進去,而程序代碼里面使用setProperties和addFile指定傳入的配置文件參數就可以了。
3) 在單元測試中,特別是在集成測試里面,整個過程是自動化的,我們不能手工干預測試過程,往往需要準備多個配置文件針對不同的測試案例,這個時候setProperties和addFile方法就顯得特別有用了,在不同的測試案例中用這些方法來指定相應的配置文件,這樣就可以做到自動化測試,保證了持續性。