锁定老帖子 主题:我出的面试题
该帖已经被评为隐藏帖
|
|
---|---|
作者 | 正文 |
发表时间:2007-06-13
javastudy 写道 Student s = new Student();
s.setName("aaa"); s.setGrade(1); dao.save(s); s.setGrade(6); dao.load(s,"xxx"); s.setGrade(5); dao.update(s); 有些明白,一条插入,一条更新,一条查询,一条更新,对吗 终于让你发现了,大奖属于你了(没看过幸运52,不知道台词是不是这样,不过估计也差不远,都那么俗) |
|
返回顶楼 | |
发表时间:2007-06-13
什么跟什么,这么个帖子居然这么多人回,我也回了一下,
我猜,估计,大概,貌似,因为,所以,也就二又三分之一条罢~ |
|
返回顶楼 | |
发表时间:2007-06-13
发在招聘区,这是一月经抱怨帖。
|
|
返回顶楼 | |
发表时间:2007-06-14
yuonch 写道 下面一段代码执行过程中将由hibernate产生多少条sql语句,分别是什么:
Student s = new Student(); s.setName("aaa"); s.setGrade(1); dao.save(s); s.setGrade(6); dao.load(s,"xxx"); s.setGrade(5); dao.update(s); 公司网站有电子商务性质,所以对持久化方面要求的会严格一些,招聘几个月,看了2000多份简历,面试也有百来号人,但是这样一道简单的hibernate题目,答对的却只有3、4个 LZ这道题目还是有漏洞的,因为你并没有给出配置文件,所以并不知道s对象的加载方式,它完全有可能是延迟加载(lazy="true"),如果是延迟加载,那么单单一个load是不会执行select语句的,Hibernate只会用CGLIB来生成一个代理类,等到真真执行getXXX方法时候才会执行select,那么该题sql总条数会等于3。 另外如果你的Student对象有关联对象的话,那么Hibernate如果采用立即检索且不设置outter-join,那么与之关联的对象也会被查询出来,这样select语句就会>1条,总条数会大于4条。 所以只有在Student不关联对象,并且采用立即加载的情况下才会执行1条select,只有这种情况下该题的总条数才会等于4。 |
|
返回顶楼 | |
发表时间:2007-06-14
看来大家都有必要恶补一下hibernate
|
|
返回顶楼 | |
发表时间:2007-06-14
引用 LZ这道题目还是有漏洞的,因为你并没有给出配置文件,所以并不知道s对象的加载方式,它完全有可能是延迟加载(lazy="true"),如果是延迟加载,那么单单一个load是不会执行select语句的,Hibernate只会用CGLIB来生成一个代理类,等到真真执行getXXX方法时候才会执行select,那么该题sql总条数会等于3。 另外如果你的Student对象有关联对象的话,那么Hibernate如果采用立即检索且不设置outter-join,那么与之关联的对象也会被查询出来,这样select语句就会>1条,总条数会大于4条。 所以只有在Student不关联对象,并且采用立即加载的情况下才会执行1条select,只有这种情况下该题的总条数才会等于4。 延不延都一样。。。可以去试试 (如果不对请告知。。。) 不过我猜。。。用id的方式会从数据库得到一条新的pojo 而原来的pojo被销毁了。 |
|
返回顶楼 | |
发表时间:2007-06-14
yuonch 写道 下面一段代码执行过程中将由hibernate产生多少条sql语句,分别是什么:
Student s = new Student(); s.setName("aaa"); s.setGrade(1); dao.save(s); s.setGrade(6); dao.load(s,"xxx"); s.setGrade(5); dao.update(s); 公司网站有电子商务性质,所以对持久化方面要求的会严格一些,招聘几个月,看了2000多份简历,面试也有百来号人,但是这样一道简单的hibernate题目,答对的却只有3、4个 这题有相当大的歧义,dao.load(s,"xxx");这句中的load方法不同会决定下面s.setGrade(5)这句是否产生sql语句 |
|
返回顶楼 | |
发表时间:2007-06-14
这种题目你上机考才行,在一定时间里完成,然后说出答案和理由!
否则一点意思也没有!纯粹钻牛角尖的题,真正不会写这样的代码! HIBERNATE也就只是HIBERNATE,一个工具而已,别把它当个宝似的! 至于不知道一些HIBERNATE的细小问题而导致系统出错,这个问题应该放在系统测试上! |
|
返回顶楼 | |
发表时间:2007-06-14
我真服了LZ了。
HIBERNATE明明是面向对象的东西, 你却非要考其中的SQL语句。 无语了。 |
|
返回顶楼 | |
发表时间:2007-06-14
你的题目也没有给出事务是怎么加的,如果是加在service的方法上的,并且这段代码是在service中的,那么我想只会在
s.setGrade(5);时产生一句加载对象的语句。其他插入更新的语句恐怕会到方法返回时才执行吧。 如果事务是加在dao上的,那执行的语句就多了。 |
|
返回顶楼 | |