hibernate误区总结

回忆初学的时候开发hibernate有n多误区,大概列列以后想到再更新

1.性能误区
当我们调试的时候经常发现打印hql是n+1个查询,于是觉得1个查询比n+1个执行效率要高,特别是在初学调试的时候没开启二级缓存很明显。
其实,随着二级缓存的使用,和更多的并发,使用原生方法性能会优化很多。
当然也可以用hql和自定义的缓存策略。

2.一对多可能出现的错误
could not initialize proxy – no Session
一对多的时候设置FetchType.LAZY可能出现
网上解释有:
不使用LAZY,这个不太靠谱就不说了,而且产生连表查询,可能影响性能

靠谱的方式是web.xml设置OpenSessionInViewFilter
同时需要注意的还有要用 Hibernate 管理session
使用 SessionFactory.getCurrentSession 而不是 openSession
使用后不用手动关闭sessin,Hibernate会自己控制。
否则自己关闭了session就会报no Session的错误

同时 junit4中使用lazy测试也是可以的,不需要web.xml的OpenSessionInViewFilter配置

其他的想到再补

mongoDB ide试用

找了下ide工具
mongoVUE 1.6.9 和 Robomongo 0.8
mongoVUE 没连上,用ssh账号都没连上,而且连接过程没进度条,直接阻塞了ui线程,卡住了。
可能是配置问题,但印象很不好。

Robomongo 用ssh账号连上了,没到1.0的版本,有的地方没有按钮直接用文字代替了,不过不影响使用。登录过程也没卡住,印象很好,给个好评

Robomongo 0.8.4RC
Robomongo 0.8.4RC