2007/03/08 16:22 Developer
iBATIS를 사용할 때 Composite 도메인 객체에 resultMap을 어떻게 담아야 할까?
자바빈 규약에 맞추어서 다음과 같은 프러퍼티에 값을 셋팅을 하고 싶다.
post.postOptions.openType
iBATIS는 어떻게 작동을 할까? PostOptions객체를 만들어서 populate를 한 다음 Post에 setPostOptions을 이용해서 VO를 셋팅한다.
난 post.postOptions으로 만들어진 객체를 찾은 후에 postOptions에서 setter를 찾아서 populate를 하길 원했는데..흑흑
내가 원했던 코드
iBATIS 덕택에 수정한 코드
물론 이렇게 해도 된다.
BeanUtils클래스나 spring의 프러퍼티를 접근하는 API를 이용해서 좀더 깔끔하게 만들 수는 있지만, 여전히 종속적인 코드가 들어간다.
결론을 얘기하자면, PostOptions에 대한 get을 만들고, Post에 대한 PostOptions객체를 immutable하게 만들려는 나의 생각은 setPostOptions(PostOptions postOptions)와 함께 날라가 버렸다.
프레임워크를 사용을 하다가 보면, 의도하지 하게 내부 프러퍼티에 대한 접근을 오픈을 해야 하는 경우가 종종 있다. spring을 사용을 하다가 보면 만은 setter메소드가 필요하게 된다. default접근자로 해결을 해야 할 것도 어쩔 수 없이 public으로 하는 경우도 종종 있다.
post.postOptions.openType
iBATIS는 어떻게 작동을 할까? PostOptions객체를 만들어서 populate를 한 다음 Post에 setPostOptions을 이용해서 VO를 셋팅한다.
난 post.postOptions으로 만들어진 객체를 찾은 후에 postOptions에서 setter를 찾아서 populate를 하길 원했는데..흑흑
내가 원했던 코드
class Post{
private final PostOptions postOptions = new PostOptions();
public PostOptions getPostOptions()
}
}
private final PostOptions postOptions = new PostOptions();
public PostOptions getPostOptions()
}
}
iBATIS 덕택에 수정한 코드
class Post{
private PostOptions postOptions;
public void setPostOptions(){
}
public PostOptions getPostOptions()
}
}
private PostOptions postOptions;
public void setPostOptions(){
}
public PostOptions getPostOptions()
}
}
물론 이렇게 해도 된다.
class Post{
private final PostOptions postOptions = new PostOptions ();
public void setPostOptions(){
postOptions.setXXX(XXX);
postOptions.setXXX(XXX);
postOptions.setXXX(XXX);
}
public PostOptions getPostOptions()
}
}
private final PostOptions postOptions = new PostOptions ();
public void setPostOptions(){
postOptions.setXXX(XXX);
postOptions.setXXX(XXX);
postOptions.setXXX(XXX);
}
public PostOptions getPostOptions()
}
}
BeanUtils클래스나 spring의 프러퍼티를 접근하는 API를 이용해서 좀더 깔끔하게 만들 수는 있지만, 여전히 종속적인 코드가 들어간다.
결론을 얘기하자면, PostOptions에 대한 get을 만들고, Post에 대한 PostOptions객체를 immutable하게 만들려는 나의 생각은 setPostOptions(PostOptions postOptions)와 함께 날라가 버렸다.
프레임워크를 사용을 하다가 보면, 의도하지 하게 내부 프러퍼티에 대한 접근을 오픈을 해야 하는 경우가 종종 있다. spring을 사용을 하다가 보면 만은 setter메소드가 필요하게 된다. default접근자로 해결을 해야 할 것도 어쩔 수 없이 public으로 하는 경우도 종종 있다.