JCO에서 개최하는 한국자바개발자 컨퍼런스가 10회째 "Fire up your passion Again!"라는 이름으로 개최되었다. 나는 경력이 짧은 관계로 9회째부터 이 컨퍼런스를 알게되었는데 9회째는 신청만 해놓고 그날 주말출근을 했던가 그러면서 결국에는 참가를 못했었다. 그래서 이번엔 기대를 좀 했는데 다행히 별일 없이 참가할 수 있었다. Fire up Your passion Again!말 왠지 좀 인상적이다. ㅎ
13일날 신청접수 시작하자마자 냉큼 가서 신청했다. 확실히 규모가 있어서 그런지 커리큘럼이 상당히 다양했는데 몇가지 말고는 내가 크게 관심가지는 부분이 아니었다. 내가 관심이 없는 쪽이거나 아님 나에겐 좀 어려운 부분이거나... 그래서 고민하다가 듣기만 하는건 많이 듣기도 했고 관심가는 부분이 Hands on Lab쪽에 있어서 핸즈온랩 2개로 선택해 버렸다.. ㅋㅋㅋ
From JDBC to Hibernate[제대로 이해하고 사용하죠] - 박찬욱
난 아직 iBatis도 못 써봤지만 iBatis와는 다르게 ORM(Object-Relational Mapping)을 사용하여 기대감을 많이 모으고 있는 Hibernate에 대해서 좀 알고 싶어서 들었는데 결론부터 얘기하자면 나한테는 너무 어려웠다. 하이버네이트에 대한 내용자체도 그러했지만 내 자바수준과 하이버네이트 사이에 알아야 할 많은 것들을 모르고 있다보니 알아듣기가 힘들었다.
어쨌든 박찬욱님 말씀은 하이버네이트를 그냥 단순테크닉정도로만 생각하고 API파악정도로 프로젝트에 도입하려고 하면 오히려 불편한 점이 많다. 실제로 하이버네이트가 어떤 원리로 돌아가는지 이해해야 제대로 사용할 수 있다고 하셨다.
제목에서 나온것처럼 주로 JDBC랑 Hibernate를 동작에 대해서 비교설명을 하셨다. 하이버네이트의 객체에서 Persistent는 연결되어 있는 상태이고 Detached는 연결이 끊어진 상태이기 때문에 Detached상태인 객체에 값을 바꾸어 봐야 전혀 적용이 되지 않는다. 그렇기 때문에 Object의 상태가 어디에 있는가에 대해서 잘 파악하고 있어야 한다. 그리고 하이버네이트는 엔티티요청을 하면 Session이 디비에서 값을 가져와서 Object로 넘겨주는데 이때 Session이 Persistence Context에 캐쉬해 놓고 다시 요청했을 때는 디비에 접속하지 않고 캐쉬해 놓은 값을 돌려준다.
하이버네이트를 사용하면 Object를 이용해서 디비를 조작하기 때문에 실제 Query가 제대로 만들어 져서 날라가는지 확인해 보아야 한다. 의도하지 않은 쿼리형태로 만들어 질수도 있다. 쿼리는 ANSI로 작성해주며 다이얼렉트라는 개념으로 설정파일에서 데이터베이스 형태를 지정해 줌으로써 다이얼렉트 변경만으로 다른 데이터베이스로 변경할 수 있으면 데이터베이스간의 차이점은 하이버네이트가 해결해 준다. 오라클의 Function같은 것은 그냥 사용해도 되는데 하이버네이트가 모르는 Function은 그대로 실행시켜주기 때문이다. 또한 Write-Behind라는 개념으로 바로 쿼리를 실행하지 않고 Flush할 때 쿼리를 실행한다. 객체 로딩과 실제 사용간에 시간차가 존재하기 때문에 이에 대한 부분은 조심해야 한다.
이 외에도 여러가지를 설명하셨는데 내가 다 흡수하기는 힘들었다. 요즘 자바세미나 갈때마나 느끼는 건 공부해야 될 게 정말 많구나~ 하는거랑 역시 대세는 Spring인것 같다. Spring을 모르니까 세미나갈때마다 기본적인 이해도를 까먹고 들어간다. 그리고 한번도 못써봤지만 어노테이션은 상당히 중요한 기술인것 같다. 요즘 가는데마다 어노테이션이 등장하네....
마지막으로 현실적인 얘기를 하셨다. 하이버네이트를 실제 프로젝트에 적용하는게 현실적으로 쉽지 않다는 얘기였다. 일단 우리같은 개발자가 이런 기술의 결정할 권한을 안가지고 있는 경우도 많고 하이버네이트를 사용하려면 어플리케이션 자체가 모두 Object중심으로 구현되어 있어야 하는데 이게 실제로는 만만치 않은 일이고 다른 팀원들의 하이버네이트에 대한 이해도나 인수인계할 때 하이버네이트로 제작된 게 문제가 될지 안될지에 대한 것도 현실적으로 적용하기 어려운 점이다. 물론 하이버네이트의 장점이 충분히 있기 때문에 솔루션등에는 최적이며 현재도 사용하고 있는 곳들이 꽤 있다고 하셨다.
JRuby on Rails (와 함께하는 짧은 휴식 시간) - 정지웅
Ruby on Rails는 맛정도는 봤지만 계속 들리던 JRuby는 자료도 많지 않고(심하게 찾아본적은 없긴 하지만...) 제대로 파악할 수가 없었다. 세미나 참석전에 내가 파악한 거는 Ruby on Rails가 장점은 있지만 아직 신뢰성에서는 부족함이 있기 때문에 루비를 자바환경에 올려서 개발의 편리함과 신뢰성을 모두 취한다는 것 정도만 이해하고 있었는데 어떻게?라는 궁금증이 있어서 참석했다.
오전세션인 하이버네이트에 비해서 JRuby는 내가 이해하기에 난이도가 적당해서 딱 좋았다. 그래도 Ruby on Rails 책 한권 봤다고 루비온레일즈의 개념이나 방식은 살짝이나 이해하고 있던 덕분에 흘러가는 분위기를 이해할 수 있었다. 비록 내 셋팅도 제대로 되지 않았고 시간관계상 후반부는 코드설명으로 진행되었지만 세미나 끝나고 바로 내가 코딩할 수 있는 수준을 기대한 것도 아니고 이해하는 수준에서는 큰 무리가 없었다.
더군다나 JRuby가 루비랑 자바가 섞여있는건가?하는 내 생각과는 다르게 개발은 순전히 Ruby on Rails개발과 동일하게 진행되고(물론 Java의 라이브러리를 끌어다 쓸 수 있긴 하지만 문법은 순전이 Ruby인것 같드라...) 개발이 완료되고나면 wabler라는 걸 이용해서 war로 배포하고(jruby -S warbler war) 자바서버환경에 올릴수 있기 때문에 실제 개발자체는 Ruby on Rails라면 크게 문제가 없을 듯 하다.(물론 실제 내가 개발해 본건 없을듯 하다.) JRuby는 그냥 JVM에서 동작하는 Ruby Interpreter였고 진짜로 양쪽의 장점을 완전히 살려낸 시스템이었다..(당연히 실제로 하면 어떤 이슈가 또 있는지는 내가 아직 모르겠지만...)
세션진행도 상당히 괜찮았던것 같다. 루비의 특성을 잘 살려서 요구사항이 바뀌면서 계속 진행되는 라이브코딩은 루비의 장점에 대한 전달도 잘 되고 어떤 식으로 코딩하는 지도 볼 수 있어서 참 좋았던것 같다. 루비온레일즈를 계속 하려다가 미루고 있다가 이젠 좀 할 수 있는 여건이 된 터라 이번 세션은 JRuby를 파악할려고 했었는데 오히려 루비온레일즈에 대해서 얻은게 훨씬 많다.(뭐 비슷하단건 알고 있었지만...)
기술적으로도 그렇지만 정지웅님이 말씀하신 마지막 말도 맘에 와닿았다. 그래서 루비에 관심을 가지고 있었던 거긴 하지만 좀 속 시원히 정리됐다고 해야하나?
"우리는 그동안 무언가를 잊고 있던 것은 아니었을까요?"결국은 이게 핵심이 아닌가 싶다... 흠...
"견고하지만 때론 무겁기만한 기술들에 눌려서,"
"기술을 통해 이루고자 했던 보다 더 중요한 것들을 말이죠."
"우리가 만드는 호나경을 사용하는 비즈니스의 실제 성동이나"
"우리가 만드는 프로그램을 쓰는 사용자의 환한 웃음"
"무엇보다 우리 스스로가 느꼈던 창조하는 Creator로써의 즐거움을..."
"기술적 문제와 그 무게에 눌려 잠시나마 잊고 있던 건 아닐까요?"
"가끔씩은 잊고 있던 그 가치들을 되새겨 보는 작은 휴식을 가져보는 건 어떨까요?"
"개발자에게 작은 여유를 제공하는 레일즈와 함게 말이죠."
세미나 듣다가 책도 한권얻었다. REST에 관심있어서 얼마전에 책을 봤더니만 세미나중 REST얘기가 나와서 REST들어본 사람 있냐고 해서 손들었더니 책을 주셨다~~ ㅎㅎㅎ
마침 사고 싶었던 책이었는데... ㅋㅋㅋ 컨퍼런스 앞에 부스에서 책팔길래 몇권 사긴 했는데 이렇게 종은 정보에 책까지 얹게 되는구만..
그나저나 뭐 질문에 대답한 것도 아니고 들어본적 있냐고 해서 손든것 뿐인데 책을 받으니까 좀 민망하긴 하네.. ㅎㅎㅎㅎㅎ
어쨌든 이번 세미나는 내가 좀 피곤했다. 핸즈온랩을 하는 사람은 노트북 셋팅해 오라고 했는데 내가 마침 노트북에 우분투를 올리고 윈도우를 가상으로 올려만 놓은 상태였기 때문에 셋팅하는데 애먹었다. 더군다나 설명한대로 잘 안되가지고.... 흠... (요즘은 5인치급 놋북으로 이런 거 하긴 좀 힘드네 하는 생각도 든다.) 늦게까지 셋팅해보다가 5시반에야 잤다. 개회식을 제끼고 세미나 시간에 맞춰 겨우 도착하긴 했지만 피곤해서 좀 힘들었네... ㅎ
핸즈온랩이라 뭐 이동도 없고 그냥 듣고 빠지고만 해서 진행은 잘 모르겠기는 한데 컨퍼런스 진행에 큰 문제는 없었던 듯 하다. 9회때는 말이 좀 있었던 것 같던데... 좀 피곤했지만 갔다온 보람이 있던 컨퍼런스.. ㅎ
저도 REST 아는데! 책을!!! ㅋㅋㅋ
어제 사람도 많지 않고 좋았습니다~
다들 경품을 많이 타신것 같아요.
ㅎㅎㅎ 저만 REST를 알지는 않았을텐데 책받아서 좀 민망하긴 했죠.
상욱님도 블로그 가보니 키보드/마우스 득템하셨네요. ㅎㅎ
생각보다 사람이 많지 안드라고요. 핸즈온랩은 썰렁할 정도라 오히려 집중되고 좋았죠.
outsider 님도 가셨었군요.
미리 알았더라면 가서 인사라도 드릴껄 그랬습니다.
저는 RIA 섹션쪽에서 계속 앉아 있었는데요..
JavaFX에 대해서 좋은 정보를 많이 얻을 수 있어서 좋았습니다.
안타깝지만 ^-^ 검은손들에 의해서 저에게 올 티셔츠가 다른 분에게 간 것만 빼면
즐거운 하루였던것 같습니다.
이런.. 좋은 기회였는데 인사도 못드렸네요. 몇분 얼굴 아시는 분들은 어제 인사드리긴 했는데요... RIA섹션쪽에 좀 놀러갈걸 그랬네요...
핸즈온랩만 듣다 보니 2층에서만 왔다갔다 하다가 왔습니다. ^^;;
JavaFX도 좀 관심은 가지고 있는데 신상철님 온라인 강의는 신청해 놓고 전혀 참여도 못하고 있네요.. 쩝...
저도 피곤한 몸을 이끌고 참여했는데 가길 잘했다는 생각이 든 하루였습니다.
다음에는 인사 드릴 기회가 있기를... ^^