• [Hibernate开发之路](3)基础配置


    一 JDBC链接

    通常你希望SessionFactory来为你创建和缓存(pool)JDBC连接. 假设你採用这样的方式, 仅仅须要例如以下例所看到的那样,打开一个Session: 

    Session session = sessions.openSession(); // open a new Session
    一旦你须要进行数据訪问时, 就会从连接池(connection pool)获得一个JDBC连接. 
    为了使这样的方式工作起来, 我们须要向Hibernate传递一些JDBC连接的属性. 我们如今将描写叙述JDBC连接配置中最重要的设置. 
    假设你设置例如以下属性。Hibernate将使用java.sql.DriverManager来获得(和缓存)JDBC连接 : 

               Hibernate JDBC属性


    但Hibernate自带的连接池算法相当不成熟. 它仅仅是为了让你快些上手,并不适合用于产品系统或性能測试中。 出于最佳性能和稳定性考虑你应该使用第三方的连接池。


    仅仅须要用特定连接池的设置替换 hibernate.connection.pool_size就可以。这将关闭Hibernate自带的连接池. 比如, 你可能会想用C3P0. C3P0是一个随Hibernate一同分发的开源的JDBC连接池, 它位于lib文件夹下。 假设你设置了hibernate.c3p0.*相关的属性, Hibernate将使用 C3P0ConnectionProvider来缓存JDBC连接. 假设你更原意使用Proxool, 请參考发 行包中的hibernate.properties并到Hibernate站点获取很多其它的信息. 

    二 可选的配置属性

    有大量属性能用来控制Hibernate在执行期的行为. 它们都是可选的, 并拥有适当的默认值. 

    Hibernate配置属性 




    三 SQL方言

    你应当总是为你的数据库将hibernate.dialect属性设置成正确的 org.hibernate.dialect.Dialect子类. 假设你指定一种方言, Hibernate将为上面列出的一些属性使用合理的默认值, 为你省去了手工指定它们的功夫.

    Hibernate SQL方言 (hibernate.dialect)




    四  XML配置文件


    还有一个配置方法是在hibernate.cfg.xml文件里指定一套完整的配置. 这个文件能够当成hibernate.properties的替代。

    若两个文件同一时候存在。它将覆盖前者的属性. 
    XML配置文件被默认是放在CLASSPATH的根文件夹下. 这是一个样例: 

    <?xml version='1.0' encoding='utf-8'?>
    <!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD//EN"
        "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
    
    <hibernate-configuration>
    
        <!-- 以/jndi/name绑定到JNDI的SessionFactory实例 -->
        <session-factory
            name="java:hibernate/SessionFactory">
    
            <!-- 属性 -->
            <property name="connection.datasource">java:/comp/env/jdbc/MyDB</property>
            <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
            <property name="show_sql">false</property>
            <property name="transaction.factory_class">
                org.hibernate.transaction.JTATransactionFactory
            </property>
            <property name="jta.UserTransaction">java:comp/UserTransaction</property>
    
            <!-- 映射定义文件 -->
            <mapping resource="org/hibernate/auction/Item.hbm.xml"/>
            <mapping resource="org/hibernate/auction/Bid.hbm.xml"/>
    
            <!-- 缓存设置 -->
            <class-cache class="org.hibernate.auction.Item" usage="read-write"/>
            <class-cache class="org.hibernate.auction.Bid" usage="read-only"/>
            <collection-cache collection="org.hibernate.auction.Item.bids" usage="read-write"/>
    
        </session-factory>
    
    </hibernate-configuration>
    

    如你所见, 这种方法优势在于,在配置文件里指出了映射定义文件的名字. 一旦你须要调整Hibernate的缓存, hibernate.cfg.xml也是更方便. 注意,使用hibernate.properties还是 hibernate.cfg.xml全然是由你来决定, 除了上面提到的XML语法的优势之外, 两者是等价的. 
    使用XML配置,使得启动Hibernate变的异常简单, 例如以下所看到的,一行代码就能够搞定:

    SessionFactory sf = new Configuration().configure().buildSessionFactory();
    

    你能够使用例如以下代码来加入一个不同的XML配置文件 
    SessionFactory sf = new Configuration()
        .configure("catdb.cfg.xml")
        .buildSessionFactory();
    











  • 相关阅读:
    WEB 前端菜鸟,感觉很迷茫,该怎么做?
    WEB前端研发工程师编程能力成长之路
    CSS3 基本要素概览
    初学者应该怎么学习前端?web前端的发展路线大剖析!
    【初学者必读】:前端工程师的知识体系
    观点 | 2017年前端初学者的生存指南
    零基础的前端开发初学者应如何系统地学习?
    Asp.net core Identity + identity server + angular 学习笔记 (第五篇)
    Asp.net core Identity + identity server + angular 学习笔记 (第四篇)
    Asp.net core Identity + identity server + angular 学习笔记 (第三篇)
  • 原文地址:https://www.cnblogs.com/gccbuaa/p/6798149.html
Copyright © 2020-2023  润新知