** Hibernate(ORM) history
- 기존 RDB와 OOP 사상이 맞지 않는다는 것에 대해 다들 고민한다.
- EJB로 가면서 Entity Bean을 만들면서 RDB와 OOP접목에 길이 생김
- 근데 실제 프로젝트에서 적용하기 무리
- 좀 쉽게 가자는 의도에서 OBJ, Hibernate 등 opensource 진영에서 RDB - OOP mapping framework 만들음
- OpenJPA, TopLink 등 상용프로그램도 나온다.
- 이때 뻘쭘해진 SUN에서 우리가 RDB - OOP Spec 만들어 볼까 하고 JDO 발표했다가 개발자들한테 욕먹고,
정신 못차렸단 소리 들음
- EJB 2.0 -> 3.0으로 가면서 Entity Bean을 포기하고 JPA(ORM) spec을 만들음
- Hibernate도 JPA Spec 기반임
** hibernate 객체 상태와 method
- transient : 그냥 메모리상에 생성된 객체, DB에 저장되지 않았다.
- persistent : DB에 저장되어 있어서 영속성이 확보된 상태
- detached : 이거 뭔지 잘 모르겠음. persistent 객체 가져온 후 session close 시킨 이후 객체 말하나?
- 가끔 list로 collection 가져와서 iteration 돌 때 session close 됐다고 에러 떠서 OpenSessionInView로 설정한 일이 있었는데.. 그게 혹시 detached 상태의 객체를 iterate 돌아서 그런 걸까? ** Hibernate mapping - 방향성 중요하다. - <one-to-one> : 1:1 => 한명의 Person은 한명의 배우자만 갖을 수 있다.
- <many-to-one> : 1:n => 한명의 User는 한개의 Address를 갖는다. / 하나의 Address는 여러 User가 갖을 수 있다.
- <one-to-many> : 1:n => 한명의 Person은 여러개이 Book을 갖는다 / Book은 한명에게만 소유된다.
- Table 구조로 보면 <one-to-one>이나 <one-to-many>나 같은 설계일 텐데 객체에서는 다른관계 ** Hibernate 실습함 - simplewiki에 JDBC Templete로 구현되었던 것을 Hibernate로 교체함 ** ibatis가 하는 일 - datasource 관리함 - sql문 자기가 갖고 있음 - parameter setting 지가 함 => Spring JDBC Templete에서 클레스로 만들 수 있었음 - excute - result mapping 지가 함 => Spring JDBC Templete에서 클레스로 만들 수 있었음 - connection close 지가 함
'Framework' 카테고리의 다른 글
멀캠교육요약 4일차-Spring,Hibernate,ibatis (0) | 2015.07.19 |
---|---|
멀캠교육요약 3일차(SpringMVC)-Spring,Hibernate,ibatis (0) | 2015.07.19 |
멀캠교육요약 3일차-Spring,Hibernate,ibatis (0) | 2015.07.19 |
멀캠교육요약 2일차(AOP)-Spring,Hibernate,ibatis (0) | 2015.07.19 |
멀캠교육요약 2일차-Spring,Hibernate,ibatis (0) | 2015.07.17 |