🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 3.1\. 可编程的配置方式 一个`org.hibernate.cfg.Configuration`实例代表了一个应用程序中Java类型 到SQL数据库映射的完整集合. `Configuration`被用来构建一个(不可变的 (immutable))`SessionFactory`. 映射定义则由不同的XML映射定义文件编译而来. 你可以直接实例化`Configuration`来获取一个实例,并为它指定XML映射定义 文件. 如果映射定 义文件在类路径(classpath)中, 请使用`addResource()`: ``` Configuration cfg = new Configuration() .addResource("Item.hbm.xml") .addResource("Bid.hbm.xml"); ``` 一个替代方法(有时是更好的选择)是,指定被映射的类,让Hibernate帮你寻找映射定义文件: ``` Configuration cfg = new Configuration() .addClass(org.hibernate.auction.Item.class) .addClass(org.hibernate.auction.Bid.class); ``` Hibernate将会在类路径(classpath)中寻找名字为 `/org/hibernate/auction/Item.hbm.xml`和 `/org/hibernate/auction/Bid.hbm.xml`映射定义文件. 这种方式消除了任何对文件名的硬编码(hardcoded). `Configuration`也允许你指定配置属性: ``` Configuration cfg = new Configuration() .addClass(org.hibernate.auction.Item.class) .addClass(org.hibernate.auction.Bid.class) .setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLInnoDBDialect") .setProperty("hibernate.connection.datasource", "java:comp/env/jdbc/test") .setProperty("hibernate.order_updates", "true"); ``` 当然这不是唯一的传递Hibernate配置属性的方式, 其他可选方式还包括: 1. 传一个`java.util.Properties`实例给 `Configuration.setProperties()`. 2. 将`hibernate.properties`放置在类路径(classpath)的根目录下 (root directory). 3. 通过`java -Dproperty=value`来设置系统 (`System`)属性. 4. 在`hibernate.cfg.xml`中加入元素 `<property>` (稍后讨论). 如果想尽快体验Hibernate, `hibernate.properties`是最简单的方式. `Configuration`实例被设计成启动期间(startup-time)对象, 一旦`SessionFactory`创建完成它就被丢弃了.