最近研究Nhibernate的一些功能,在通过Nhibernate反向建数据库表时遇到了一个问题,refers to an unmapped class:xxxx 通过查阅发现是自己对应的  xxxx.hbm.xml文件配置出了问题,具体的解决办法是: 1.点击提示出问题类所对应的xxxx.hbm.xml文件,找到其“属性”窗口:如下图: 2.调整“属性”窗口中的“生成操作”为“嵌入的资源 ”,修改完成后,运行这个问题便可以解除了. 只写出一种可能的情况,希望可以帮到一些人,如果有其他问题也可以…
执行一个HIbernate的演示样例时出现例如以下错误信息 Exception in thread "main" java.lang.ExceptionInInitializerError at com.hibernate.utils.HibernateUtil.<clinit>(HibernateUtil.java:21) at org.hibernate.samples.PersonManager.main(PersonManager.java:23) Caused b…
在编程过程当中由于修改过了包名. 原来的包名是: com.pms.entities.base 然后改为了:com.pms.entities.other 当我重新映射生成数据表的时候就报错:org.hibernate.MappingException: An association from the table DUTY_INFO refers to an unmapped class: com.pms.entities.other.Department 我明明已经修改过了类对应的映射文件,而且准…
NHibernate 数据查询之Linto to NHibernate (第八篇) 刚学NHibernate的时候觉得,HQL挺好用的,但是终归没有与其他技术 相关联,只有NHibernate用到,一来容易忘记,二来没有智能提示,排除错误什么的都不给力,直到看到一个同事用Linq to NHibernate,那代码是相当的清晰明了,其实什么条件查询,HQL什么的感觉只是一个NHibernate用到,很容易忘记.而SQL跟Linq 是经常用的东西,还是SQL和Linq比较划算.今天就来写下Linq…
内容摘要 NHibernate的开发环境 NHibernate的结构体系 NHibernate的配置 一.NHibernate的开发环境 NHibernate的英文官方网站为:http://nhforge.org/ NHibernate目前最新的版本是3.0.0.GA,其下载地址是:http://sourceforge.net/projects/nhibernate/files/NHibernate/ 我可以下载NHibernate-3.0.0.GA-bin.zip(编译后的dll),也可以下载…
出现此错误An association from the table refers to an unmapped class,怎么解决: 把Diaocha.hbm.xml文件路径加入到applicationContext.xml中,如下所展示:…
摘要 从这一节起,介绍NHibernate Mapping的内容.前面文章都是使用的NHibernate XML Mapping.NHibernate XML Mapping是NHibernate最早最成熟的Mapping方法.其他的Mapping方法都是基于XML Mapping的思想进行的“变种”,要么暂时不能完全像XML Mapping那样功能丰富.其他的Mapping方法目前包括:Fluent Mapping.Attribute Mapping和Mapping by Convention…
摘要 上一篇文章介绍了NHibernate HQL,他的缺点是不能够在编译时发现问题.如果数据库表结构有改动引起了实体关系映射的类有改动,要同时修改这些HQL字符串.这篇文章介绍NHibernate面向对象的Criteria查询.他提供了很多API接口,可以实现“私人订制”式的面向对象查询. 作为对照,本篇文章将上篇文章的八个HQL查询全部用Criteria查询写一遍,读者可以自己感受下他们之间的区别. 本篇文章的代码可以到NHibernate查询下载 1.创建Criteria对象,查询所有Cu…
摘要 NHibernate一对一关系虽然不经常碰到,但是在对于数据库结构优化的时候,经常会碰到一对一关系.比如,产品详细信息比较多的时候,可以把产品详细信息放到另一张表里面,Product主表只记录产品主要信息.这样能够显著提高产品的查询效率. 这篇文章的附件:NHibernate Demo下载. 1.建立ProductDetail表 这里将ProductId设置为主键. Product和ProductDetail之间的关系. ProductId既是主键又是外键. 创建ProductDetail…
摘要 这篇文章介绍了如何创建一个简单的使用NHibernate的控制台应用程序,包括使用NuGet.简单的配置.单表映射.对NHibernate配置文件添加智能提示.使用ISessionFactory和ISession. 1. 环境准备 Visual Studio 2015.SQL Server 2008或者SQL Server 2008 R2. 2. 创建工程 1)创建空控制台应用程序NHibernateDemoApp. 2)添加NHibernate到工程.右键NHibernateDemoAp…
摘要 NHibernate实现事务机制非常简单,调用ISession.BeginTransaction()开启一个事务对象ITransaction,使用ITransaction.Commit()提交事务,使用ITransaction.Rollback()回滚事务. 标准NHibernate事务代码: using (var session = SessionFactory.OpenSession()) { using (var transaction = session.BeginTransact…
摘要 前面文章介绍了NHibernate对简单.net数据类型的映射对照表.NHibernate也可以映射复杂数据类型,这里介绍通过组件映射NHibernate值对象. 1. NHibernate引用对象和NHibernate值对象 NHibernate引用对象:指的是具有主键值的NHibernate实体对象,他必须是另一个NHibernate实体对象的属性.他所属的对象也可以理解为主对象,有一个从属的指向关系.例如:Order对象有个属性Customer,表示这个Order对象是属于哪个Cus…
摘要 这篇文章介绍NHibernate最实用的内容:关系映射. NHibernate的关系映射方式有三种: Set:无序对象集合,集合中每一个元素不能重复. List:有序对象集合,集合中的元素可以重复. Bag:无序对象集合,集合中的元素可以重复. Map:键值对集合,相当于Hashtable或Dictionary. 这篇文章以一对多关系为例,介绍怎样在NHibernate中建立一对多关系映射.一对多关系是在现实项目中最经常碰到的一种关系.后面文章介绍多对多关系. 这篇文章的附件:NHiber…
摘要 NHibernate的多对多关系映射由many-to-many定义. 从这里下载本文的代码NHibernate Demo 1.修改数据库 添加Product表 添加ProductOrder表 数据库表之间的关系: Product和Order之间的关系是多对多关系,一条订单上有多个产品,一个产品可以有多个订单.多对多关系中的中间表(这里是ProductOrder表)不需要在关系映射中定义实体类和映射文件. 实际项目中,Product和Order之间应该不是这种简单的多对多关系,而是有个“订单…
1,Sql语法. NH:HQL Dapper:原生Sql. 点评:原生Sql可以直接放在数据库里执行,Hql不行,且Hql增加学习负担.(Hn也可以原生Sql,但好像用的不多呀) 2,开发速度. NH:手工编写配置文件. Dapper:使用CodeSmith批量生成. 点评:NH耗时,Dapper迅速. 3,自定义查询. NH : return _session.CreateQuery("select c.Firstname, count(c.Fi rstname) from Customer…
本节内容 什么是并发控制? 悲观并发控制(Pessimistic Concurrency) 乐观并发控制(Optimistic Concurrency) NHibernate支持乐观并发控制 实例分析 结语 什么是并发控制? 当许多人试图同时修改数据库中的数据时,必须实现一个控制系统,使一个人所做的修改不会对他人所做的修改产生负面影响.这称为并发控制. 简单的理解就是2个或多个用者同时编辑相同的数据.这里的用者可能是:实际用户.不同服务.不同的代码段(使用多线程),及其在断开式和连接式情况下可能…
本节内容 事务概述 1.新建对象 [测试成功提交] [测试失败回滚] 2.删除对象 3.更新对象 4.保存更新对象 结语 上一篇我们介绍了NHibernate中的Insert, Update, Delete操作,这篇我们来看看NHibernate中的事务.你通过它可以提交或者回滚你的操作. 事务概述 1.NHibernate中的事务(Transactions) 简单描述:要求ISession使用事务:做一些操作:提交或者回滚事务. 写成代码就像这样: ITransaction tx = _ses…
刚学NHibernate的时候觉得,HQL挺好用的,但是终归没有与其他技术相关联,只有NHibernate用到,一来容易忘记,二来没有智能提示,排除错误什么的都不给力,直到看到一个同事用Linq to NHibernate,那代码是相当的清晰明了,其实什么条件查询,HQL什么的感觉只是一个NHibernate用到,很容易忘记.而SQL跟Linq是经常用的东西,还是SQL和Linq比较划算.今天就来写下Linq to NHibernate. 引用NHibernate.Linq后,创建查询时应该这样…
Linq是NHibernate所支持的查询语言之一,对于Linq的实现在源码的src/Linq目录下.以下是一个使用Linq进行查询数据的示例: var users = session.Query<User>().where(n=>n.Id=5).OrderBy(n=>n.Name).ToList(); session在我们跑起来的第一个程序的Controller中已经介绍过了,它是查询数据库的入口:通过调用其泛型方法Query,可以拿到相应的集合,然后通过where方法进行条件过…
本节内容 什么是并发控制? 悲观并发控制(Pessimistic Concurrency) 乐观并发控制(Optimistic Concurrency) NHibernate支持乐观并发控制 实例分析 结语 什么是并发控制? 当很多人试图同一时候改动数据库中的数据时,必须实现一个控制系统,使一个人所做的改动不会对他人所做的改动产生负面影响. 这称为并发控制. 简单的理解就是2个或多个用者同一时候编辑同样的数据. 这里的用者可能是:实际用户.不同服务.不同的代码段(使用多线程),及其在断开式和连接…
本节内容 引入 1.持久化类 2.映射文件 3.測试 结语 引入 在数据库操作中,我们除了对表操作,还有视图.存储过程等操作,这一篇和下篇来学习这些内容.这篇我们来学习怎样在NHibernate中使用视图.首先,我们在数据库中建立一个名为viewCustomer视图.选中CustomerId.Firstname.Lastname.OrderId.OrderDate项. 以下我们依次为这个视图编写持久化类和映射吧. 1.持久化类 同持久化数据库中的表类似,我们须要对视图持久化,定义视图中的每一个属…
今天配置SSH框架的时候出现这个异常,找了很久,才发现原来是是实体类映射文件中的<class name="Role" table="role">的name值写错了,这里总结了一些网上的常见错误原因: 1,检查你的hibernate.cfg.xml文件中是否添加了  <mapping resource="xxxx.hbm.xml"/> 2,检查你的hibernate.cfg.xml文件中的相关联的两个<mapping…
映射声明 对象/关系映射在XML文件中配置.mapping文件这样设计是为了使它可读性强并且可修改.mapping语言是以对象为中心,意味着mapping是围绕着持久化类声明来建立的,而不是围绕数据表. 要注意的是,尽管很多NHibernate使用者选择手动定义XML文件,但是仍然有很多工具可以用来生成mapping文件,包括NHibernate.Mapping.Attributes 库和各种各样基于模板的代码生成工具(CodeSmith, MyGeneration). 让我们用一个mappin…
重点 NHIbernate处理只读对象的方式可能和你在别处看到的不同.不正确的使用方式可能造成不可预料的结果. 当一个实体是只读的时候: NHIbernate不会对实体的简单属性和单向关联数据检查数据是否是脏数据 NHibernate不会对实体的简单属性和单向关联数据进行更新操作 NHibernate不会更新只读对象的版本信息,尽管实体的简单属性和单向关联数据发生了改变 在某些情况下,NHibernate对待一些只读实体类型和费只读类型是一样的: Nhibernate级联操作定义在实体mappi…
引言:Nibernate概述 NHibernate是一个ORM框架,NHibernate是一个把C#对象世界和关系世界数据库之间联系起来的一座桥梁.NHibernate 能自动映射实体模型到数据库,所以这能让你集中考虑一件或多件事情. 1.给Program.cs文件添加代码 注意:以下程序仅供参考,不作为运行的依据.由于本文过旧,所以你必须从控制台进行安装,安装命令为: install-package NHibernate -version 2.1.2.4000 using System; us…
写在前面 这篇总结本来是昨天要写的,可昨天大学班长来视察工作,多喝了点,回来就倒头就睡了,也就把这篇总结的文章拖到了今天. nhibernate系列从开始着手写,到现在前后耗费大概两个月的时间,通过总结这个系列,确实收获不小,这里将本系列的导航,列出放在这里算是对nhibernate系列的一个小总结,也方便想学习nhibernate的朋友查找. nhibernate文档 文档部分是从网上搜集,认为还是比较全面的,就在博客上做了记录,也希望在用到的时候,有个地方可以方便的查找. [Nhiberna…
首个基于NHibernate的应用程序  Your first NHibernate based application 英文原文地址:http://www.nhforge.org/wikis/howtonh/your-first-nhibernate-based-application.aspx 翻译原文地址:http://www.cnblogs.com/13yan/p/5671072.html 本文涉及到的DEMO下载   定义领域模型 让我们开始通过定义一个非常简单的领域模型.目前它是由一…
Nhibernate 4.0 教程 目录 1.      下载Nhibernate 4.04. 1 2.      入门教程... 2 3.      测试项目详解... 3 4.      总结... 7 附:关联知识点... 7 知识点1:C#静态构造函数... 7 知识点2:关于Visual Studio文件生成操作... 8 前言: 为什么会有这个框架?这就牵扯进了Java和C#的恩恩怨怨,Java是开源的面向对象语言的代表,围绕Java的有不计其数的开源框架,其中ORM框架(不要问我什…
引言 在项目中也有用到过nhibernate但对nhibernate的认识,也存留在会用的阶段,从没深入的学习过,决定对nhibernate做一个系统的学习. ORM 对象-关系映射(OBJECT/RELATION MAPPING,简称ORM),是随着面向对象的软件开发方法发展而产生的.面向对象的开发方法是当今企业级应用开发环境中的主流开发方法,关系数据库是企业级应用环境中永久存放数据的主流数据存储系统.对象和关系数据是业务实体的两种表现形式,业务实体在内存中表现为对象,在数据库中表现为关系数据…
系列文章 [Nhibernate]体系结构 引言 在上篇文章学习了orm和nhibernate相关概念,这篇文章主要学习ISessionFactory如何配置. 因为NHibernate被设计为可以在许多不同环境下工作,所以它有很多配置参数.不过,大部分都已经有默认值了.NHibernate.Test.dll包含了一个示例的配置文件app.config,它演示了一些可变的参数. 可编程配置方式 NHibernate. Cfg.Configuration的一个实例代表了应用程序中所有的.Net类到…