Yapılandırma (Konfigürasyon)

Firebird + Hibernate kütüphanelerinin Eclipse’e nasıl ekleneceğini anlatalım:

Eclipse’e alışkın olmayanlar için adım adım neler yapılması gerektiğinden bahsedeceğim. İlk aşamada yapacaklarımız Hibernate ve Jaybird için gerekli JAR dosyalarını Kullanıcı Kütüphanesi (User Library) olarak Eclipse’e eklemek. 1)Hibernate ve JayBird’ü indirin.

  1. Window > Preferences > Build Path > User Libraries ekranında, en sağda New… . düğmesine tıklayın.
  2. User Library Name olarak Hibernate yazın ve Ok’e tıklayın. Hibernate öğesi listede belirdikten sonra seçin ve sağ taraftaki Add Jar… düğmesine tıklayın.
  3. Hibernati kurduğunuz klasöre gidin ve hibernate3.jar dosyasını seçip listeye ekleyin. Yalnız bu Jar dosyası yeterli değil. lib klasörü içinde bulunan
    • jdbc2_0-stdext.jar
    • jta.jar
    • antlr-XXX.jar
    • asm.jar
    • asm-attrs.jar
    • commons-collections-XXX.jar
    • commons-logging-XXX.jar
    • dom4j-XXX.jar
    • ehcache-XXX.jar
    • cglib-XXX.jar
  4. Jar dosylarını da eklemeniz gerekiyor. Son görünüm şöyle olmalı:
  5. Jaybird içinde yeni bir User Library oluşturun ve içine jaybird-full-XXX.jar dosyasını ekleyin. Bu Jar dosyasının yanındaki + işaretine tıklayın ve açılan listeden Native Library öğesine çift tıklayarak jaybird2.dll dosyasını seçin
Yukarıdaki adımları tamamladıktan sonra yeni bir Java projesi oluşturun ve kütüphaneler sekmesinde Hibernate ve Jaybird öğelerini ekleyin.

Artık bu yeni proje içerisinde hibernate’i sorunsuz kullanabilmemiz lazım. Emin olmak için aşağıdaki kodu yazıp çalıştırın.

import java.util.Properties;
import org.hibernate.cfg.Configuration;
import org.hibernate.cfg.Environment;

public class Test1 {
  public static void main(String[] args) {
    Configuration conf = new Configuration();
    Properties props = new Properties();
    props.put(Environment.DRIVER , "org.firebirdsql.jdbc.FBDriver");
    props.put(Environment.URL, "jdbc:firebirdsql:localhost/3050:c:/test.fdb" );
    props.put(Environment.DIALECT, "org.hibernate.dialect.FirebirdDialect");
    props.put(Environment.USER, "SYSDBA");
    props.put(Environment.PASS, "masterkey");
    conf.addProperties(props);
    conf.addProperties(System.getProperties());
    conf.buildSessionFactory().openSession().close();
  }
}

Eğer console ekranında hiçbir Exception yazısı görmüyorsanız her şey çalışıyor demektir.

Hibernate bağlantısı için gerekli parametreler kodun içine yazıldı. Hibernate bu yapılandırmayı ayrı bir dosyadan da okuyabilir. Böylece farklı veritabanlarına bağlanmak için kodu değiştirmek yerine sadece yapılandırma dosyasını değiştirmemiz yeterli olur.

iki tip yapılandırma dosyası oluşturabilirsiniz.

  • Hibernate 1 ve 2′de kullanılan hibernate.properties
  • Hibernate 3 ile kullanılmaya başlayan hibernate.cfg.xml
Biz hibernate.cfg.xml dosyasını kullanalım. Projenizde Test1.java dosyasının bulunduğu paketin üstüne sağ tıklayarak New>File seçenekleri ile hibernate.cfg.xml adında yeni bir dosya oluşturun.

İçeriğini de şöyle belirleyin

<!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="hibernate.connection.driver_class">
                org.firebirdsql.jdbc.FBDriver
        </property>
    <property name="hibernate.connection.url">
                jdbc:firebirdsql:localhost/3050:c:/test.fdb
        </property>
    <property name="hibernate.connection.username">
                 SYSDBA
         </property>
     <property name="hibernate.connection.password">
                masterkey
         </property>
     <property name="dialect">
               org.hibernate.dialect.FirebirdDialect
         </property>
     <property name="show_sql">false</property>
  </session-factory>
</hibernate-configuration>

Daha önce yazdığımız Test1.java dosyasının içeriğini de artık değiştirebiliriz.

import org.hibernate.cfg.Configuration;

public class Test1 {
  public static void main(String[] args) {
    Configuration conf = new Configuration();
    conf.configure()
            .buildSessionFactory()
            .openSession()
            .close();
  }
}

Hibernate’e diğer veritabanlarını kullanarak bağlantı kurmayı deneyebilirsiniz. Yapmanız gerekenler

  • Bağlantı kuracağınız veritabanının Jar dosyalarını projeye eklemek,
  • Bağlantı için gerekli URL’yi değiştirmek
  • Bu veritabanına ait dialect sınıfının yolunu yazmak. Bu dialectlerin bir listesi hibernate içindeki dokümanlarda belirtilmiştir.
  • Kullanıcı adı ve şifreyi belirtmek

  1. Ömer Faruk

    Hocam burada tarif ettiğiniz herşeyi yaptım ancak konsola bir sürü Exception fırlatılıyor.

    26.May.2007 15:30:30 org.hibernate.cfg.Environment INFO: Hibernate 3.2.4.sp1 26.May.2007 15:30:30 org.hibernate.cfg.Environment INFO: hibernate.properties not found 26.May.2007 15:30:30 org.hibernate.cfg.Environment buildBytecodeProvider INFO: Bytecode provider name : cglib 26.May.2007 15:30:30 org.hibernate.cfg.Environment INFO: using JDK 1.4 java.sql.Timestamp handling 26.May.2007 15:30:30 org.hibernate.connection.DriverManagerConnectionProvider configure INFO: Using Hibernate built-in connection pool (not for production use!) 26.May.2007 15:30:30 org.hibernate.connection.DriverManagerConnectionProvider configure INFO: Hibernate connection pool size: 20 26.May.2007 15:30:30 org.hibernate.connection.DriverManagerConnectionProvider configure INFO: autocommit mode: false 26.May.2007 15:30:30 org.hibernate.connection.DriverManagerConnectionProvider configure INFO: using driver: org.firebirdsql.jdbc.FBDriver at URL: jdbc:firebirdsql:localhost/3050:c:/test.fdb 26.May.2007 15:30:30 org.hibernate.connection.DriverManagerConnectionProvider configure INFO: connection properties: {user=hakdogan, password=****} 26.May.2007 15:30:31 org.hibernate.cfg.SettingsFactory buildSettings WARNING: Could not obtain connection metadata org.firebirdsql.jdbc.FBSQLException: GDS Exception. 335544721. Unable to complete network request to host “localhost”. Reason: Unable to complete network request to host “localhost”. at org.firebirdsql.jdbc.FBDataSource.getConnection(FBDataSource.java:122) at org.firebirdsql.jdbc.FBDriver.connect(FBDriver.java:131) at java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at org.hibernate.connection.DriverManagerConnectionProvider.getConnection(DriverManagerConnectionProvider.java:110) at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:84) at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2009) at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1292) at Test1.main(Test1.java:16) at org.firebirdsql.gds.GDSException: Unable to complete network request to host “localhost”. at org.firebirdsql.gds.impl.wire.AbstractJavaGDSImpl.connect(AbstractJavaGDSImpl.java:1967) at org.firebirdsql.gds.impl.wire.AbstractJavaGDSImpl.internalAttachDatabase(AbstractJavaGDSImpl.java:394) at org.firebirdsql.gds.impl.wire.AbstractJavaGDSImpl.iscAttachDatabase(AbstractJavaGDSImpl.java:370) at org.firebirdsql.jca.FBManagedConnection.(FBManagedConnection.java:89) at org.firebirdsql.jca.FBManagedConnectionFactory.createManagedConnection(FBManagedConnectionFactory.java:470) at org.firebirdsql.jca.FBStandAloneConnectionManager.allocateConnection(FBStandAloneConnectionManager.java:69) at org.firebirdsql.jdbc.FBDataSource.getConnection(FBDataSource.java:119) at org.firebirdsql.jdbc.FBDriver.connect(FBDriver.java:131) at java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at org.hibernate.connection.DriverManagerConnectionProvider.getConnection(DriverManagerConnectionProvider.java:110) at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:84) at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2009) at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1292) at Test1.main(Test1.java:16) 26.May.2007 15:30:31 org.hibernate.dialect.Dialect INFO: Using dialect: org.hibernate.dialect.FirebirdDialect 26.May.2007 15:30:31 org.hibernate.transaction.TransactionFactoryFactory buildTransactionFactory INFO: Using default transaction strategy (direct JDBC transactions) 26.May.2007 15:30:31 org.hibernate.transaction.TransactionManagerLookupFactory getTransactionManagerLookup INFO: No TransactionManagerLookup configured (in JTA environment, use of read-write or transactional second-level cache is not recommended) 26.May.2007 15:30:31 org.hibernate.cfg.SettingsFactory buildSettings INFO: Automatic flush during beforeCompletion(): disabled 26.May.2007 15:30:31 org.hibernate.cfg.SettingsFactory buildSettings INFO: Automatic session close at end of transaction: disabled 26.May.2007 15:30:31 org.hibernate.cfg.SettingsFactory buildSettings INFO: Scrollable result sets: disabled 26.May.2007 15:30:31 org.hibernate.cfg.SettingsFactory buildSettings INFO: JDBC3 getGeneratedKeys(): disabled 26.May.2007 15:30:31 org.hibernate.cfg.SettingsFactory buildSettings INFO: Connection release mode: auto 26.May.2007 15:30:31 org.hibernate.cfg.SettingsFactory buildSettings INFO: Default batch fetch size: 1 26.May.2007 15:30:31 org.hibernate.cfg.SettingsFactory buildSettings INFO: Generate SQL with comments: disabled 26.May.2007 15:30:31 org.hibernate.cfg.SettingsFactory buildSettings INFO: Order SQL updates by primary key: disabled 26.May.2007 15:30:31 org.hibernate.cfg.SettingsFactory buildSettings INFO: Order SQL inserts for batching: disabled 26.May.2007 15:30:31 org.hibernate.cfg.SettingsFactory createQueryTranslatorFactory INFO: Query translator: org.hibernate.hql.ast.ASTQueryTranslatorFactory 26.May.2007 15:30:31 org.hibernate.hql.ast.ASTQueryTranslatorFactory INFO: Using ASTQueryTranslatorFactory 26.May.2007 15:30:31 org.hibernate.cfg.SettingsFactory buildSettings INFO: Query language substitutions: {} 26.May.2007 15:30:31 org.hibernate.cfg.SettingsFactory buildSettings INFO: JPA-QL strict compliance: disabled 26.May.2007 15:30:31 org.hibernate.cfg.SettingsFactory buildSettings INFO: Second-level cache: enabled 26.May.2007 15:30:31 org.hibernate.cfg.SettingsFactory buildSettings INFO: Query cache: disabled 26.May.2007 15:30:31 org.hibernate.cfg.SettingsFactory createCacheProvider INFO: Cache provider: org.hibernate.cache.NoCacheProvider 26.May.2007 15:30:31 org.hibernate.cfg.SettingsFactory buildSettings INFO: Optimize cache for minimal puts: disabled 26.May.2007 15:30:31 org.hibernate.cfg.SettingsFactory buildSettings INFO: Structured second-level cache entries: disabled 26.May.2007 15:30:31 org.hibernate.cfg.SettingsFactory buildSettings INFO: Statistics: disabled 26.May.2007 15:30:31 org.hibernate.cfg.SettingsFactory buildSettings INFO: Deleted entity synthetic identifier rollback: disabled 26.May.2007 15:30:31 org.hibernate.cfg.SettingsFactory buildSettings INFO: Default entity-mode: pojo 26.May.2007 15:30:31 org.hibernate.cfg.SettingsFactory buildSettings INFO: Named query checking : enabled 26.May.2007 15:30:31 org.hibernate.impl.SessionFactoryImpl INFO: building session factory 26.May.2007 15:30:31 org.hibernate.impl.SessionFactoryObjectFactory addInstance INFO: Not binding factory to JNDI, no JNDI name configured

    Acaba nerede hata yapıyorum ?

  2. ibrahim dursun

    INFO: using driver: org.firebirdsql.jdbc.FBDriver at URL: jdbc:firebirdsql:localhost/3050:c:/test.fdb 26.May.2007 15:30:30 org.hibernate.connection.DriverManagerConnectionProvider configure INFO: connection properties: {user=hakdogan, password=****} 26.May.2007 15:30:31 org.hibernate.cfg.SettingsFactory buildSettings WARNING: Could not obtain connection metadata org.firebirdsql.jdbc.FBSQLException: GDS Exception. 335544721. Unable to complete network request to host “localhost”. Reason: Unable to complete network request to host “localhost”.

    localhosttan bağlantı sağlanamadığını söylemiş. localhostta firebird server çalışıyor mu? 3050 portunda mı çalışıyor? java dışından localhost bağlantısı kurabiliyor musunuz? bunları kontrol edin.

  3. Ömer Faruk

    Hocam firebird server yok bende onu da mı kurmak lazım.

    Ben yazınızdan harekeltle jaybird paketi indirdim ve jar dosyasını projeme hibernate jarı ile birlikte ekledim.

    Localhostuma mysql server 6.0 kurdum.

    Daha neler yapmalıyım ?

  4. ibrahim dursun

    Jaybird sadece javadan firebird’e bağlanabilmek için hazırlanmış bir JDBC kütüphanesi. Firebird server kurmanız lazım ki bağlanacak bir şey olsun.

  5. yardım edebilirseniz çok sevineceğim…. Firebird-1.5.4.4910-0-Win32.exe yi yükleyerek firebird’ü kullanmak istiyorum. Proje javada web projesi olacak ama hibernate kullanmayacağız. ama ne yazık ki firebirde bir türlü bağlanamadım. yardımn edebilirseniz çok sevinirim…

  6. ibrahim dursun

    Firebird SQL Server’ı kurduktan sonra, yine Firebird sitesinden JayBird kütüphanesini indirin. Javadan Firebird’e bağlanmak için bu kütüphaneye ihtiyacınız olacak. Kütüphane içinde örnek kodlar mevcut. Kodları inceleyebilirsiniz.

  7. Netbeans kullanarak javadan firebird bağlanmak istiyorum fakat jaybird- full classpeth tanıtmama ragmen aşagıdaki hatayı alıyorum. Bir fikriniz var mı?

    DataSourceExample.java:27: package org.firebirdsql.pool does not exist org.firebirdsql.pool.FBWrappingDataSource dataSource = ^ DataSourceExample.java:28: package org.firebirdsql.pool does not exist new org.firebirdsql.pool.FBWrappingDataSource(); ^ 2 errors

    C:Jaybird-2.1.1JDK_1.5examples>javac DriverExample.java DriverExample.java:183: package org.firebirdsql.jdbc does not exist d = new org.firebirdsql.jdbc.FBDriver (); ^ 1 error

  8. ibrahim dursun

    Netbeans projeleri derlerken build script oluşturuyor belki proje ayarlarında bir yeri atlıyorsunuzdur da bu yüzden bu scriptten derlenemiyordur. Classpath sorunu olduğu aşikar.

    Netbeans kullanmadığım için pek yardımcı olamayacağım. İyi çalışmalar.

Leave a Comment


NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>