14 Ekim 2018 Pazar

hibernate.cfg.xml Dosyası - Session Factory Ayarları

Giriş
Açıklaması şöylehibernate.properties dosyasını ezer.
An alternative approach to configuration is to specify a full configuration in a file named hibernate.cfg.xml. This file can be used as a replacement for the hibernate.properties file or, if both are present, to override properties.
Bu dosyada Hibernate'in çalışması için gerekli ayarlar bulunur. Ayarlar SessionCache vs gibi şeylerle ilgilidir.

Bağlantı için kullanılan parametreleri hibernate.cfg.xml - Connection yazısına taşıdım. Diğer parametreler çalışma şeklini değiştiriyor.

Archive
Hem hbm.xml hem de anotasyonları yüklemek için şöyle yaparız. Sadece anotasyonlu sınıfları eklemek için class değerini atarız.
<property name="hibernate.archive.autodetection" value="class, hbm" />
Enable_lazy_load_no_trans - Kullanmayın
Session kapatılsa bile lazy load edilen nesneler için altta yeni bir bağlantı açar. Şöyle yaparız.
<prop key="hibernate.enable_lazy_load_no_trans">true</prop>
globally_quoted_identifiers
Şöyle yaparız.
setProperty("hibernate.globally_quoted_identifiers", "true");
Diğer
Yüklenecek sınıflar hbm.xml dosyalarında bulunur.

dialect
Şu değerler olabilir.
org.hibernate.dialect.MySQLDialect
org.hibernate.dialect.Oracle9Dialect (deprecated)
org.hibernate.dialect.OracleDialect (deprecated)
org.hibernate.dialect.Oracle10gDialect
org.hibernate.dialect.PostgreSQLDialect
org.hibernate.dialect.PostgreSQL9Dialect


hbm2ddl.auto
hbm2ddl yazısına taşıdım.

mapping
Hibernate'in package scan özelliği olmadığı için Session tarafından tanınan sınıfları amelece elle yazmak gerekir. Şöyle yaparız
<mapping class="entities.Contact"/>
<mapping class="entities.Disaggregated"/>
<mapping class="entities.DissagregatedCombined"/>
<mapping class="entities.Legacy"/>
<mapping class="entities.LegacyCombined"/>
<mapping class="entities.Login"/>
<mapping class="entities.Register"/>
<mapping class="entities.NetCurrency"/>
<mapping class="entities.NetFinancial"/>
<mapping class="entities.NetEnergy"/>
<mapping class="entities.NetMetals"/>
<mapping class="entities.NetGrains"/>
<mapping class="entities.NetLivestock"/>
query.substitutions
true 1, false 0 olabilir

JNDI
Örnek
JNDI DataSource kullanmak için şöyle yaparız.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
  <session-factory>
    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="hibernate.connection.datasource">
      java:comp/env/jdbc/webApplication</property>
    <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
    <property name="hibernate.current_session_context_class">thread</property>
    <property name="hibernate.current_session_context_class">
      org.hibernate.context.internal.ThreadLocalSessionContext
    </property>
    <!-- Mapping with model class containing annotations -->
    <mapping class="com.jsp.Employee"/> 
  </session-factory>
</hibernate-configuration>
current_session_context_class değeri olarak thread veya jta verilebilir.

Oracle
Şöyle yaparız.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>      
  <session-factory>
    <!-- Database connection settings -->
    <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
    <property name="hibernate.dialect">org.hibernate.dialect.OracleDialect</property> 
    <property name="hibernate.connection.url">jdbc:oracle:thin:@localhost:1521:orcl
    </property>
    <property name="hibernate.connection.username">cosmin</property>
    <property name="hibernate.connection.password">123456</property>
    <property name="hibernate.show_sql">true</property>
    <property name="hibernate.connection.release_mode">auto</property>
    <property name="hibernate.current_session_context_class">thread</property>
    <property name="hibernate.connection.autoReconnect">true</property>

    <mapping class="vmproj.model.entity.DenominationCount" />

  </session-factory>
</hibernate-configuration>
PostGreSQL
Şöyle yaparız.
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration SYSTEM 
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

<hibernate-configuration>

  <session-factory>

   <property name="hibernate.connection.driver_class">org.postgresql.Driver</property>
   <property name="hibernate.connection.url">jdbc:postgresql://a.b.c:5432/test</property>
   <property name="hibernate.connection.username">user</property>
   <property name="hibernate.connection.password">password</property>

   <property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property>

   <property name="hibernate.default_schema">dess6n165jarrv</property>
   <property name= "hbm2ddl.auto">update</property>

   <property name="hibernate.current_session_context_class">thread</property>

  </session-factory>

</hibernate-configuration>

Hiç yorum yok:

Yorum Gönder