[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/
博客版权: 本文以学习、研究和分享为主,欢迎转载,但必须在文章页面明显位置给出原文连接。
如果文中有不妥或者错误的地方还望高手的你指出,以免误人子弟。如果觉得本文对你有所帮助不如【推荐】一下!如果你有更好的建议,不如留言一起讨论,共同进步!
再次感谢您耐心的读完本篇文章。

转载:http://www.cnblogs.com/wolf-sun/p/3704012.html
目录
相关文章
|
4天前
spring-state-machine持久化
spring-state-machine持久化
38 0
|
4天前
|
存储 缓存 Java
Hibernate - Session方法与持久化对象详解
Hibernate - Session方法与持久化对象详解
80 0
|
XML Java 数据格式
Spring源码(二-3)-XML文件的读取-factory-method的使用
Spring 可以通过 factory-method 实例化对象。factory-method方式是 Spirng 实例对象的方式之一。
911 2
|
缓存 Java 数据库连接
Hibernate get和load区别
get和load方式是根据id取得一个记录 下边详细说一下get和load的不同,因为有些时候为了对比也会把find加进来。   1.从返回结果上对比:load方式检索不到的话会抛出org.hibernate.ObjectNotFoundException异常 get方法检索不到的话会返回null   2.从检索执行机制上对比: get方法和find方法都是
1205 0