구글의 앱 엔진(http://appengine.appspot.com/)은 데이터를 저장할 때 비용이 발생합니다. SQL을 사용하려면 더 비쌉니다.

간단히 데이터를 저장하고 빼는 방법으로 DataStore API를 제공해줍니다. 그리고, 저장된 데이터는 관리자 웹 페이지를 통해서 확인할 수 있습니다.


저장하는 절차는 다음과 같습니다.

1. 환경에서 DatastoreService를 가져옵니다.

2. Key를 만듭니다. Key의 종류와 key 이름을 추가합니다.

3. 레코드는 Entity 클래스를 이용합니다.

4. entity에 key : value 형식으로 기록할 데이터를 입력합니다.

5. Datastore에 entity를 추가합니다.


private static final String KEY_KIND = "Game";

private static final String keyName = "games";


DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();


public void save(Game game) {

Key entityKey = KeyFactory.createKey(KEY_KIND, keyName);


Entity entity = new Entity(KEY_KIND, entityKey);


User firstUser = game.getFirstUser();

User secondUser = game.getSecondUser();


entity.setProperty("first", firstUser.getName());

entity.setProperty("firstchoice", firstUser.getChoice());

entity.setProperty("second", secondUser.getName());

entity.setProperty("secondchoice", secondUser.getChoice());


entity.setProperty("datetime", new Date());

entity.setProperty("ip", game.getIp());


datastore.put(entity);

}



관리자 페이지에서는 다음과 같이 화면이 제공됩니다.




데이터를 꺼내오는 방법은 다음과 같습니다.


1. Key를 만듭니다.

2. Query를 만들면서 정렬순서와 기준 항목을 정합니다.

3. Datastore에서 Query를 이용해서 데이터를 꺼냅니다.

4. Entity 목록을 처리합니다.

public List<Entity> fetchAll() {

Key entityKey = KeyFactory.createKey(KEY_KINDkeyName);

Query query = new Query(KEY_KIND, entityKey).addSort("datetime",

Query.SortDirection.DESCENDING);

List<Entity> games = datastore.prepare(query).asList(

FetchOptions.Builder.withLimit(5));


return games;

}




양수열님이 진행하시는 5일간의 주말과정을 추천합니다.
http://club.paran.com/club/home.do?clubid=java-bbsView.do?menuno=5663-clubno=197-bbs_no=0a8VB

안녕하세요, 과정 개설자인 양수열입니다.

본 과정은 작년에 이어 JavaEE5에 새로운 EJB3와 이후 JavaEE6에 표준이 될 JSF를 가장 seamless하게 이어 주고 있다고 평가 받는 Seam framework 과정입니다. 작년에 JBoss와 Seam Framework을 같이 하면서 프레임웍에 대한 실제적인 Enterprise 환경에서의 활용에 대해 미진했던 부분에 대한 반성으로 실습 부분을 보강하고, 시간도 Seam에 전부 투자해서 학습 할 수 있는 과정을 개설했습니다.

이번 과정은 2주반에 걸쳐서 비교적 짧은 시간에 EJB3와 JSF의 Lifecycle을 이해하고, 적용해 볼 수 있는 좋은 강의가 될 것이라고 사료됩니다.

제가 여러분께 Seam을 권해 드리는 이유는 단한가지, 단순성과 효율성입니다. 우리가 현재 프로젝트에서 사용하고 있는 프레임웍은 대단히 많습니다. 따라서 이 프레임웍들을 하나씩 적용하기 위해서 학습시간과, 또한 대단히 큰 융통성(?)으로 방향을 잡지 못하게 하는 경우도 많다고 생각합니다. Seam은 "Deep Integration"이라는 명제로 출발하여, 대단히 간편하게 개발과정에서 신경써야 할 부분에 대해서 개발자의 등뒤에서 지원을 해주고 있습니다. 여러분들이 프레임웍을 선택해야하는 시점에서 Rapid Development나 simple CRUD 프로그램을 다수 만들어야하는 이슈가 있다면, Seam을 선택해 보실 것을 적극 권해드립니다.

양수열 배상

http://club.paran.com/club/home.do?clubid=java-bbsView.do?menuno=5663-clubno=197-bbs_no=0a8VB


image from: http://www.redhat.com/docs/en-US/JBoss_Enterprise_Application_Platform/4.2.0.cp06/html/Seam_Reference_Guide/Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_SE_with_the_JBoss_Microcontainer.html

+ Recent posts