Ana içeriğe geç

1.9.3. Eksen Oracle Konfigürasyonu#

Eksen veritabanı bağımsız geliştirilen bir altyapı olduğu için Oracle veritabanını da desteklemektedir. Varsayılan ayarlar postgresql için yapıldığı için Oracle veritabanını kullanabilmek için bazı ayarların yapılması gerekmektedir.

Oracle Veritabanı Nasıl Çalıştırılır#

hvl-infra projesindeki "deployment/management-service/oracle-db/docker-compose.yml" altından oracle veritabanı çalıştırılabilir.

Veribatanına aşağıdaki bilgiler ile bağlanılır.

  • host: localhost
  • port: 1521
  • Service name: hvl
  • username SYSTEM
  • password: hvl12345

bilgileri ile bağlanılır.

Projede kullanılacak şemalar aşağıdaki şekilde oluşturulmalıdır. 

Not: Infra altındaki oracle database container'ı EKSEN ürünlerine ait şemaları otomatik oluşturmaktadır.

CREATE USER [şema adı] identified by [şema adı];
GRANT UNLIMITED TABLESPACE TO [şema adı];

Hosts Dosyası#

/etc/hosts dosyasına aşağıdaki değer eklenmelidir.

127.0.0.1       hvloracledatabase

hvl-infra Konfigürasyonları#

application-database-datasource.yml#

  1. spring.datasource.driver-class-name satırı silinir.
  2. spring.datasource.username değeri SYSTEM yapılır.
  3. spring.datasource.url değeri jdbc:oracle:thin:@//hvloracledatabase:1521/hvl olarak güncellenir.
  4. spring.sql.init.platform değeri oracle yapılır.
  5. spring.jpa.properties.hibernate.dialect değeri tr.com.havelsan.javarch.data.jpa.dialect.oracle.HvlOracleSQL12cDialect olarak güncellenir.
  6. spring.jpa.properties.hibernate.templates değeri tr.com.havelsan.javarch.data.jpa.dialect.oracle.templates.HvlOracleSQL12cTemplates olarak güncellenir.
  7. spring.jpa.properties.hibernate.sql-templates-type değeri oracle olarak güncellenir.

application-database-liquibase.yml#

  1. preliquibase.sqlScriptReferences satırı silinir.
  2. preliquibase.dbPlatformCode satırı silinir.

Uygulama Konfigürasyonları#

1. Adım#

runtimeOnly(
           [group: 'org.postgresql', name: 'postgresql'],
)

bağımlılık değeri

runtimeOnly(
           [group: 'com.oracle.database.jdbc', name: 'ojdbc8']
)
şeklinde değiştirilir. Eğer 2 veritabanına da destek verilecekse 2 değerin de yazılması gerekmektedir.

2. Adım#

Liquibase dosyaları oracle uyumlu hale getirilir.


Liquibase Sequence Düzeltimi#

Örnek olarak postgresql'den oluşturulmuş olan liquibase createSequence satırları oracle için düzenlenmelidir.

createSequence içerisindeki cacheSize="1" ve dataType="bigint" oracle için desteklenmediği için silinmelidir.

<createSequence cycle="false" incrementBy="1" maxValue="9223372036854775807" minValue="1" sequenceName="hibernate_sequence" startValue="1"/> 


Liquibase Dosylarında Postgresql'e Özgü Kullanılmış Veri Tipleri#

Postgresql'e özgü kullanılmış veri tipleri liquibase üzerinde kolayca ayarlanabilir. Bunu yapmak için root xml dosyasına property tanımı yapılır ve veri tipinin olduğu yerlere bu property eklenir. Böylece liquibase, veritabanı tipine göre uygun veri tipini yerleştirecektir. Örnekler aşağıdadır.

Not: Öncesinde proje başlatılmaya çalışılmalıdır. Sadece hata alınan yerlere müdahale edilmelidir. Liquibase birçok dönüşümü otomatik olarak yapmaktadır.

databaseChangeLog:
  - property:
      name: clob.type
      value: text
      dbms: postgresql
  - property:
      name: clob.type
      value: clob
      dbms: db2,oracle
  - property:
      name: clob.type
      value: varchar(MAX)
      dbms: mssql
  - property:
      name: blob.type
      value: bytea
      dbms: postgresql
  - property:
      name: blob.type
      value: blob
      dbms: db2,oracle
  - property:
      name: blob.type
      value: varbinary(MAX)
      dbms: mssql
  - include:
      file: db/changelog/setup/setup-ddl.xml
.
.
.
<column name="file" type="${blob.type}"/>
.
.
.

Veritabanlarındaki veri tipleri mappinglerini aşağıdaki linkten bulabilirsiniz.

https://xenovation.com/blog/development/java/java-professional-developer/liquibase-related-sql-java-types