1. 关于session
1) 什么时机对session进行打开和关闭?
首先,别用session-per-operation这种反模式了,也就是说,在单个线程中, 不要因为一次简单的数据库调
用,就打开和关闭一次Session
!数据库事务也是如此。
最好的模式是:
①session-per-request模式,所有载入的实例在用户思考的过程 中都处于与Session脱离的状态。
②session-per-conversation模式,当一个新的客户端请求到来的时候,它又重新连接上底层的JDBC连接。
2) 关于session要注意的问题。
Session 缓存了处于持久化状态的每个对象(Hibernate会监视和检查脏数据)。 这意味着,如果你让Session打开很长一段时间,或是仅仅载入了过多的数据, Session占用的内存会一直增长,直到抛出OutOfMemoryException异常。
当异常发生的时候,必须要回滚 Transaction ,关闭Session。如果你不这样做的话,Hibernate无法保证内存状态精确的反应持久状态。
2. 关于映射关联
对映射关联要注意的问题:
实际上,我们认为绝大多数的连接是一对多和多对一的,你应该谨慎使用其它连接风格,用之前问自己一句,是否真的必须这么做。单向关联更加难于查询。在大型应用中,几乎所有的关联必须在查询中可以双向导航。
对于关联表不要设置级联删除,而是设置级联的约束或者no action,让应用去手动删除.
Hibernate's FAQ
最新推荐文章于 2024-07-02 08:51:46 发布