b

플레이 프레임워크2 - 부가#2 ( Evolutions scripts ) 본문

play framework

플레이 프레임워크2 - 부가#2 ( Evolutions scripts )

dev.bistro 2012. 7. 31. 10:18

Play framework의 Database는 Evolutions scripts 에 의해서 startup/shutdown에 액션을 취할수 있다. plain SQL로 작성되고 conf/evolutions/{database name} 위치에 있다. 1.sql이 실행되고 2.sql이 있으면 수행되는 형식이다.

막 이전에 yaml 파일과 GlobalSetting를 상속받아서 테스트 데이터를 입력하였는데 거기에 scripts로 추가적으로 테스트 데이터를 입력해보도록 하자.


현재 포스팅을 하고 있는 대상 tutorial 웹어플리케이션의 default database name은 [default] 이다.

application.conf

# Database configuration

# ~~~~~ 

# You can declare as many datasources as you want.

# By convention, the default datasource is named `default`

#

db.default.driver=org.h2.Driver

db.default.url="jdbc:h2:mem:play"




현재 우리 프로젝트의 폴더 모습은 위와 같다. 자동으로 생성된 폴더와 1.sql도 보일것이다. 이런거 만든적이 없다고 거짓말 하지 마라. 바로 이전 포스팅에서 Apply this script now! 를 눌렀잖아?

저기에 2.sql을 만들어 보자. (2개의 테스트 데이터를 넣는 sql문이다)

# Sample data 대충 요롷게

# --- !Ups

insert into message (id, content)  values  (5, 'test message'), (6, 'last message');

# --- !Downs





위의 모습처럼 [허용해줘!버튼]을 볼 수 있다. 이러한 스크립트는 데이터를 넣을때도 유용할 수 있지만, 협업하는 개발자가 같은 테이블임에도 DB스키마다 다르게 작업하는등의 이슈가 있을때 사용할 수 있겠지?


여기서 궁금한게 있지 않나? 1.sql 다음에 10.sql을 쓰면 과연 수행이 될것인가? 2.sql을 10.sql로 변경하고 Play Command Line에서 reboot를 입력한후 run하였다. 하지만 10.sql은 수행되지 않는다.

첫DB는 default 이르을 가져야 하고, 1.sql 뒤에 2.sql 의 순서대로 script는 실행된다. (라고 난 확인했다~)

Evolutions scripts를 수행하는 native code를 분석하면 좀 더 명확하게 알수 있겠지만, 난 지금 play framework의 사용법을 배우는 중이라서 그건 니네들이 알아서 보자.-_-z



Comments