论坛首页 Java企业应用论坛

我出的面试题

浏览 21709 次
该帖已经被评为隐藏帖
作者 正文
   发表时间:2007-06-14  
jetever 写道
这个有几条有何意义?


生存有什么意义?
0 请登录后投票
   发表时间:2007-06-14  
为什么我怎么测试都是3条sql语句呢?我看了一下spring中HibernateTemplate的load方法,他只是条用session.load()方法,这个方法怎么可能持久化对象(执行update操作)。
0 请登录后投票
   发表时间:2007-06-14  
因为你用的主键没变。。。。(本题的主键是不同的。。)
0 请登录后投票
   发表时间:2007-06-14  
抛出异常的爱 写道
因为你用的主键没变。。。。(本题的主键是不同的。。)

可否说的明白一些呢,谢谢。
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")这条语句很蹊跷。因为不论Hibernate的Session接口,还是Spring的HibernateTemplate都没有这个方法签名,所以你这个问题根本答不出来,不知道你说的答案是4条SQL这个结论是怎么得出来的。

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

所以,我认为你的题目出错了,从某种意义上来说,你对Hibernate的理解也是有问题的。
0 请登录后投票
   发表时间:2007-06-14  
我一早便说了,这个显然和unit of work的实现有关的
0 请登录后投票
   发表时间:2007-06-14  
另外如果这些代码不是在一个事务中,即事务加在dao上,那么跟是否使用了OpenSessionInView也有关,如果没有用OpenSessionInView,那么执行s.setGrade(6);时session已关闭,s是个游离对象,没有显式的更新语句它是不会写到数据中的,所以只会有3条sql。
0 请登录后投票
   发表时间:2007-06-14  
真热闹,不过楼主的题目确实有歧义,但是拿来面试也无妨,但是关键就是应试者如何针对你给出的问题提问了,而不是它的答案,这种题目直接回答有几条sql的都是错误的,从应试者提得问题就可以看出来是否熟悉hibernate了或者说用spring包装的hibernate了呵呵
0 请登录后投票
   发表时间:2007-06-14  
save的时候如果ID用的是序列。
第一句应该是select一个ID。。再insert.
0 请登录后投票
   发表时间:2007-06-14  
lordhong 写道
sg552 写道
总是有人说HIBERNATE比JDBC慢。

我真不明白。90%的场合,HIBERNATE生成的SQL语句都属于专家级别的。什么就慢了?

想快,不要用JDBC了,直接用汇编吧!

hibernate对enumeration的支持是0, 并非所有情况下都用hibernate.


你可以使用UserType或者使用JPA提供的支持

@Enumerated(EnumType.STRING)
@Column(name = "RATING", nullable = false, updatable = false)
private Rating rating;
0 请登录后投票
论坛首页 Java企业应用版

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