Nhibernate基础
|
Nhibernate(英文冬眠的意思) 常用方法 |
Contains Evict Clear |
||||||||||||||||
| 在 NHibernate 中一切必须是 Virtual 的吗? |
http://www.cnblogs.com/aaa6818162/p/4675279.html http://blog.zhaojie.me/2009/09/my-view-of-nhibernate-2-virtually-everything.html 因此,如果是你的话,在写Java代码的时候,是愿意使用getXxx()这样的方法,还是直接访问类中的私有字段?因此我认为,是Java语言的特性,导致Java开发人员倾向于直接访问类中的私有字段,从而导致Hibernate需要避免未加载的私有字段,进一步导致Hibernate的代理类会去覆盖所有的公开方法(只有方法,因为Java语言没有“属性”)——最终,由于NHibernate在“统一大业”上的策略,使得我们.NET开发人员也必须把所有成员标记为virtual,无论是方法还是属性。 |
||||||||||||||||
| Nhibernate API |
http://www.cnblogs.com/aaa6818162/p/4639308.html 下图描述了NHibernate的API在分层架构中的作用,下面将进行详细说明。
NHibernate的接口大致分为四类: 1. 被应用程序调用进行基本数据操作(增、删、改、查)的接口。这些接口是应用程序的业务逻辑层和控制层与NHibernate的主要交互点。ISession, ITransaction, IQuery和ICriteria属于此类。 2. 被应用程序用来配置NHibernate的接口。Configuration就属此类。 3. 回调接口。应用程序用回调接口来响应NHibernate中触发的事件。这类接口包括Interceptor, ILifecycle和IValidatable等。 4. 用于扩展NHibernate的强大映射功能的接口。这类接口通常被应用程序的基础架构来实现。IUserType, ICompositeUserType, 和IIdentifierGenerator属于此类。 |
||||||||||||||||
| NHibernate Interceptor机制 |
nhibernate是如何自动生成sql语句的 NHibernate 查看生成的sql语句: http://www.cnblogs.com/jiezhi/articles/87414.html http://www.cnblogs.com/JeffreyZhao/archive/2009/10/13/my-view-of-nhibernate-4-interceptor.html |
||||||||||||||||
| NHibernate中Session是线程不安全(多线程中Session不能被共享) | http://www.cnblogs.com/aaa6818162/p/4631412.html | ||||||||||||||||
| Nhibernate 设置派生属性 |
http://www.cnblogs.com/cnjava/archive/2012/07/21/2602294.html
|
||||||||||||||||
| 关系数据库中的主键可分为 自然主键(具有业务含义)和代理主键(不具有业务含义) | |||||||||||||||||
| Nhibernate锁 数据并发 版本号 | http://www.cnblogs.com/lyj/archive/2008/10/21/1316269.html
|
||||||||||||||||
|
Nhibernate 一级缓存 |
|||||||||||||||||
| NHibernate的Session管理策略 | http://www.cnblogs.com/13yan/archive/2013/05/17/3083552.html
1)在Web应用程序中 一个请求中第一次会打开一个Session并保存再web上下文,以后就不再新打开了 2)在WinForm或单元测试中,使用另一种策略,每个线程用一个Session。 修改hibernate.cfg.xml配置文件,加入一个属性<property name="current_session_context_class">web</property>,修改这个属性就可以修改Session策略。 sessionFactory = new Configuration().Configure() |
||||||||||||||||
| NHibernate 怎么样去为我们的实体类设置一个通用的基类 | http://www.cnblogs.com/aaa6818162/p/4631443.html | ||||||||||||||||
| hibernate session的flushMode的区别 |
http://blog.csdn.net/looyo/article/details/6309136 http://stackoverflow.com/questions/3295169/nhibernate-flushmode-auto-not-flushing-before-findsession.flushmode=auto /// <summary> Cardtype entity2 = session entity.Cardtypename = "66"; |
||||||||||||||||
| NHibernate中Get和Load的区别 | 1.get()采用立即加载方式,而load()采用延迟加载;
get()方法执行的时候,会立即向数据库发出查询语句, 如果加载一个对象的目的是威力访问它的属性,可以用get方法 如果加载一个对象的目的是为了删除它,或者是为了建立于别的对象的关联,可以用load |
||||||||||||||||
| 域对象在持久化层的三种状态 |
临时状态(Transient):当new一个实体对象后,这个对象处于临时状态,即这个对象只是一个保存临时数据的内存 区域,如果没有变量引用这个对象,则会被jre垃圾回收机制回收。这个对象所保存的数据 与数据库没有任何关系,除非通过Session的save或者SaveOrUpdate把临时对象与数据库 关联,并把数据插入或者更新到数据库,这个对象才转换为持久对象。 持久状态(Persistent): 持久化对象的实例在数据库中有对应的记录,并拥有一个持久化表示(ID)。对持久化对 象进行delete操作后,数据库中对应的记录将被删除,那么持久化对象与数据库记录不再 存在对应关系,持久化对象变成临时状态。持久化对象被修改变更后,不会马上同步到数 据库,直到数据库事务提交。在同步之前,持久化对象是脏的(Dirty)。 游离状态(Detached):当Session进行了Close、Clear或者evict后,持久化对象虽然拥有持久化标识符和与数据 库对应记录一致的值,但是因为会话已经消失,对象不在持久化管理之内,所以处于游离 状态(也叫:脱管状态)。游离状态的对象与临时状态对象是十分相似的,只是它还含有 持久化标识。 总结:我们现在系统默认取出来的对象一直在持久状态 因为session绑定的web上线文 只有请求结束才进行session的close protected void Application_BeginRequest(object sender, EventArgs e) protected void Application_EndRequest(object sender, EventArgs e) |
||||||||||||||||
Nhibernate基础的更多相关文章
- Nhibernate基础使用教程以及简易封装
1.Nhibernate简介 NHibernate是一个面向.NET环境的对象/关系数据库映射工具.对象/关系数据库映射(object/relational mapping,ORM)这个术语表示一种技 ...
- NHibernate 基础
install-package nhibernate install-package nunit Customer.cs public class Customer { public virtual ...
- 3. NHibernate基础知识 - 你必须知道的一些事情
首先介绍一下框架结构(这个有个概念就可以): 然后我们会介绍一个很重要的概念(一定要好看)!! 这节对 NHibernate 架构做一个介绍,首先要了解一下该框架在应用程序中的位置: 先来一个简单的图 ...
- NHibernate 基础教程
NHibernate之旅系列文章导航 宣传语 NHibernate.NHibernate教程.NHibernate入门.NHibernate下载.NHibernate教程中文版.NHibernate实 ...
- NHibernate官方文档中文版--基础ORM(Basic O/R Mapping)
映射声明 对象/关系映射在XML文件中配置.mapping文件这样设计是为了使它可读性强并且可修改.mapping语言是以对象为中心,意味着mapping是围绕着持久化类声明来建立的,而不是围绕数据表 ...
- NHibernate之映射文件配置说明
NHibernate之映射文件配置说明 1. hibernate-mapping 这个元素包括以下可选的属性.schema属性,指明了这个映射所引用的表所在的schema名称.假若指定了这个属性, 表 ...
- NHibernate系列文章目录
第一章:NHibernate基础 NHibernate介绍 第一个NHibernate工程 简单的增删改查询 运行时监控 NHibernate配置 数据类型映射 Get/Load方法 NHiberna ...
- NHibernate系列文章二十八:NHibernate Mapping之Auto Mapping(附程序下载)
摘要 上一篇文章介绍了Fluent NHibernate基础知识.但是,Fluent NHibernate提供了一种更方便的Mapping方法称为Auto Mapping.只需在代码中定义一些Conv ...
- [转]NHibernate之映射文件配置说明
1. hibernate-mapping 这个元素包括以下可选的属性.schema属性,指明了这个映射所引用的表所在的schema名称.假若指定了这个属性, 表名会加上所指定的schema的名字扩展为 ...
随机推荐
- SQLSERVER truncate table之后是否会重置表的自增值
SQLSERVER truncate table之后是否会重置表的自增值 今天清理业务库数据的时候,开发人员说可以使用truncate table把两个表的所有数据清理掉 这两个表都有自增ID,都做了 ...
- 个性二维码开源专题<液化/圆角/效果>
基础方法: ChangeFillShape //修改填充形状 ChangeFillShape(...) // 摘要: // 修改填充形状 // // 参数: // g: // 图形画板 // // F ...
- 初识IStructuralEquatable接口
System.Collections.IStructuralEquatable 是 .NET Framework 4.5 新引入的一个接口,位于System.Runtime.dll程序集中. MSDN ...
- 升级ruby版本那"不堪回首的经历"
前段时间在玩Chef-一个IT基础设施自动化工具.由于Chef是由Ruby写的一个gem,那么就需要安装Ruby.当然Ruby我早就安装了,并且使用rvm来管理Ruby及Gem.本来一切看似正常,但是 ...
- SVN中Branch的创建与合并
在使用源代码版本控制工具时,最佳实践是一直保持一个主干版本.但是为了应付实际开发中的各种情况,适时的开辟一些分支也是很有必要的.比如在持续开发新功能的同时,需要发布一个新版本,那么就需要从开发主干中建 ...
- HTML5 canvas globalCompositeOperation绘图类型讲解
我们总是将一个图形画在另一个之上,大多数情况下,这样是不够的.比如说,它这样受制于图形的绘制顺序.不过,我们可以利用 globalCompositeOperation 属性来改变这些做法.global ...
- AspNet MVC 缓存
服务端缓存技术 请求域内的缓存 每个Asp.Net请求都会在Asp.Net框架中创建一个新的System.Web.HttpContext对象(HttpContext对象封装有关个别 HTTP 请求的所 ...
- Java程序员的日常——经验贴(纯干货)二
继昨天的经验贴,今天的工作又收获不少. windows下编辑器会给文件添加BOM 在windows的编辑器中,为了区分编码,通常会添加一个BOM标记.比如,记事本.nodepade++.sublime ...
- android mvvm初探
目前google的databinding library还处在rc版,其中编译器发挥了主要作用.目前也只是在android studio开发环境中支持. mvvm能够大大降低模块间的耦合度,在开发过程 ...
- JAVA学习Swing章节按钮组件JButton的简单学习
package com.swing; import java.awt.Container; import java.awt.Dimension; import java.awt.GridLayout; ...

(SqlString sql) 