hibernate.cfg.xml 설정 요약

Hibernate의 설명 파일은properties 속성 파일일 수도 있고 xml 파일일 수도 있습니다.다음은 Hibernate에 대해 말씀드리겠습니다.cfg.xml 설정.구성 형식은 다음과 같습니다.
1. 데이터 소스 구성
Hibernate에서.cfg.xml에서 JDBC를 설정할 수도 있고 JNDI를 설정할 수도 있습니다.이 소절에서 데이터 원본을 어떻게 설정하는지 설명합니다.
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>

<!--       -->

<!— true   Hibernate       sql     -->

<property name="show_sql">true</property>

<!-- SQL  ,      MySQL -->

<property name="dialect">net.sf.hibernate.dialect.MySQLDialect</property>

<!--            -->

<property name="jdbc.fetch_size">50</property>

<!--              -->
        <property name="jdbc.batch_size">30</property>

<!—   JNDI    -->

<!--        -->

<property name="connection.datasource">java:comp/env/jdbc/datasourcename</property>

<!-- Hibernate       -->

<property name="connection.provider_class">net.sf.hibernate.connection.DatasourceConnectionProvider</property>

<property name="dialect">net.sf.hibernate.dialect.SQLServerDialect</property>

<!—     -->

<mapping resource="com/amigo/pojo/User.hbm.xml"/>

<mapping resource="com/amigo/pojo/Org.hbm.xml"/>
    </session-factory>
</hibernate-configuration>

2.c3p0 연결 풀
c3p0 연결 탱크는Hibernate가 추천하는 연결 탱크입니다. 이 연결 탱크를 사용할 때 c3p0의jar 패키지를classpath에 추가해야 합니다.c3p0 연결 풀의 구성 예는 다음과 같습니다.
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>

        <!--            SQL -->

        <property name="show_sql">true</property>

        <!-- SQL  ,      MySQL -->

        <property name="dialect">net.sf.hibernate.dialect.MySQLDialect</property>

        <!--    ,          mysql、sqlserver Oracle       -->

        <property name="connection.driver_class">……</property>

        <!-- JDBC URL -->

        <property name="connection.url">……</property>

        <!--        -->

        <property name="connection.username">user</property>

        <!--       -->

        <property name="connection.password">pass</property>

        <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>

        <!--              -->

       <mapping resource="com/amigo/pojo/User.hbm.xml"/>

<mapping resource="com/amigo/pojo/Org.hbm.xml"/>

    </session-factory>

</hibernate-configuration>

상기 설정에서 Hibernate는 설정 파일에 따라 연결을 생성하여 c3p0 관리에 넘깁니다.
3.proxool 연결 탱크
proxool은 c3p0과dbcp와 달리 스스로 연결을 생성하기 때문에 연결 정보는 proxool 프로필에 저장됩니다.그것을 사용할 때proxool-0.8.3을 사용해야 합니다.jar는classespath에 가입합니다.구성의 예는 다음과 같습니다.
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>

        <!--            SQL -->

        <property name="show_sql">true</property>

        <!-- SQL  ,      MySQL -->

        <property name="dialect">net.sf.hibernate.dialect.MySQLDialect</property>

<!—proxool    -->

       <property name="proxool.pool_alias">pool1</property> 

<property name="proxool.xml">ProxoolConf.xml</property> 

<property name="connection.provider_class">net.sf.hibernate.connection.ProxoolConnectionProvider</property>

       <!--              -->

       <mapping resource="com/amigo/pojo/User.hbm.xml"/>

<mapping resource="com/amigo/pojo/Org.hbm.xml"/>

  </session-factory>

</hibernate-configuration>

hibernate에 있습니다.cfg.xml과 같은 디렉터리에서proxool의 프로필을 작성합니다:ProxoolConf.xml, 이 파일의 구성 예는 다음과 같습니다.
ProxoolConf.xml
<?xml version="1.0" encoding="utf-8"?> 
<!-- the proxool configuration can be embedded within your own application's. 
Anything outside the "proxool" tag is ignored. --> 
<something-else-entirely> 
<proxool> 
<alias>pool1</alias> 
<!--proxool            -->

<!--    url-->

<!-- jdbc:mysql://localhost:3306/dbname?useUnicode=true&characterEncoding=GBK-->

<driver-url>… </driver-url> 

<!--    ,eg. com.mysql.jdbc.Driver-->

<driver-class>… </driver-class> 
<driver-properties> 

<!--       ,eg. value root-->

<property name="user" value="…"/> 

<!--      ,eg. value root-->

<property name="password" value="…."/> 
</driver-properties> 
<!-- proxool               (  ),             ,     --> 
<house-keeping-sleep-time>90000</house-keeping-sleep-time> 
<!--                          ,                  --> 
<maximum-new-connections>20</maximum-new-connections> 
<!--           --> 
<prototype-count>5</prototype-count> 
<!--        ,       ,     ,        ,         maximum-new-connections  --> 
<maximum-connection-count>100</maximum-connection-count> 
<!--      --> 
<minimum-connection-count>10</minimum-connection-count> 
</proxool> 
</something-else-entirely>

4.dbcp 연결 탱크
hibernate3.0에서dbcp를 지원하지 않습니다.hibernate의 저자는hibernate에 있습니다.org에서 실천에서dbcp에BUG가 있음을 명확히 지적하였는데 어떤 경우에 빈 연결이 많이 생겨서 방출할 수 없기 때문에dbcp에 대한 지원을 포기하였다.dbcp를 사용해야 한다면 개발자는commons-pool-1.2를jar와commons-dbcp-1.2.1.jar 두 개의jar 패키지가classpath에 추가되었습니다.dbcp는 c3p0과 마찬가지로 hibernate에서 연결됩니다.
hibernate2.0의 구성은 다음과 같습니다.
hibernate.cfg.xml
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE hibernate-configuration PUBLIC

"-//Hibernate/Hibernate Configuration DTD 2.0//EN"

"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>

<session-factory>

        <!--            SQL -->

        <property name="show_sql">true</property>

        <!-- SQL  ,      MySQL -->

        <property name="dialect">net.sf.hibernate.dialect.MySQLDialect</property>

        <!--    ,          mysql、sqlserver Oracle       -->

        <property name="connection.driver_class">……</property>

        <!-- JDBC URL -->

        <property name="connection.url">……</property>

        <!--       ,eg. root -->

        <property name="connection.username">…</property>

        <!--      , eg. root-->

        <property name="connection.password">…</property>

       <property name="dbcp.maxActive">100</property> 

<property name="dbcp.whenExhaustedAction">1</property>

<property name="dbcp.maxWait">60000</property> 

<property name="dbcp.maxIdle">10</property> 

<property name="dbcp.ps.maxActive">100</property> 

<property name="dbcp.ps.whenExhaustedAction">1</property> 

<property name="dbcp.ps.maxWait">60000</property> 

<property name="dbcp.ps.maxIdle">10</property>

        <!--              -->

       <mapping resource="com/amigo/pojo/User.hbm.xml"/>

<mapping resource="com/amigo/pojo/Org.hbm.xml"/>

    </session-factory>

</hibernate-configuration>

5. MySql 연결 구성
hibernate에서는 MySql, Sql Server, Oracle 등 다양한 데이터베이스를 구성할 수 있습니다. MySql의 구성은 다음과 같습니다.
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>

<!--       -->

<!— true   Hibernate       sql     -->

<property name="show_sql">true</property>

<!-- SQL  ,      MySQL -->

<property name="dialect">net.sf.hibernate.dialect.MySQLDialect</property>

<!--            -->

<property name="jdbc.fetch_size">50</property>

<!--              -->
        <property name="jdbc.batch_size">30</property>

<!--    -->

<property name="connection.driver_class">com.mysql.jdbc.Driver</property>

<!-- JDBC URL -->

<property name="connection.url">jdbc:mysql://localhost/dbname?characterEncoding=gb2312</property>

<!--       -->

<property name="connection.username">root</property>

<!--      -->

<property name="connection.password">root</property>

<!—     -->

<mapping resource="com/amigo/pojo/User.hbm.xml"/>

<mapping resource="com/amigo/pojo/Org.hbm.xml"/>
    </session-factory>
</hibernate-configuration>

위에서 사용한 구동류는com입니다.mysql.jdbc.Driver.MySql의 연결기jar 패키지 (eg. mysql-connector-java-5.0.4-bin.jar)를classpath에 추가해야 합니다.
6. Sql Server 연결 구성
이 소절은 Sql Server 데이터베이스의hibernate 연결 설정에 대해 설명합니다. 여기서 연결 부분만 설명하고 나머지 부분은 2.2.1.5와 같이 더 이상 설명하지 않습니다.내용은 다음과 같습니다.
<!--    -->

<property name="connection.driver_class">net.sourceforge.jtds.jdbc.Driver</property>

<!-- JDBC URL -->

<property name="connection.url">jdbc:jtds:sqlserver://localhost:1433;DatabaseName=dbname</property>

<!--       -->

<property name="connection.username">sa</property>

<!--      -->

<property name="connection.password"></property>

상례의 드라이버는 jtds의 드라이버를 사용하기 때문에 독자는 jtds의jar 패키지(eg.jtds-1.2.jar)를classpath에 추가해야 한다.
7. Oracle 접속 구성
이 소절은 Sql Server 데이터베이스의hibernate 연결 설정에 대해 설명합니다. 여기서 연결 부분만 설명하고 나머지 부분은 2.2.1.5와 같이 더 이상 설명하지 않습니다.내용은 다음과 같습니다.
<!--    -->

<property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>

<!-- JDBC URL -->

<property name="connection.url">jdbc:oracle:thin:@localhost:1521:dbname</property>

<!--       -->

<property name="connection.username">test</property>

<!--      -->

<property name="connection.password">test</property>

위에서 사용한 드라이버 종류는oracle입니다.jdbc.driver.개발자는 관련jar 패키지(ojdbc14.jar)를classpath에 추가해야 합니다.

좋은 웹페이지 즐겨찾기