1.设计细颗粒度的持久类并且使用<component>来实现映射
这个意思是将一条记录使用多个子类来拆分,例如,将STREET,SUBURB,STATE,POSTCODE封装成ADDRESS类
2,对持久类声明标识符属性,这个标识符最好自动生成,不涉及到业务逻辑
3,为每一个持久类写一个单独的映射文件
4,将映射文件及映射类放在一个程序集中,尽量从资源中加载映射文件
5,考虑把查询字符串放在程序外面,如果查询中使用非标准SQL函数,把查询字符串放在映射文件中更好
6,使用绑定变量,在查询中,尽量用占位符?来替换变量值,不要使用字符串串接.更好的办法是使用命名参数
7,不要自行管理CONNECTION对象
8,考虑使用自定义用户类型
9,在需要高性能的地方,可以考虑直接使用ADO.NET,但是,请从SESSION中获取CONNECTION对象
10,理解SESSION FLUSH,更行操作频繁的话,会影响性能,因此,可以考虑多步手工FLUSH
11,在三层结构中,考虑使用SAVEORUPDATE,
12,在两层结构中,记得自己关闭SESSION
13,绝对不要在一个SESSION中包含多次业务事务,否则,数据有可能过期失效
14,两层结构中,记住自己关闭SESSION
15,不要把异常看作可恢复的,当异常发生时,记住回滚事务,关闭SESSION.HIBERNATE无法保证内存状态精确的反应持久状态,尤其不能用SESSION.LOAD来判断定个给定标识符的对象实便在数据库中是否存在,应该使用FIND方法来判断
16,对于关联,优先考虑LAZY FETCHING,尽量少用主动外连接抓取.
17,考把HIBERNATE代码从业务逻辑代码中抽象出来
18,不要使用怪异的连接映射,多对多连接用的好的例子相当少见.因为多数情况下,在链接表中需保存额外信息,这种情况下,用两个指向中介类的一对多连接较好,尽量用一对多和多对一
19,不要期望一次就设计好映射关系,应该先设计实体,测试后,逐步重构来实现关系的映射

以上原则,大家可以谈谈对各条的理解和看法