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.
- Window > Preferences > Build Path > User Libraries ekranında, en sağda New… . düğmesine tıklayın.
- 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.
- 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
- Jar dosylarını da eklemeniz gerekiyor.
Son görünüm şöyle olmalı:
- 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
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
İç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
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 ?
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.
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 ?
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.
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…
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.
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
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.