论坛首页 Java企业应用论坛

我出的面试题

浏览 21712 次
该帖已经被评为隐藏帖
作者 正文
   发表时间: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,不知道台词是不是这样,不过估计也差不远,都那么俗)
0 请登录后投票
   发表时间:2007-06-13  
什么跟什么,这么个帖子居然这么多人回,我也回了一下,
我猜,估计,大概,貌似,因为,所以,也就二又三分之一条罢~
0 请登录后投票
   发表时间:2007-06-13  
发在招聘区,这是一月经抱怨帖。
0 请登录后投票
   发表时间: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。
0 请登录后投票
   发表时间:2007-06-14  
看来大家都有必要恶补一下hibernate
0 请登录后投票
   发表时间: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被销毁了。
0 请登录后投票
   发表时间: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语句
0 请登录后投票
   发表时间:2007-06-14  
这种题目你上机考才行,在一定时间里完成,然后说出答案和理由!
否则一点意思也没有!纯粹钻牛角尖的题,真正不会写这样的代码!
HIBERNATE也就只是HIBERNATE,一个工具而已,别把它当个宝似的!
至于不知道一些HIBERNATE的细小问题而导致系统出错,这个问题应该放在系统测试上!
0 请登录后投票
   发表时间:2007-06-14  
我真服了LZ了。

HIBERNATE明明是面向对象的东西,

你却非要考其中的SQL语句。

无语了。
0 请登录后投票
   发表时间:2007-06-14  
你的题目也没有给出事务是怎么加的,如果是加在service的方法上的,并且这段代码是在service中的,那么我想只会在
s.setGrade(5);
时产生一句加载对象的语句。其他插入更新的语句恐怕会到方法返回时才执行吧。

如果事务是加在dao上的,那执行的语句就多了。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics