论坛首页 Java企业应用论坛

我出的面试题

浏览 21708 次
该帖已经被评为隐藏帖
作者 正文
   发表时间:2007-06-14  
aninfeel 写道
楼主应该进教育局,帮国家愚弄学生。

也不用这么刻薄吧,楼主主要的缺点是没有把场景说清楚,如果作为面试,这样出题也未尝不可,大家总要有个讨论的基础嘛。关键是从对这个题目的讨论引出应试者对hibernate的理解程度,而不是就只回答个数目字了事。
0 请登录后投票
   发表时间:2007-06-14  
logo 写道
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")这条语句很蹊跷。因为不论Hibernate的Session接口,还是Spring的HibernateTemplate都没有这个方法签名,所以你这个问题根本答不出来,不知道你说的答案是4条SQL这个结论是怎么得出来的。

如果是这样:
dao.load(Student.class, s.getId())
并且假设上述代码在同一个事务范围内,那么只会产生一条SQL,即insert语句。

所以,我认为你的题目出错了,从某种意义上来说,你对Hibernate的理解也是有问题的。


有这个方法签名啊,在HibernateTemplate里。
0 请登录后投票
   发表时间:2007-06-14  

public Object load(Object object, String str) throws DataAccessException;


请告诉我Spring源代码哪一行有这个方法签名,谢谢。

如果说Student的主键类型是String,那这段代码就大错而特错了。你save之后才能获得Hibernate自己生成的UUID,那程序员是怎么知道这个生成的UUID是“xxx”,如果不是,那么这段程序必然报错。

也就是说真正的答案就是:一条SQL也不会发送,而且程序会抛出异常,哈哈。


0 请登录后投票
   发表时间:2007-06-14  
这个方法倒是有的,HibernateTemplate中:
public void load(final Object entity, final Serializable id) throws DataAccessException{...}


hibernate的session接口中也有定义的:
/**
	 * Read the persistent state associated with the given identifier into the given transient
	 * instance.
	 *
	 * @param object an "empty" instance of the persistent class
	 * @param id a valid identifier of an existing persistent instance of the class
	 * @throws HibernateException
	 */
	public void load(Object object, Serializable id) throws HibernateException;
0 请登录后投票
   发表时间:2007-06-14  
就放一段代码出来,然后就傻傻的问别人执行了几条sql,还很满足的说只有3,4个人答对,你连你的环境都没有说清楚,谁知道你的dao的方法是如何得到session的呢,如果没有用spring,那session是否是同一个,如果用了spring,谁知道你的dao上有没有加事务呢,还很自我陶醉
0 请登录后投票
   发表时间:2007-06-15  
这个帖子评为隐藏帖实为不该!!
就帖子的内容来说没有什么问题,在加上后面的有人回答的答案,对理解HIBERNATE还是有很大帮助的,至于楼主用来考核这个做法对错与否,那是另外一件事!
至少像我一样,什么也不投,就对一些回帖进行评分!
0 请登录后投票
论坛首页 Java企业应用版

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