Clean Code that Works.

Neo4j를 회사 서버에 설치해서 사용중인데 집에서도 공부할때 계속 사용해보고 싶었다.

Grails에서 기본적으로 제공해주는 environments 는 development, product, test 이렇게 지원을 해주는데, 나는 집에서 쓰고 싶으니까 별도로 값(home)을 지정해서 사용하고 싶었다. 


Grails 에서 제공하는 Environments 는 여기(http://www.grails.org/Environments)에 보면 자세히 설명이 되어 있고, 나는 home으로 사용하고 싶으니까 서버를 실행시에 아래와 같이 입력하면 된다.

grails -Dgrails.env=home run-app

그럼 이 환경을 사용하는 변수들을 설정해 주어야 하는데..

아래와 같이 설정하면된다.

environments {

home {

dataSource {

dbCreate = "create-drop"

url = "jdbc:h2:mem:devDb;MVCC=TRUE;LOCK_TIMEOUT=10000"

}

grails {

neo4j {

type = "embedded"

  location = "/var/neo4j"

}

}

}

development {

dataSource {

dbCreate = "create-drop" // one of 'create', 'create-drop', 'update', 'validate', ''

url = "jdbc:h2:mem:devDb;MVCC=TRUE;LOCK_TIMEOUT=10000"

}  

grails {

neo4j {

type = "rest"

  location = "http://100.0.0.1:7474/db/data/"

}

}

}

}


기본으로 run-app를 하면 development 로 올라가고, 위에 처럼 별도로 home으로 설정해주면 별도로 설정한 값을 가지고 실행된다. 

neo4j가 embedded로 설정되면 설치된 neo4j 플러그인이 자동으로 neo4j를 실행시켜 주므로 따로 설치할 필요는 없다(h2 db 처럼)

neo4j 설정은 아래를 참조.

http://springsource.github.com/grails-data-mapping/neo4j/manual/guide/gettingStarted.html#usingNeo4jStandalone



어제 집에서 이클립스 설치하고 grails 한번 해볼려고 했는데, git 에서 받은 소스가 빌드가 안되는 문제가 발생했다.

회사에서 커밋이 다 안됬나.. 하고 살펴봤는데..

grails.org 들어가보니 central plugin repository가 어제 하루 다운되서 그랬었다는...

다행이 오늘 빌드 해보니까 다 되는구나. ㅋ


하지만.. 띄워 볼수는 없을듯.......... neo4j는 사내 서버에 설치되어 있어서.. 사내에서만 접속된다.

oops .. 


neo4j 설정은 profile 지정이 안되나..


요즘 보는 것..

grails2012. 11. 15. 18:50

요즘 nosql 중 하나인 neo4j를 잠깐 보고 있는데..
셀프 참조하는 객체를 가져와서 도메인 클래스로 매핑해주는 방법을 못찾겠다.

cypher 쿼리로 작성해서 결과를 가지고 오면 RestNode 형식으로 값을 가져 오는데, 이 값이 내가 원하는 domain으로 자동 매핑 되면 좋겠지만.. 안된다. 

아 물론 그전에 최상위 객체를 가져오면 자동으로 셀프 참조하는 객체들 정보도 다 가지고 오면 좋겠다. 하이버네이드에서는 .. 무슨 옵션이더라.. max_fetch_depth 이건가 이걸로 연관된 객체들 값을 가져오는 dept를 지정할수 있었던것 같은데...

어렵구만...

https://github.com/KimJejun/grails-first/blob/master/grails-basic/grails-app/controllers/grails/basic/StartPointController.groovy

여기 소스 보면, show 하는 쪽에서 cypher 쿼리 사용해서 결과 매핑을.. 해야 하는데.. 음 어떻게 좀 자동으로 안되나..



위는 grails 공부하면서 보는 곳.


공부를 사내에서만 해서 -_-;; 

회사에서 지원해주는 내부 클라우드서버 에다가 neo4j 설치해서 사용하는 중이다.



보통 JSON을 사용이 필요할때는 화면에 결과로 만들어줄 때나, rest 한 요청등이 들어 왔을때 결과로 찍어 주기 위해서 사용하는데.. Grails에선 손쉽게 사용할 수 있다.

http://grails.org/doc/latest/guide/theWebLayer.html#xmlAndJSON

위 API 설명..

(groovy에서 제공하는 JsonBuilder를 사용해도 되나.. Grails에서 제공하는 방법이 더 쉽다.)


그냥 간단하게.. json 변환이 필요한 오브젝트에 .encodeAsJSON() 해주면 된다.

같은 방식으로 xml 등등 다양한 방식을 지원.


만약 결과로 json을 보내줘야 한다면 컨트롤러에서 render obj.encodeAsJSON() 하면 되고, 리스트 객체도 같은 방식으로 listObj.encodeAsJSON() 하면 자동으로 json 형식으로 만들어서 뿌려준다.

gsp 뷰에서 json으로 변환하고 싶으면 ${obj.encodeAsJSON()} 으로 사용하면 되고,

만약 obj가 null 이면 null 인 json 객체가 생성된다.