今天面试问到了这个问题,他的意思是让剖析源码吗??突然感觉到好奇怪,,ORM框架,不就是这样的吗??求大神解释。谢了
闭关修行中......
之前早上出门答得太急了,现在来细说一下,这里可以提到两点:
持久化
反序列化
那么持久化楼下各位都提到了,即将一个对象保存到存储系统中。在你说到的情况下,是保存到数据库。那么一般是将各个属性作为字段,然后保存其中的值成为一条记录。
然后是反序列化。跟数据库建立连接的是通过socket的,那么毫无疑问是走了网络,你在网络中需要传输一个对象就得对其进行序列化。也就是说:在通过数据库链接拿到 ResultSet 的时候就已经完成了反序列化过程。
socket
所以先常常sql, 看用下原始的jdbc , 你就知道为什么会有这框架了
一般面试官问到JDBC就到底了吧,所以@泊浮目 所说的反序列化我觉得不是面试官的意思。用原生的JDBC执行SQL可以拿到ResultSet对象,框架不过是从里面取一个个字段值,然后封装到一个对象中而已。我的理解就是这样,也确实没看过这种ORM的源码,虽然我用Mybatis比较顺手。
JDBC
SQL
ResultSet
ORM
Mybatis
这个和反序列化没什么关系吧。原始JDBC查询出的是ResultSet,Hibernate通过xml配置或Anotation知道了ResultSet中字段和对象属性的对应关系,然后通过反射的机制生成POJO对象。
这么巧,你发问题十六个小时后我面试被问到了同样的问题.我的回答基本和@邢爱明在本问题的回答一致.但是看反应,感觉并不是面试官想要的.个人觉得这种问题挺奇葩的.主要get不到其具体想考核哪方面的东西.
还有一个问题,我确认了几遍确定没听错,但是到现在也没弄懂问的是什么..jquery ${}和#{}有什么区别,注意是大括号..
之前早上出门答得太急了,现在来细说一下,这里可以提到两点:
持久化
反序列化
那么持久化楼下各位都提到了,即将一个对象保存到存储系统中。在你说到的情况下,是保存到数据库。那么一般是将各个属性作为字段,然后保存其中的值成为一条记录。
然后是反序列化。跟数据库建立连接的是通过
socket
的,那么毫无疑问是走了网络,你在网络中需要传输一个对象就得对其进行序列化。也就是说:在通过数据库链接拿到 ResultSet 的时候就已经完成了反序列化过程。所以先常常sql, 看用下原始的jdbc , 你就知道为什么会有这框架了
一般面试官问到
JDBC
就到底了吧,所以@泊浮目 所说的反序列化我觉得不是面试官的意思。用原生的JDBC
执行SQL
可以拿到ResultSet
对象,框架不过是从里面取一个个字段值,然后封装到一个对象中而已。我的理解就是这样,也确实没看过这种ORM
的源码,虽然我用Mybatis
比较顺手。这个和反序列化没什么关系吧。
原始JDBC查询出的是ResultSet,Hibernate通过xml配置或Anotation知道了ResultSet中字段和对象属性的对应关系,然后通过反射的机制生成POJO对象。
这么巧,你发问题十六个小时后我面试被问到了同样的问题.
我的回答基本和@邢爱明在本问题的回答一致.但是看反应,感觉并不是面试官想要的.
个人觉得这种问题挺奇葩的.主要get不到其具体想考核哪方面的东西.
还有一个问题,我确认了几遍确定没听错,但是到现在也没弄懂问的是什么..
jquery ${}和#{}有什么区别,注意是大括号..