• [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中文文档》

    • 博客地址:http://www.cnblogs.com/wolf-sun/ 
      博客版权:如果文中有不妥或者错误的地方还望高手的你指出,以免误人子弟。如果觉得本文对你有所帮助不如【推荐】一下!如果你有更好的建议,不如留言一起讨论,共同进步! 再次感谢您耐心的读完本篇文章。
  • 相关阅读:
    20080619 SQL SERVER 输入 NULL 的快捷键
    20090406 Adobe的“此产品的许可已停止工作”错误的解决办法
    20080908 Office Powerpoint 2007 不能输入中文的解决办法
    20080831 ClearGertrude Blog Skin 's cnblogs_code class
    20080603 Facebook 平台正式开放
    20080519 安装 Microsoft SQL Server 2000 时提示 创建挂起的文件操作
    test
    Linux—fork函数学习笔记
    SOA的设计理念
    Why BCP connects to SQL Server instance which start with account of Network Service fail?
  • 原文地址:https://www.cnblogs.com/Jeely/p/11357801.html
Copyright © 2020-2023  润新知