系列文章

[Nhibernate]体系结构

[NHibernate]ISessionFactory配置

引言

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

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

POCO简单示例

用一个类描述一只猫:

     public class Cat
{
private long _id; // identifier
private string _name;
private DateTime _birthdate;
private Cat _mate;
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 char Sex
{
get { return _sex; }
set { _sex = value; }
}
public float Weight
{
get { return _weight; }
set { _weight = value; }
} }

四条原则

为持久化字段声明访问器(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)的更多相关文章

  1. NHibernate官方文档中文版——持久化类(Persistent Classes)

    持久化类是一个应用程序中的类,主要用来实现业务逻辑(例如,在电商应用中的客户和订单类).持久化类,就像它的名字一样,生命周期短暂并且用来持久化的据库对象实例. 如果这些类的构造能够依照一些简单的原则, ...

  2. NHibernate 之持久化类、拦截器 (第二篇)

    一.持久化类中成员标量的要求 作为被NHibernate使用的持久化类,必须满足以下几点要求: 1.声明读写属性 在NHibernate的使用中,持久化类的成员变量必须声明对应的属性,NHiberna ...

  3. Hibernate的持久化类状态

    Hibernate的持久化类状态 持久化类:就是一个实体类 与 数据库表建立了映射. Hibernate为了方便管理持久化类,将持久化类分成了三种状态. 瞬时态 transient (临时态):持久化 ...

  4. 1.1Hibernate持久化类和Hibernate持久化对象状态

    一.持久化对象po类 1.po定义 PO,是Persistent Object的缩写,是持久化类.PO是由PO=POJO+hbm映射配置组成. 2.通俗理解 PO类即持久化类,其实就是一个普通的Jav ...

  5. Hibernate中的持久化类

    一.持久化类概述 就是一个JavaBean,这个JavaBean与表建立了映射关系.这个类就称为是持久化类. 简单理解为 持久化类=JavaBean+映射文件. 持久化类:是指其实例需要被Hibern ...

  6. Hibernate中持久化类与持久化对象

    1.JavaBean类 JavaBean类是实体类,必须一下属性,private修饰的成员属性,public修饰的getter与setter访问方法,public修饰的空参构造器,实现Serializ ...

  7. (转) Hibernate持久化类与主键生成策略

    http://blog.csdn.net/yerenyuan_pku/article/details/65462930 Hibernate持久化类 什么是持久化类呢?在Hibernate中持久化类的英 ...

  8. 代码的坏味道(9)——异曲同工的类(Alternative Classes with Different Interfaces)

    坏味道--异曲同工的类(Alternative Classes with Different Interfaces) 特征 两个类中有着不同的函数,却在做着同一件事. 问题原因 这种情况往往是因为:创 ...

  9. idea 根据数据库表自动创建持久化类

    一.点击最右边的Database: 二.点击,再点DataSource选择数据库类型,配置数据库信息: 三.打开项目结构,选择,找到你的项目,点击,添加hibernate: 四.如果有现成的cfg.x ...

随机推荐

  1. ANDROID 系统提示对话框(ALERTDIALOG)的使用

    new AlertDialog.Builder(baseActivity).setTitle("删除确认")//设置对话框标题 .setMessage("您确定要删除选中 ...

  2. 理解 Node.js 里的 process.nextTick()

    有很多人对Node.js里process.nextTick()的用法感到不理解,下面我们就来看一下process.nextTick()到底是什么,该如何使用. Node.js是单线程的,除了系统IO之 ...

  3. 推荐一些python Beautiful Soup学习网址

    前言:这几天忙着写分析报告,实在没精力去研究django,虽然抽时间去看了几遍中文文档,还是等实际实践后写几篇操作文章吧! 正文:以下是本人前段时间学习bs4库找的一些网址,在学习的可以参考下,有点多 ...

  4. MongoDB学习笔记(一:常见问题汇总)

    一.安装时出现The default storage engine 'wiredTiger' is not available问题解决 今晚在自己老式笔记本来试了一下MongoDB的安装,由于配置比较 ...

  5. 基于Windows10 x64+visual Studio2013+Python2.7.12环境下的Caffe配置学习

    本文在windows下使用visual studio2013配置关联python(python-2.7.12.amd64.msi)的caffe项目,如果有耐心的人,当然可以自己去下载caffe项目自己 ...

  6. 【读书笔记《Bootstrap 实战》】4.企业网站

    上一章有对个人作品站点进行一些优化.本章,轮到我们充实这个作品站点了,补充一些项目,从而展示我们的能力.换句话说,我们要构建一个相对复杂的企业网站主页. 下面有几个成功企业的网站: □ Zappos ...

  7. Vijos1450 包裹快递[二分答案]

    背景 小K成功地破解了密文.但是乘车到X国的时候,发现钱包被偷了,于是无奈之下只好作快递员来攒足路费去Orz教主…… 描述 一个快递公司要将n个包裹分别送到n个地方,并分配给邮递员小K一个事先设定好的 ...

  8. 防SQL注入

    addslashes(); 一.SQL注入简介 SQL注入是比较常见的网络攻击方式之一,它不是利用操作系统的BUG来实现攻击,而是针对程序员编程时的疏忽,通过SQL语句,实现无帐号登录,甚至篡改数据库 ...

  9. Linux提权(2)-高级版

    当你在攻击受害者的电脑时即使你拥有了一个shell,依然可能会有一些拒绝执行指令的限制.为了获得目标主机的完整控制权限,你需要在未授权的地方绕过权限控制.这些权限可以删除文件,浏览私人信息,或者安装并 ...

  10. 通过trie树单词自动补全(二)

    经常使用iciba进行单词查询, 关于他的搜索建议是通过单词前缀做的索引, 所以自己想动手实现下, 当然如果借助mysql的话,一条sql语句就能实现, 网上查询了下trie正适合做这个,所以通过C语 ...