[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

时间: 2024-08-18 21:22:30

[NHibernate]持久化类(Persistent Classes)的相关文章

用NHibernate持久化enum和bool类型

开篇 用NHibernate持久化类的enum和bool类型的属性的时候,我们需要持久化的更通用一些,数据库无关一些. 枚举持久化为对应整数的字符串,NH默认持久化为整数. 布尔的持久化默认根据数据库的类型而不同,sqlserver会持久化为bit,可是很多数据库没有bit类型,通常用char来持久化. 可以选择持久化为Y和N,也可以选择持久化为1和0. 1.枚举enum的持久化 将枚举持久化成一个字符串,也就是将枚举对应的整数持久化到数据库. public enum Status { Yes

C++的异常类(exception classes) 详解

异常类(exception classes)包含4种基类,bad_cast, bad_alloc,runtime_error, logic_error; runtime_error: 错误只有当程序运行时, 才能检测出来; logic_error: 应用程序检测出的逻辑错误. 其中bad_cast, bad_alloc使用默认构造器, runtime_error, logic_error, 必须使用string(C-style或stl)进行初始化; 用户定义的类也可以继承(inherit)自异常

Java嵌套类(Nested Classes)总结

Nested Classes定义 在java语言规范里面,嵌套类(Nested Classes)定义是: A nested class is any class whose declaration occurs within the body of another class or interface. A top level class is a class that is not a nested class.  说的简单一点,就是定义在类里面的类.一般把定义内部类的外围类成为包装类(enc

shh项目错误-MyEclipse下生成持久化类,查询出错了

问题描述 MyEclipse下生成持久化类,查询出错了 java.lang.RuntimeException: org.springframework.dao.InvalidDataAccessResourceUsageException: could not execute query; SQL [select user0_.userID as col_0_0_, user0_.userName as col_1_0_, user0_.userPassword as col_2_0_ from

hibernate 根据持久化类 创建数据库表的时候出现的错误如下,请大神帮忙解决?

问题描述 hibernate 根据持久化类 创建数据库表的时候出现的错误如下,请大神帮忙解决? 十二月 09, 2015 1:49:52 下午 org.hibernate.tool.hbm2ddl.DatabaseMetadata getTableMetadata 信息: table not found: DIC_TAB 十二月 09, 2015 1:49:52 下午 org.hibernate.tool.hbm2ddl.DatabaseMetadata getTableMetadata 信息:

解析Java的Hibernate框架中的持久化类和映射文件_java

持久化类Hibernate的整个概念是采取从Java类属性的值,并将持久到数据库表.一个映射文件Hibernate的帮助确定如何从拉动类的值,并将它们映射与表和相关的域. 其对象或实例将存储在数据库表中的Java类在Hibernate中称为持久化类. Hibernate的效果最好,如果这些类遵循一些简单的规则,也称为普通Java对象(POJO)编程模型.有下列持久化类的主要规则,但是,这些规则并不是必需的. 将所有的持久化Java类需要一个默认的构造函数. 所有类应该包含为了让容易识别对象内Hi

Myeclipse 自动生成可持久化类的映射文件的方法_Mysql

1.打开DB Browser,新建一个数据库的连接,找到想要持久化操作的数据库表的图标,右键选择hibernate reverse engineering 2.之后出现如下所示: java src folder:对应工程的src目录 java packega:对应工程中存放的包名,一般选择和持久化类放在一起 create pojo<>DB table mapping information:选上    create a hibernate mapping file(*.hbm.xml) for

Hibernate持久化类(Map)集合属性的Key为组件的映射

1.hibernate.cfg.xml  代码如下 复制代码 <!DOCTYPE hibernate-configuration PUBLIC         "-//Hibernate/Hibernate Configuration DTD 3.0//EN"         "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuratio

Hibernate含List属性的持久化类的CRUD操作范例

1.hibernate.cfg.xml  代码如下 复制代码 <!DOCTYPE hibernate-configuration PUBLIC         "-//Hibernate/Hibernate Configuration DTD 3.0//EN"         "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuratio