• [NHibernate]持久化类(Persistent Classes)


    系列文章

    [Nhibernate]体系结构

    [NHibernate]ISessionFactory配置

    引言

    持久化类是应用程序用来解决商业问题的类(比如,在电子交易程序中的Customer和Order)。持久化类,就如同它的名字暗示的,是短暂存在的,它的实例会被持久性保存于数据库中。

    如果这些类符合简单的规则,NHibernate能够工作的最好,这些规则就是Plain Old CLR Object(POCO,简单传统CLR对象)编程模型。

    POCO简单示例

    用一个类描述一只猫:

     1     public class Cat
     2     {
     3         private long _id; // identifier
     4         private string _name;
     5         private DateTime _birthdate;
     6         private Cat _mate;
     7         private char _sex;
     8         private float _weight;
     9         public long Id
    10         {
    11             get { return _id; }
    12             set { _id = value; }
    13         }
    14         public string Name
    15         {
    16             get { return _name; }
    17             set { _name = value; }
    18         }
    19         public DateTime Birthdate
    20         {
    21             get { return _birthdate; }
    22             set { _birthdate = value; }
    23         }
    24         public Cat Mate
    25         {
    26             get { return _mate; }
    27             set { _mate = value; }
    28         }
    29         public char Sex
    30         {
    31             get { return _sex; }
    32             set { _sex = value; }
    33         }
    34         public float Weight
    35         {
    36             get { return _weight; }
    37             set { _weight = value; }
    38         }
    39 
    40     }

    四条原则

    为持久化字段声明访问器(getters和setters)

    Cat为它的所有可持久化字段声明了gettes和setters访问器。用访问器来替代直接访问字段是个好习惯。然而也可以通过字段(field)来使用NHibernate。

    属性不一定要声明为public。NHibernate可以对默认,protected,internal,or private的属性一视同仁地执行持久化。

    实现一个默认的构造函数(Constructor)

    Cat有一个显式的无参构造函数。所有的持久化类都必须具有一个默认的构造函数(可以不是public的),这样的话NHibernate就可以使用Construector.Invoke()来实例化它们。

    提供一个标识属性(identifier property)(可选)

    建议使用不是sealed的类(可选)

    实现继承(Inheritance)

    实现Equals()和GetHashCode()

    持久化生命周期(Lifecycle)中的回调(callbacks)

    合法性检查(Validatable)回调

    用属性替代XML

    总结

    本文介绍了持久化类的几条规则。

    本文来自

    《NHibernate中文文档》

  • 相关阅读:
    webpack 学习
    文件操作
    关于列表remove的操作和字符串split的操作新领悟
    深浅拷贝和基础类型补充
    小数据池和编码
    字典和集合
    列表和元组
    字符串理论
    递归遍历多层列表
    基本数据类型和操作
  • 原文地址:https://www.cnblogs.com/wolf-sun/p/3704012.html
Copyright © 2020-2023  润新知