NHibernate文档翻译 第3章 持久化类(Persistent Classes)

本文介绍了NHibernate框架下持久化类的设计原则,包括使用POCO模型、定义默认构造方法、提供标识属性等,并通过一个具体的猫类示例进行详细说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第 3 章 持久化类(Persistent Classes)

目录

POCO 简单示例
为持久化字段声明访问器(getters 和 setters) 实现一个默认的构造方法(constructor) 提供一个标识属性(identifier property)(可选) 建议使用不是sealed的类 (可选)
实现继承(Inheritance) 实现Equals()GetHashCode() 持久化生命周期(Lifecycle)中的回调(Callbacks) 合法性检查(Validatable)回调 用属性替代 XML

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

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

POCO 简单示例

用一个类描述一只猫。

public class Cat
{
 private long _id; // identifier
 private string _name;
 private DateTime _birthdate;
 private Cat _mate;
 private Set _kittens;
 private Color _color;
 private char _sex;
 private float _weight;
 public long Id
 {
  get { return _id; }
  set { _id = value; }
 }
 public string Name
 {
  get { return _name; }
  set { _name = value; }
 }
 public DateTime Birthdate
 {
  get { return _birthdate; }
  set { _birthdate = value; }
 }
 public Cat Mate
 {
  get { return _mate; }
  set { _mate = value; }
 }
 public Set Kittens
 {
  get { return _kittens; }
  set { _kittens = value; }
 }
 public Color Color
 {
  get { return _color; }
  set { _color = value; }
 }
 public char Sex
 {
  get { return _sex; }
  set { _sex = value; }
 }
 public float Weight
 {
  get { return _weight; }
  set { _weight = value; }
 }
}

有四条主要的规则:

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

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

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

实现一个默认的构造方法(constructor)

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

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

 

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

 

实现继承(Inheritance)

 

实现Equals()GetHashCode()

 

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

 

合法性检查(Validatable)回调

 

用属性替代 XML

 

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值