복붙노트

[SPRING] Spring을 사용하여 메모리 내 DB 시작 및 설정

SPRING

Spring을 사용하여 메모리 내 DB 시작 및 설정

스프링을 사용하는 자바에서 데이터베이스에 액세스해야하는 작은 데모 애플리케이션을 작성하고 있습니다. 다른 시스템에서 실행해야하며 실제 데이터베이스를 설정하는 데 너무 많은 노력이 필요합니다. 따라서 저는 내장 된 것을 사용하고 싶습니다.

DB에는 주어진 스키마 (두 개의 테이블)와 일부 (거의없는)의 미리 정의 된 항목이 있습니다. 메모리 내 데이터베이스를 시작하고 테이블을 만들고 데이터를 채울 수있는 간단한 방법을 찾고 있습니다. 이 모든 작업은 Spring 컨텍스트를 초기화하는 동안 발생해야합니다.

내 접근 방식은 H2를 내 데이터베이스로 사용하고, 아마도 Spring Batch를 사용하여 csv- 또는 xml- 파일에서 데이터를로드하는 것입니다. 그러나 나는 이것을 달성하기위한 더 쉬운 방법이 있기를 희망했다. 이 작업을 즉시 수행 할 수있는 데이터베이스 / 프레임 워크 / 도구가 있습니까?

필요한 모든 것을 설정하는 데는 몇 가지 SQL 명령 만 필요합니다. 가능한 한 간단하게 Spring 환경에서이 작업을 수행 할 방법을 찾고 있습니다.

해결법

  1. ==============================

    1.Spring에는 내장 된 데이터베이스 지원 기능이 내장되어 있습니다. 내장 데이터베이스 지원을 참조하십시오.  문서에서.

    Spring에는 내장 된 데이터베이스 지원 기능이 내장되어 있습니다. 내장 데이터베이스 지원을 참조하십시오.  문서에서.

  2. ==============================

    2.H2를 사용하면 데이터베이스 URL 자체에서 데이터베이스를 초기화 할 수 있습니다. 예 : 초기화 할 모든 스크립트가 들어있는 SQL 스크립트 'start.sql'이 있습니다. 또한 CSV 파일에서 테이블을 만들 수도 있습니다. 그런 다음 '~ / temp / start.sql'에서 jdbc : h2 : ~ / temp / test; init = runscript 형식의 데이터베이스 URL을 사용하십시오. start.sql은 다음과 같이 보일 수 있습니다 (이것은 어쨌든 작업하고있는 예제입니다 - CSV 파일에서 테이블을 만드는 방법을 보여줍니다).

    H2를 사용하면 데이터베이스 URL 자체에서 데이터베이스를 초기화 할 수 있습니다. 예 : 초기화 할 모든 스크립트가 들어있는 SQL 스크립트 'start.sql'이 있습니다. 또한 CSV 파일에서 테이블을 만들 수도 있습니다. 그런 다음 '~ / temp / start.sql'에서 jdbc : h2 : ~ / temp / test; init = runscript 형식의 데이터베이스 URL을 사용하십시오. start.sql은 다음과 같이 보일 수 있습니다 (이것은 어쨌든 작업하고있는 예제입니다 - CSV 파일에서 테이블을 만드는 방법을 보여줍니다).

    create table if not exists location(id int primary key, country varchar, 
    region varchar, city varchar, postalCode varchar, latitude float, longitude float, 
    metroCode varchar, areaCode varchar) 
    as select * from csvread('~/Downloads/GeoLiteCity/GeoLiteCity-Location.csv');
    
    create table if not exists blocks(start long, end long primary key, location int) 
    as select * from csvread('~/Downloads/GeoLiteCity/GeoLiteCity-Blocks.csv');
    
    create alias if not exists ip2id deterministic as $$
    long ip2id(String s) {
      String[] x = s.split("\\.");
      return (Long.parseLong(x[0]) << 24) + (Long.parseLong(x[1]) << 16) +
        (Long.parseLong(x[2]) << 8) + Long.parseLong(x[3]);
    } $$;
    
    create alias if not exists id2ip deterministic as $$
    String id2ip(long x) {
      return (x >> 24) + "." + ((x >> 16) & 255) + "." + 
          ((x >> 8) & 255) + "." + (x & 255);
    } $$;
    
  3. ==============================

    3.Spring 3는 jdbc : embedded-database 요소의 도움으로 3에서 시작하는 내장 데이터베이스에 대한 추가 지원을 추가했습니다. 자세한 내용은이 자습서를 읽으십시오.

    Spring 3는 jdbc : embedded-database 요소의 도움으로 3에서 시작하는 내장 데이터베이스에 대한 추가 지원을 추가했습니다. 자세한 내용은이 자습서를 읽으십시오.

    Derby를 JDK 6 번들과 함께 사용할 것을 권장합니다.

  4. ==============================

    4.HSQLDB는 좋은 선택입니다.

    HSQLDB는 좋은 선택입니다.

  5. from https://stackoverflow.com/questions/4671102/start-and-setup-in-memory-db-using-spring by cc-by-sa and MIT license