一个关于hibernate的缓存问题

当hibernate查询数据的时候,会首先查询第一级缓存,如果查到即返回数据。否则如有第二级缓存那么就继续查第二级缓存,如果没有则直接查询数据库。然后再把查询到的结果再存入缓存中。事实上第一级缓存就是存放在一个session中,但是当这个session关闭的时候。缓存也就随之被清除。那么请问高手一个也许很细节、很笨的问题就是:
在一个方法里执行完查询后是否应该关闭session?如果不关的话,请问应该在什么时候关;如果查询过后就关的话,这与没配置缓存有多大区别。还有如果不关的话,那随着查询的数据会越来越多,hibernate会自动采取一定的淘汰算法去淘汰不常用的数据吗,并且这个算法是否可以用户根据需要进行配置。最后一个问题就是是不是有必要为每一类对象(或每一张表)来设置一个静态的session以供调用。小弟在这谢谢各位了。很急,高手请不要只路过。另外如果描述不清的话。请再问一下我。谢谢