블로그 이미지
Max.

calendar

1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        

Notice

2009.10.06 09:20 개발관련
RC2가 생각보다 빨리 발표 되었네요. 좀 성급하다할 정도로 말이죠. 지금도 지속적으로 업데이트 되고 있는데, 좀 산만해 보입니다. 이렇게 서두르는 것은 가을 세미나 때문일까요? 아무튼, 버그 픽스 되자 마자 RC2를 바로 발표해버리는 것이 뭔가 쫏기고 있는듯한 인상을 줍니다. 아래는 RC2 발표 되기전인 Revision 319 버전일때 RC1과 RC2의 비교 테스트한 내용들 입니다.


1. 프로젝트 생성하기
Befer 이하 [B]
create project -topLevelPackage kr.js.sms -projectName max

After 이하 [A]
project --topLevelPackage kr.js.sms --projectName max --java 6

create명령 대신에 project명령으로 바뀌고, 옵션도 --로 바뀌었다. 새로 축된 --java 옵션도 있다. 위명령으로 생성되는 기본 디렉토리엔 WEBAPP가 포함되어 있어서 이젠 기본적으로 웹프로젝트를 염두해 두고 있다는것이 의외다.

2. 로깅 설정하기
[B]
configure logging -level DEBUG -package WEB

[A]
logging setup --level DEBUG --package ALL_SPRING

기존의 configure명령이 없어지고 logging명령으로 바뀌었다. --package옵션으로는 더 다양한 값들은 제공하고 있다.(ALL_SPRING, AOP, PERSISTENCE,  PROJECT,  ROOT,  SECURITY, TRANSACTIONS, WEB)

3. ORM 설정하기
[B]
install jpa -provider HIBERNATE -database ORACLE

[A]
persistence setup --database ORACLE --provider HIBERNATE

install명령이 제거 되었고, persistence명령이 추가 되었다. database.properties 핸들링 명령도 약간 바뀌었는데 아래와 같다.
[B]
database set -key database.url -value jdbc:oracle:thin:@127.0.0.1:1521:XE
database set -key database.username -value max
database set -key database.password -value 1111

[A]
database properties set --key database.url --value jdbc:oracle:thin:@127.0.0.1:1521:XE
database properties set --key database.username --value max
database properties set --key database.password --value 1111


4. Domain Entity 추가하기
[B]
new persistent class jpa -name ~.domain.Account

[A]
entity --name ~.domain.Account --table t_account

new persistent class jpa라는 명령에서 entity로 바뀌었다. 훨씬 깔끔해 졌다. --table같은 옵션도 추가 되었고, 기타 추상(abstract),확장(extends) 같은 명령 등이 포함되었다. 특히 --identifierColum 과 --identifierField이 추가 되었는데 무슨 차이일까~요?

5. Entity field 추가하기
[B]
add field string -class ~.domain.Account -fieldName accountId -notNull -sizeMin 2 -sizeMax 20
add field number -class ~.domain.Account -fieldName totalPoint -type java.lang.Long -decimalMin 0
add field date jpa -class ~.domain.Account -fieldName regDate -type java.util.Date

[A]
field string --class ~.domain.Account --fieldName accountId --notNull --sizeMin 2 --sizeMax 20
field number --class ~.domain.Account --fieldName totalPoint --type java.lang.Long --decimalMin 0
field date --class ~.domain.Account --fieldName regDate --type java.util.Date

기존에 add field명령으로 시작 되었던것들이 모두 field명령으로 바뀌었지만, 특별히 달라진건 없다.

6. Integration Test 하기
[B]
new integration test -entity ~.domain.Code

[A]
test integration --entity ~.domain.Code

테스트 관련되어서 보다 직관적이게 test명령으로 시작하게 바뀌었다. 새로 추가된것은 'test mock' 명령이다.

7. 관계 설정하기
[B]
add field set jpa -class ~.domain.Account -fieldName points -element ~.domain.Point
add field reference jpa -class ~.domain.Point -fieldName account -type ~.domain.Account

[A]
field set --class ~.domain.Account --fieldName points --element ~.domain.Point
field reference --class ~.domain.Point --fieldName account --type ~.domain.Account

add로 시작되는 명령 대신에 field로 시작되고, 서너개의 구분 명령을 2개의 구분 명령으로 단순화 하였다.

8. Controller 추가하기
[B]
new controller automatic -name ~.web.AccountController -formBackingObject ~.domain.Account

[A]
controller scaffold --name ~web.AccountController --entity ~.domain.Account --dateFormat yyyy-MM-dd

기존의 명령이 controller scaffold으로 변경되여 무엇이 생성될지 좀더 직관적이게 네이밍되었다. 옵션으로 --dateFormat이 추가 되었고, 모든 컨트롤러를 생성하기 위한 'controller all' 명령이 새로 추가 되었다.

9. 통합된 Maven 명령 사용하기
perform clean     perform command   perform eclipse   perform package   perform tests
Roo shell 안에서 위와 같은 Maven wrapper클래스를 제공한다.(Rev. 319 버젼에서는 잘 안된다. roo shell 밖에서는 잘됨.)

10. 기타 바뀐 명령들
[B]
new selenium test -controller ~.web.AccountController

[A]
selenium test --controller kr.js.sms.web.AccountController

[B]
list finders for -class ~.domain.Account

[A]
finder list --class ~.domain.Account


[B]
install finder -finderName findAccountsByAccountName -class ~.domain.Account

[A]
finder add --finderName findAccountsByAccountIdLike --class ~.domain.Account


[B]
install security

[A]
security setup


[B]
install email provider -hostServer localhost -protocol SMTP -port 25

[A]
email sender setup --hostServer localhost --protocol SMTP --port 25


11. ITDs 파일의 변화.
319 리비젼의 백미는 ITDs로 생성된 *.aj파일들이다. 말이 필요없다. 아래 생성된 파일을 보라. 이것이 주는 의미는 상당하다. 무엇이 상당하다는 걸 까~요?

[B]
privileged
aspect Article_Roo_Entity {
   
    @javax.persistence.PersistenceContext   
   
transient javax.persistence.EntityManager Article.entityManager;   
   
    @javax.persistence.Id   
   
@javax.persistence.GeneratedValue(strategy = javax.persistence.GenerationType.AUTO)   
    @javax.persistence.Column(name = "id")   
   
private java.lang.Long Article.id;   
   
    @javax.persistence.Version   
   
@javax.persistence.Column(name = "version")   
   
private java.lang.Integer Article.version;   
   
    public java.lang.Long Article.getId() {   
        return this.id;       
    }
...



[A]
privileged
aspect Account_Roo_Entity {
   
    @PersistenceContext   
   
transient EntityManager Account.entityManager;   
   
    @Id   
   
@GeneratedValue(strategy = GenerationType.AUTO)   
    @Column(name = "id")   
   
private Long Account.id;   
   
    @Version   
   
@Column(name = "version")   
   
private Integer Account.version;   
   
    public Long Account.getId() {   
        return this.id;       
    }
...

저작자 표시
신고
posted by Max.
TAG ,