Java project 中获取hibernate的Configuration的2种方式

Wesley13
• 阅读 733

    方式一、通过hibernate.cfg.xml文件配置
         1. hibernate.cfg.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
          "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <!-- 数据库链接配置 -->
        <property name="connection.username">test</property>
        <property name="connection.password">123</property>
        <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
        <property name="connection.url">jdbc:oracle:thin:@127.0.0.1:1521:tran</property>
        <!-- 显示实际操作数据库时的SQL -->
              <property name="show_sql">true</property>
              <property name="format_sql">true</property>
              <property name="use_sql_comments">true</property>
        <!-- SQL方言 -->
        <property name="dialect">org.hibernate.dialect.OracleDialect</property>
        <!-- 编码方式 -->
        <property name="connection.characterEncoding">GBK</property>
        <!-- C3P0数据源设置 -->
        <property name="c3p0.min_size">5</property>
        <property name="c3p0.max_size">20</property>
        <property name="c3p0.timeout">1800</property>
        <property name="c3p0.max_statements">50</property>
        <!-- 自动创建数据表 -->
        <property name="hbm2ddl.auto">update</property>
        <!-- 事务相关 -->
        <property name="connection.release_mode">auto</property>
        <property name="transaction.auto_close_session">false</property>
        <property name="connection.autocommit">false</property>
        <!-- 对象与数据库表格映像文件 -->
        <mapping resource="com/lxh/transaction3/BankAccount.hbm.xml" />
    </session-factory>
</hibernate-configuration>

         2. 应用代码

package com.lxh.transaction3;

import java.io.File;
import org.hibernate.cfg.Configuration;

public class HibernateTransactionTest {
    // path
    private static String path = HibernateTransactionTest.class.getResource("")
            .getPath().toString();

    // hibernate.cfg.xml文件方式获取
    public static Configuration getConfigurationByXML() {
        // 加载配置文件
        Configuration config = new Configuration();
        Configuration cfg = config.configure(new File(path
                + "hibernate.cfg.xml"));
        return cfg;
    }

    public static void main(String[] args) {
        // Configuration
        Configuration cfg = HibernateTransactionTest.getConfigurationByXML();
        System.out.println("****cfg="+cfg+"****\n****SessionFactory="+cfg.buildSessionFactory()+"****");
    }

}

         3. 测试结果
Java project 中获取hibernate的Configuration的2种方式
    方式二、通过hibernate.properties文件配置
         1. hibernate.properties

hibernate.connection.username=test
hibernate.connection.password=123
hibernate.connection.url=jdbc:oracle:thin:@127.0.0.1:1521:tran
hibernate.connection.driver_class=oracle.jdbc.driver.OracleDriver
hibernate.dialect=org.hibernate.dialect.OracleDialect
hibernate.hbm2ddl.auto=update
hibernate.show_sql=true
hibernate.format_sql=true
hibernate.connection.characterEncodin=GBK
hibernate.connection.release_mode=auto
hibernate.transaction.auto_close_session=false
hibernate.connection.autocommit=false
c3p0.min_size=5
c3p0.max_size=20
c3p0.timeout=1800
c3p0.max_statements=50

         2. 应用代码

package com.lxh.transaction3;

import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.Properties;
import org.hibernate.cfg.Configuration;

public class HibernateTransactionTest {
    // path
    private static String path = HibernateTransactionTest.class.getResource("")
            .getPath().toString();

    // properties文件方式获取
    public static Configuration getConfigurationByProp() {
        // hibernate.properties
        Properties prop = new Properties();
        try {
            prop.load(new FileReader(new File(path + "hibernate.properties")));
        } catch (IOException e) {
            System.out.println("加载hibernate配置文件失败:\t" + e.getMessage());
        }
        // 加载配置文件
        Configuration config = new Configuration();
        Configuration cfg = config.setProperties(prop);
        cfg.addClass(BankAccount.class);// 非常重要----自动搜索BankAccount.hbm.xml
        return cfg;
    }

    public static void main(String[] args) {
        // Configuration
        Configuration cfg = HibernateTransactionTest.getConfigurationByProp();
        System.out.println("****cfg="+cfg+"****\n****SessionFactory="+cfg.buildSessionFactory()+"****");
    }

}

         3. 测试结果
Java project 中获取hibernate的Configuration的2种方式
   补充:BankAccount.hbm.xml

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
    <class name="com.lxh.transaction3.BankAccount" table="BankAccount">
        <id name="id" type="string">
            <column name="id" />
        </id>
        <!-- name字段设置唯一约束 -->
        <property name="name" type="string" unique-key="true">
            <column name="name" not-null="true" />
        </property>
        <property name="balance" type="java.lang.Integer">
            <column name="balance" />
        </property>
    </class>
</hibernate-mapping>

    说明;
    1. 需要引入数据库驱动包以及hibernate相关jar;
    2. 使用properties文件配置hibernate时,应该采用cfg.addClass(BankAccount.class);自动加载XXX.hbm.xm文件;
    3. XXX.hbm.xml文件配置时特别注意正确书写表名和对应POJO的路径。

    参考:
    1. hibernate使用Properties文件方式配置  http://blog.csdn.net/xiazdong/article/details/7562765
    2. hibernate.cfg.xml配置  http://www.blogjava.net/baoyaer/articles/172642.html
    3. hibernate.cfg.xml在hibernate与spring中配置的区别  http://kewen1989.iteye.com/blog/1747156
    4. hibernate配置文件中有关事务的配置说明   http://www.blogjava.net/freeman1984/archive/2011/08/04/355808.html
    5. hibernate配置参数解释 http://www.cnblogs.com/elleniou/archive/2012/12/01/2797546.html
    6. hibernate展示SQL语句  http://www.mkyong.com/hibernate/hibernate-display-generated-sql-to-console-show\_sql-format\_sql-and-use\_sql\_comments/
    遇到的问题
       hibernate能显示执行的SQL语句,但是不能执行格式化。原先配置如下图所示:
Java project 中获取hibernate的Configuration的2种方式
    解决方法:去掉空格即可。

点赞
收藏
评论区
推荐文章
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Stella981 Stella981
3年前
SpringBoot整合Sqlite数据库流程
1.创建项目  方式一:通过网站https://start.spring.io/  方式二:通过开发工具(IDEA或者Eclipse自行百度)2.修改pom.xml配置文件,添加必要的驱动包<?xmlversion"1.0"encoding"UTF8"?<projectxmlns"ht
Easter79 Easter79
3年前
SpringBoot整合Sqlite数据库流程
1.创建项目  方式一:通过网站https://start.spring.io/  方式二:通过开发工具(IDEA或者Eclipse自行百度)2.修改pom.xml配置文件,添加必要的驱动包<?xmlversion"1.0"encoding"UTF8"?<projectxmlns"ht
Stella981 Stella981
3年前
Dubbo通过注解实现RPC调用
启动Dubbo服务有2个方式,1是通过xml配置,2是通过注解来实现,这点和Spring相似。采用XML配置如下:<?xmlversion"1.0"encoding"UTF8"?<beansxmlns"http://www.springframework.org/schema/beans"
Wesley13 Wesley13
3年前
Java解析XML
xml报文<?xmlversion'1.0'encoding'utf8'?<bookstore<bookid'1'<name冰与火之歌</name<author乔治马丁</author<year2014</yea
Stella981 Stella981
3年前
Android控件ListView简易使用(使用ArrayAdapter)
<?xmlversion"1.0"encoding"utf8"?<TextViewxmlns:android"http://schemas.android.com/apk/res/android"android:id"@id/tv"android:la
Stella981 Stella981
3年前
Hibernate简单学习总结
1.hibernate.cfg.xml配置<!DOCTYPE hibernateconfiguration PUBLIC"//Hibernate/Hibernate Configuration DTD 3.0//EN""http://www.hibernate.org/dtd/hibernateconfigurat
Stella981 Stella981
3年前
Kafka多线程消费消息创建线程池并封装成Jar包
XML及属性配置1.业务处理(kiafka.worker.xml)<?xmlversion"1.0"encoding"UTF8"?<root<topics<!name:要消费的topic;<!worker:执行消费逻辑的worker,配置值为执行的类
Stella981 Stella981
3年前
JSON and pageinfo
<?xmlversion"1.0"encoding"utf8"?<country   <name中国</name   <province       <name黑龙江</name    <cities           <city哈尔滨</ci
Stella981 Stella981
3年前
C# 读取 appconfig文件配置数据库连接字符串,和配置文件
<?xmlversion"1.0"encoding"utf8"?<configuration<connectionStrings<addname"strCon"connectionString"server127.0.0.1;useridsa;passwordcsw;da