Hibernate有很多值得学习的地方,这里我们主要介绍Hibernate XML配置文件,包括介绍Hibernate Configuation类等方面。
Hibernate XML配置文件
如果你觉得可以在容器之外使用现有的Hibernate对象的话,那你首先要做的事就是得自己手工管理所有的配置项,在本文余下部分我所采用的方法是使用一个基于命令行的JAVA程序。既然你已经配置了Hibernate XML配置文件,你应该知道需要提供的参数,例如JNDI DataSource名,实体映射文件,还有其他一些处理SQL日志的属性。如果你想使用命令行程序的话,你就得解决如何解析XML文件和把它添加到配置项中的这些问题。虽然解析XML文件也不难,但这本身并不是我们的重点。因此,我建议使用propetries文件,properties文件比较直观而且容易加载并从中读取数据。下面是配置Hibernate所需要的最小属性集(不包括任何实体映射)。
- hibernate.dialect=net.sf.hibernate.dialect.PostgreSQLDialect
- hibernate.connection.driver_class=org.postgresql.Driver
- hibernate.connection.url=jdbc:postgresql://devserver/devdb
- hibernate.connection.username=dbuser
- hibernate.connection.password=dbpassword
- hibernate.query.substitutions yes 'Y'
正如你所看到的,上面的属性值指定了数据库方言,JDBC驱动,数据库url,用户名,用户密码,以及是否使用查找替换。只要定义以上几项数值并保存在文件Hibernate.properties里(要放置在你的类路径里面哦),就能很轻松的加载,填充到Hibernate Configuation类里面。
- Properties props = new Properties();
- try {
- props.load(props.getClass().getResourceAsStream("hibernate.properties"));
- }
- catch(Exception e){
- System.out.println("Error loading hibernate properties.");
- e.printStackTrace();
- System.exit(0);
- }
- String driver = props.getProperty("hibernate.connection.driver_class");
- String connUrl = props.getProperty("hibernate.connection.url");
- String username = props.getProperty("hibernate.connection.username");
- String password = props.getProperty("hibernate.connection.password");
- // In my examples, I use Postgres, but Hibernate
- // supports virtually every popular dbms out there.
- Class.forName("org.postgresql.Driver");
- Connection conn = DriverManager.getConnection(connUrl, username, password);
- Configuration cfg = new Configuration();
- cfg.setProperties( props );
- SessionFactory sessions = cfg.buildSessionFactory();
- Session session = sessions.openSession(conn);
【编辑推荐】