[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中文文档》

[NHibernate]持久化类(Persistent Classes),布布扣,bubuko.com

时间: 2024-12-23 21:23:19

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

.NET进阶 — Nhibernate 持久化的三种状态

引入 在面向对象的开发中,程序的运行都是通过对象的方式对数据库进行增删改查的操作,必然在持久化过程中产生一些列的对象,比如登陆,必然会有实例化的UserEntity对象,从数据库Select出来的对象,Save到数据库的对象,如何区分这些对象以及当前会话的状态,下面看NHibernate中的对象状态的管理: Nhibernate 三态 Nhibernate在持久化对象的生命周期,将对象分为三个状态: 1.瞬时态(Transient) 也叫临时态,顾名思义,对象是临时创建的,即刚实例化的对象: U

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

http://blog.csdn.net/yerenyuan_pku/article/details/65462930 Hibernate持久化类 什么是持久化类呢?在Hibernate中持久化类的英文名称是Persistent Object(简称PO),PO=POJO+hbm映射配置文件. 对于Hibernate中的PO,有如下编写规则: 必须提供一个无参数的public构造方法. 所有属性要用private修饰,对外提供public的get/set方法. 在PO类必须提供一个标识属性,让它与

持久化类(状态介绍)---- Hibernate框架学习

叙:之前介绍了持久化.持久化类的相关信息,关于持久化类只讲了相关编写规则等(文章地址:https://www.cnblogs.com/Email-qtl777777/p/9650239.html),关于其内部的更多的划分并没进行细讲,本章电虫就持久化类的三个状态以及三种状态的区分以及三种状态的区分进行学习.记录: 持久化类的三种状态 Hibernate是持久层框架,通过持久化的类完成ORM(Java对象和数据库表的映射关系)操作:hibernate为更好地管理持久化类的状态,特此将持久化类分成三

笔记:Hibernate 持久化类标注示例-双向1-N关系映射

1-N关系的1端持久化类 package org.drsoft.hibernate.model.oneToMany; ? ? import java.util.Date; import java.util.Set; ? ? import javax.persistence.*; ? ? @Entity @Table(name = "OneToMany_One") public class OneToManyForOneModel { @Id @Column(name = "R

笔记:Hibernate 持久化类标注说明

持久化类标注 标注 @Entity:注解声明该类是一个Hibernate的持久化类 标注 @Table:指定该类映射的表 参数 name:指定映射数据库表的名称 参数 uniqueConstraints:为持久化类所映射的表设置唯一约束,该属性的值是 @UniqueConstraint 标注数组 参数 indexes:为持久化类说映射的表设置索引,该属性的值是 @Index 标注数组 参数 catalog:设置持久化类说映射的表放入指定的 catalog 中,没有指定则放入默认 catalog

持久化类的要求

持久化类的要求 1.Hibernate对于持久化类没有太多的要求,但是还是应该遵循以下的原则来创建持久化类: (1)提供一个无参数的构造器: 此构造器可以不是被public所修饰,但是只要有无参构造器,Hibernate就可以使用Constructor.newInstance()来创建持久化类实例了,为了方便Hibernate在运行时生成代理,构造器的访问修饰符至少是包可见的. (2)提供一个标识属性: 标识属性通常映射数据库表的主键字段. (3)为持久化类的每个成员变量提供setter.get

Hibernate中如何完成持久化类和数据库映射文件

因为最近写项目需要要到,就在这里码码字,方便以后做一个参考,在这里,我通过的是myeclipse的反向工程来配置持久化类和数据的映射文件的. 1.打开myeclipse,打开数据库视图,对应的是Windows->open perspective->myeclipse database explore. 2.在出现的视图中我们选择对应的数据库,右键进行连接,接着去我们连接的对应的数据库下获取相应的table,在选定的table上右键,就会出现如下图所示的样例 选择上面的hibernate rev

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

一.点击最右边的Database: 二.点击,再点DataSource选择数据库类型,配置数据库信息: 三.打开项目结构,选择,找到你的项目,点击,添加hibernate: 四.如果有现成的cfg.xml文件,则选择右边的添加按钮,将xml文件添加进来: 五.选择左下角的Persistence按钮,选择hibernate配置文件生成实体: 六.选择数据源,选择实体类所在的包,选择表: 这样生成的持久化类是注解方式配置的. 如果想用xml配置,可以通过以下的设置,自动生成hbm.xml配置文件:

持久化类设计

注意: 持久化类通常建议有一个持久化标识符(ID) 持久化标识符通常建议使用封装类(基本类型有默认值) 持久化类通常建议手动给定一个无参数的构造器(因为有一些操作,是反射进行的) 属性通常建议提供getting.setting方法 持久化类不能是final 持久化类中如果使用了集合类型属性,只能使用接口类型进行声明(List,Set,Map)