java - 数据库一条记录为什么经过hibernate查询变成一个对象了呢??
阿神
阿神 2017-04-18 10:56:07
0
5
803

今天面试问到了这个问题,他的意思是让剖析源码吗??突然感觉到好奇怪,,ORM框架,不就是这样的吗??求大神解释。谢了

阿神
阿神

闭关修行中......

모든 응답(5)
黄舟

아침에 떠날 때 질문에 너무 성급하게 대답했습니다. 이제 여기서 두 가지 사항을 자세히 이야기하겠습니다.

  • 끈기

  • 역직렬화

그럼 끈기 아래층 사람들 모두가 스토리지 시스템에 개체가 저장되어 있다고 언급했습니다. 언급하신 경우에는 데이터베이스에 저장됩니다. 그런 다음 각 속성은 일반적으로 필드로 사용되며 값은 레코드로 저장됩니다.

그런 다음 역직렬화합니다. 데이터베이스와의 연결은 socket을 통해 이루어지므로 네트워크를 통해 전송한 것이 틀림없습니다. 네트워크에서 객체를 전송해야 한다면 반드시 직렬화해야 합니다. 즉, 데이터베이스 링크를 통해 ResultSet을 얻으면 역직렬화 과정이 완료된 것입니다.

迷茫

그러니 먼저 sql을 자주 사용해보시고 원래의 jdbc를 어떻게 사용하는지 보시면 왜 이런 프레임워크가 있는지 아실 겁니다

PHPzhong

일반적으로 면접관은 JDBC에게 답변을 요청하기 때문에 @波Fumu가 언급한 역직렬화가 면접관이 의미한 바를 의미하지는 않는다고 생각합니다. 기본 JDBC을 사용하여 SQL을 실행하면 ResultSet 개체를 얻을 수 있습니다. 프레임워크는 해당 개체에서 필드 값을 가져와 개체에 캡슐화합니다. 이것이 제가 이해한 바입니다. 비록 저는 ORM을 사용하는 것이 더 편하긴 하지만 실제로 이 Mybatis의 소스 코드를 본 적이 없습니다.

Peter_Zhu

역직렬화와는 아무런 관련이 없습니다.
원래 JDBC 쿼리는 ResultSet입니다. Hibernate는 xml 구성이나 Anotation을 통해 ResultSet의 필드와 객체 속성 간의 대응 관계를 알고 반사 메커니즘을 통해 POJO 객체를 생성합니다.

大家讲道理

우연하게도 질문을 올리신 지 16시간 만에 인터뷰에서 같은 질문을 받았습니다.
이 질문에 대한 제 대답은 기본적으로 이 질문에 대한 @Xing Aiming의 답변과 같습니다. 그런데 반응을 보면 그렇습니다.
개인적으로 이런 질문은 제가 평가하고 싶은 부분을 구체적으로 알 수 없다는 게 가장 의외인 것 같아요.

또 다른 질문이 있습니다. 제대로 들었는지 확인하기 위해 여러 번 확인했지만 여전히 내용을 이해하지 못합니다..

jquery ${}와 #{}의 차이점은 무엇인가요? 중괄호에 주목하세요..

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿