2 Aralık 2018 Pazar

SpringData EmbeddedDatabaseBuilder Sınıfı

Giriş
H2 veya onun gibi gömülü veri tabanlar için bir DataSource nesnesi yaratır.

constructor
Şöyle yaparız.
@Bean
public DataSource dataSource() {
  return new EmbeddedDatabaseBuilder()
    .setType(EmbeddedDatabaseType.H2)
    .addScript("classpath:schema.sql")
    .build();
}
addDefaultScripts metodu
Şöyle yaparız.
@Bean
public DataSource getDataSource() {     
  return new EmbeddedDatabaseBuilder()
    .generateUniqueName(false)
    .setName("mytestdb")
    .setType(EmbeddedDatabaseType.H2)
    .addDefaultScripts()
    .setScriptEncoding("UTF-8")
    .ignoreFailedDrops(true)
    .build();
}
schema.sql ve data.sql isimli iki tane sql dosyasını otomatik olarak çalıştırır. Dosyalar için şöyle yaparız
//schema.sql Script
CREATE SCHEMA `MYTESTDB` ;
Drop TABLE IF EXISTS MYTESTDBDB.TEST_TABLE;
CREATE TABLE MYTESTDB.TEST_TABLE ( 
   ID INT NOT NULL PRIMARY KEY, 
   NAME VARCHAR(50) NOT NULL, 
   EMAIL VARCHAR(20) NOT NULL, 
   );
CREATE UNIQUE INDEX ON MYTESTDB.TEST_TABLE (EMAIL)

//data.sql Script
INSERT INTO MYTESTDB.TEST_TABLE(id, name, email) 
VALUES ('1', 'Tom', 'tom12@hotmail.com');
addScript metodu
İsmi beliritlen scriptleri çalıştırır. Örnek ver

build metodu
Şöyle yaparız.
@Configuration
public class TestConfiguration {
  @Bean
  public DataSource dataSource() {
    EmbeddedDatabaseBuilder builder = new EmbeddedDatabaseBuilder();
    EmbeddedDatabase db = builder
      .setType(EmbeddedDatabaseType.H2)
      .addScript("db/sql/test.sql")
      .setName("MyDBName")
      .build();
      return db;
  }
}
test.sql dosyası şöyledir.
CREATE SCHEMA IF NOT EXISTS "MYSCHEMA";

CREATE TABLE "MYSCHEMA"."MyTable"
(
    MyField nvarchar(1500)
)

Hiç yorum yok:

Yorum Gönder