[푸념] 자바가 왜 자바 빈즈 어쩌구 했는지 이제서야 이해가 가네요.

emptynote의 이미지

개인 프로젝트 하면서 동적 클래스 로딩으로 IO 를 재 로딩 할려고 하는데,

동적 클래스 로딩 + 리플렉션 + 자바빈즈 가 몽땅 한 묶임임을 이제서야 알겠네요.

인터넷에 다 있지만 왜? ㅠ.ㅠ 따로 국밥식으로 이야기해서

사람 한 순간에 바보로 만드는가? 남탓만 하는 비겁한 변명을 해 봅니다.

자바는 하이브리드 언어로서 인터프린터 언어 특성도 가졌는데,

동적 클래스 로딩을 다루면서 편의성이라는 면에서 자바 스크립트 eval 이 정말로 부럽네요.

리플렉션으로 n 차원을 가지는 데이터 구조를 다루는것은 적당하지 않을것같아,

n 차원을 1차원으로 다루는 {key,value} map 으로 전환을 해야겠네요.

다만 제가 생각하는 map의 단점은 VO 연결성이 없다는것인데요.

이점은 기존 VO 처럼 작성을 하고 키값을 파싱해서 리플렉션으로 항목명 검증을 하면 어떻까 생각이 드네요.

리플렉션이 속도가 늦기때문에 개발 서버에서만 설정파일로 on 시켜주고 리얼 서버는 off 시켜주면 좋지 않을까 합니다.

열심히 코딩해야겠네요. 1분이라도 응원을 해 주셧으면 좋겠네요 ^^;

sykelos의 이미지


너무 혼자서 삽질하지 마시고
대가들의 조언도 들어가면서 내공을 쌓으세요.. 책을 많이 보시구여
명확한 이해를 위해서 말이죠

emptynote의 이미지

멘붕 상태라 답글이 늦었습니다.

그래도 따뜻한 말씀 감사하게 생각합니다.

IO 해쉬 전환 그것이 문제네요.

emptynote의 이미지

해쉬맵으로 갈려다가 아래 참고 사이트에서 내용을 보고 고민하고 해서

맘이 또 변할수있겠지만,

현재 결론은 자바빈즈 일부 내용만 차용할려고 합니다.

아직은 생각만 하는 단계입니다. 구현이 제대로 되면 또 후기 올리겠습니다.

참고 사이트 : http://www.ologist.co.kr/344

get, set 만드는것이 짜증이지만

DTD 에 대응하는것을 만들고 품질을 검증하고

또 그것을 운영하는 수고에 비하면 덜 한것 같아서 차용했습니다.

다행이도 이클립스에서 기능을 제공하구요.

빈즈에 대한 제 생각은

(1) 리플렉션 사용으로 속도가 걱정이다.

역자주) 동적 클래스 비용 + XML의 DTD 에 대응하는 기능 비용이라고 생각합니다.
XML의 DTD 에 대응하는 기능은 예를 들면 회원가입 메시지라고 할때
아이디와 비밀번호를 갖는 회원 가입 메시지임을 검증시키는 기능을 말합니다.

(2) 그래도 해쉬맵처럼 런타임 에러 발생을 피할수가 없다.

역자주) set/get은 마치 해쉬맵 접근법과 유사합니다.
동적으로 클래스를 로딩하다 보면 서로 연관성이 깨질 수 있는데
이때 동적으로 사라진 멤버 변수에 대해서 접근해서 에러가 나오겠지요.

(3) 동적 클래스만의 구조적인 특성이 있네요.
정적인 영역인 부모 클래스로 동적 클래스를 다룬다는 점이 핵심인듯합니다.
이 제한점 때문에 프로그램 구조가 정해 지네요.

예를 들면
회원 {
아이템 {
갯수
} item;
}
이런 구조가 회원, 아이템 모두 동적 클래스 대상이라면,
회원 extends beans {
아이템 item;
}
아이템 extends beans {
갯수
}

이렇게 바뀌어야 하네요.

주의점) 이글는 자바빈즈와 동적 클래스를 처음 접하는 사람의 글입니다. 잘못된 내용이 있을 수 있으니 주의하세요.