系列文章
引言
持久化类是应用程序用来解决商业问题的类(比如,在电子交易程序中的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中文文档》
[NHibernate]持久化类(Persistent Classes),布布扣,bubuko.com
时间: 2024-12-23 21:23:19