博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

10 2010 档案

摘要:Restrictions用法文章分类:Java编程 学习下Hibernate的Criteria 原文地址:http://xuganggogo.javaeye.com/blog/440078 方法说明方法 说明 Restrictions.eq = Restrictions.allEq 利用Map来进行多个等于的限制 Restrictions.gt > Restrictions.ge >= Restr... 阅读全文

posted @ 2010-10-28 00:12 EVON168 阅读(32721) 评论(3) 推荐(4)

摘要:引入呵呵,今天收到了微软“最有影响力开发者”礼包,很高兴自己荣获“微软最有影响力开发者”称号(详情请进),这篇我还继续上一篇的话题聊聊NHibernate二级缓存剩下的内容,比如你修改、删除数据时,二级缓存是什么策略呢?我们如果使用缓存查询呢?如何管理NHibernate二级缓存呢?使用NHibernate二级缓存不知道具体配置的请转到NHibern... 阅读全文

posted @ 2010-10-26 20:36 EVON168 阅读(474) 评论(0) 推荐(0)

摘要:引入大家看看上一篇了吗?对象状态。这很容易延伸到NHibernate的缓存。在项目中我们灵活的使用NHibernate的缓存机制。NHibernate性能会大大提高的哦,我们接下来就来探索NHibernate缓存机制吧,这篇我没有准备什么,先来学习下NHibernate一级缓存。NHibernate一级缓存介绍NHibernate一级缓存即ISession缓存,ISession缓存属于事务级缓存,... 阅读全文

posted @ 2010-10-26 20:35 EVON168 阅读(244) 评论(0) 推荐(0)

摘要:引入上一篇我介绍了NHibernate内置的一级缓存即ISession缓存。这篇我们来了解下NHibernate二级缓存即ISessionFactory级别缓存。二级缓存是可扩展的,在NHibernate Contrib上提供了第三方NHibernate二级缓存提供程序。介绍NHibernate二级缓存NHibernate二级缓存由ISessionFactory创建,可以被所有的ISession共... 阅读全文

posted @ 2010-10-26 20:35 EVON168 阅读(237) 评论(0) 推荐(0)

摘要:引入在程序运行过程中使用对象的方式对数据库进行操作,这必然会产生一系列的持久化类的实例对象。这些对象可能是刚刚创建并准备存储的,也可能是从数据库中查询的,为了区分这些对象,根据对象和当前会话的关联状态,我们可以把对象分为三种:瞬时对象:对象刚刚建立。该对象在数据库中没有记录,也不在ISession缓存中。如果该对象是自动生成主键,则该对象的对象标识符为空。持久化对象:对象已经通过NHibernat... 阅读全文

posted @ 2010-10-26 20:34 EVON168 阅读(234) 评论(0) 推荐(0)

摘要:引入上篇我们初步探索了SchemaExport工具使用,知道如何使用SchemaExport工具和SchemaUpdate工具利用NHibernate持久化类和映射文件删除、创建、更新数据库架构,这篇具体分析如何为表字段增加一些约束?如何生成存储过程?如何生成视图?使用SchemaExport工具帮你搞定。实例分析1.表及其约束众所周知,SchemaExport工具根据映射文件来生成数据库架构,在... 阅读全文

posted @ 2010-10-26 20:33 EVON168 阅读(294) 评论(0) 推荐(0)

摘要:引入我其实都是一直先编写持久化类和映射文件,然后使用SchemaExport工具生成数据库架构。这样的方式就是领域驱动设计/开发(DDD,Domain Driven Design/Development)。我的理解是系统的设计应该基于对象模型,主要考虑对象的设计和逻辑上,然后按照对象模型建立数据库关系模型,这才是现在面向对象开发的步骤,并不是上一篇先设计数据库然后再设计对象。用一幅图可以形象的说明... 阅读全文

posted @ 2010-10-26 20:33 EVON168 阅读(383) 评论(0) 推荐(0)

摘要:引入我们花了大量的篇幅介绍了相关NHibernate的知识,一直都是带着大家手动编写代码,首先创建数据库架构,然后编写持久化类和映射文件,最后编写数据操作方法,测试方法。这是典型的数据库驱动开发(DbDD,Database-Driven Developent)技术,但是自己不是这样做的,我先编写持久化类和映射文件,然后偷偷的使用SchemaExport工具把数据库生成了,按上面的步骤写文章的,关于... 阅读全文

posted @ 2010-10-26 20:32 EVON168 阅读(297) 评论(0) 推荐(0)

摘要:引入上两篇,介绍使用MyGeneration提供的模板创建存储过程和删除对象、创建对象、更新对象整个详细过程,这篇介绍如何利用<sql-query>做更多的事,在程序开发中,我们不仅仅只利用存储过程增删查改对象,我们还可以想执行任意的存储过程,这不局限于某个对象,某个CURD操作,怎么做呢?注意:本篇并非官方权威的资料,所以敬请参考。如果你还没有学习NHibernate,请快速链接到N... 阅读全文

posted @ 2010-10-26 20:31 EVON168 阅读(290) 评论(0) 推荐(0)

摘要:引入上一篇,怎么使用MyGeneration提供的模板创建存储过程和删除对象存储过程的使用,这篇接下来介绍在NHibernate中如何使用存储过程创建对象、更新对象整个详细过程,这些全是在实际运用中积累的经验,涉及使用的错误信息,如何修改存储过程,并且比较没有使用存储过程的不同点,并非官方比较权威的资料,所以敬请参考,这篇继续,如果你还没有来及看上一篇,那赶紧去看看吧。实例分析2.创建对象Step... 阅读全文

posted @ 2010-10-26 20:29 EVON168 阅读(434) 评论(0) 推荐(0)

摘要:引入上一篇,我们介绍了视图,征集大家的意见,我接下来可能用三篇篇幅来介绍在NHibernate中如何使用存储过程的整个详细过程,这些全是在实际运用中积累的经验,涉及刚刚使用的错误信息,如何修改存储过程,并且比较没有使用存储过程的不同点,并非官方比较权威的资料,所以敬请参考。使用MyGeneration生成存储过程由于写存储过程不是这节的重点,我们来利用MyGeneration代码生成工具来利用为C... 阅读全文

posted @ 2010-10-26 20:28 EVON168 阅读(689) 评论(0) 推荐(0)

摘要:引入在数据库操作中,我们除了对表操作,还有视图、存储过程等操作,这一篇和下篇来学习这些内容。这篇我们来学习如何在NHibernate中使用视图。首先,我们在数据库中建立一个名为viewCustomer视图,选中CustomerId、Firstname、Lastname、OrderId、OrderDate项。下面我们依次为这个视图编写持久化类和映射吧。1.持久化类同持久化数据库中的表类似,我们需要对... 阅读全文

posted @ 2010-10-26 20:26 EVON168 阅读(904) 评论(0) 推荐(0)

摘要:引入通过上一篇的介绍,我们知道了NHibernate中默认的加载机制——延迟加载。其本质就是使用GoF23中代理模式实现,这节我们简单分析NHibernate另一种加载机制——立即加载。我用一张图片形象的展现立即加载机制。立即加载顾名思义,就是立刻加载相关联对象集合,与延迟加载相反。我们可以使用三种方法来立即加载,分别是:可选的lazy属性、NHib... 阅读全文

posted @ 2010-10-26 20:24 EVON168 阅读(485) 评论(0) 推荐(0)

摘要:引入通过前面文章的分析,我们知道了如何使用NHibernate,比如CRUD操作、事务、一对多、多对多映射等问题,这篇我们初步探索NHibernate中的加载机制。在讨论之前,我们看看我们使用的数据模型,回顾一下第二篇建立的数据模型。Customer与Orders是一对多关系,Order与Product是多对多关系。这一篇还是使用这个模型,有关具体配置和映射参考本系列的文章。延迟加载(Lazy L... 阅读全文

posted @ 2010-10-26 20:22 EVON168 阅读(820) 评论(0) 推荐(0)

摘要:多对多关系引入让我们再次回顾在第二篇中建立的数据模型:在图上,我已经清晰的标注了表之间的关系,上两篇分析Customer和Order之间的“外键关系”或者称作“父子关系”、“一对多关系”和关联查询,这一篇以Order为中心,分析Order和Product之间的关系,直接看下面一幅图的两张表:上面两张表关系表达的意思是:Orde... 阅读全文

posted @ 2010-10-26 20:22 EVON168 阅读(221) 评论(0) 推荐(0)

摘要:关联查询引入在NHibernate中提供了三种查询方式给我们选择:NHibernate查询语言(HQL,NHibernate Query Language)、条件查询(Criteria API,Query By Example(QBE)是Criteria API的一种特殊情况)、原生SQL(Literal SQL,T-SQL、PL/SQL)。这一节分别使用这三种方式来关联查询。首先看看上一篇我们为... 阅读全文

posted @ 2010-10-26 20:21 EVON168 阅读(443) 评论(0) 推荐(0)

摘要:引入通过前几篇文章的介绍,基本上了解了NHibernate,但是在NHibernate中映射关系是NHibernate中的亮点,也是最难掌握的技术。从这篇开始学习这些东西,我将图文结合来说明这里奥秘的知识。前几篇,我们的例子只使用了一个简单的Customer对象。但是在客户/订单/产品的经典组合中,他们的关系非常复杂?让我们先回顾在第二篇中建立的数据模型。在图上,我已经清晰的标注了表之间的关系,首... 阅读全文

posted @ 2010-10-26 20:13 EVON168 阅读(411) 评论(1) 推荐(1)

摘要:引入通过前面7篇的学习,有点乏味了~~~这篇来学习一个技巧,大家一起想想如果我要在Customer类中实现一个Fullname属性(就是Firstname和Lastname的组合)该怎么做呢?方案1:直接添加“我知道!修改Customer类,添加一个Fullname属性!即Customer.Fullname!”“恩,完全正确......”“... 阅读全文

posted @ 2010-10-26 20:09 EVON168 阅读(203) 评论(0) 推荐(0)

摘要:什么是并发控制?当许多人试图同时修改数据库中的数据时,必须实现一个控制系统,使一个人所做的修改不会对他人所做的修改产生负面影响。这称为并发控制。简单的理解就是2个或多个用者同时编辑相同的数据。这里的用者可能是:实际用户、不同服务、不同的代码段(使用多线程),及其在断开式和连接式情况下可能发生的情况。并发控制理论根据建立并发控制的方法而分为两类:悲观并发控制(Pessimistic Concurre... 阅读全文

posted @ 2010-10-26 20:05 EVON168 阅读(180) 评论(0) 推荐(0)

摘要:事务概述1.NHibernate中的事务(Transactions)简单描述:要求ISession使用事务;做一些操作;提交或者回滚事务。写成代码就像这样:实际上在NHibernate使用事务要使用using强制资源清理和异常机制,一般像这样:2.什么时候使用事务?回答是:在任何时候都要使用事务,即使是在读取、查询数据的时候,为什么呢?因为你不清楚数据库什么时候操作失败,如何恢复原来数据。而NHi... 阅读全文

posted @ 2010-10-26 20:03 EVON168 阅读(245) 评论(0) 推荐(0)

摘要:操作数据概述我们常常所说的一个工作单元,通常是执行1个或多个操作,对这些操作要么提交要么放弃/回滚。想想使用LINQ to SQL,一切的东西都在内存中操作,只有调用了DataContext.SubmitChanges()方法才把这些改变的数据提交到数据库中,LINQ to SQL那么提交要么回滚。我们使用NHibernate也一样,如果只查询数据,不改变它的值,就不需要提交(或者回滚)到数据库。... 阅读全文

posted @ 2010-10-26 19:59 EVON168 阅读(266) 评论(0) 推荐(0)

摘要:上一节,我们介绍了NHibernate查询语言的一种:NHibernate查询语言(HQL,NHibernate Query Language),这一节介绍一下条件查询(Criteria API)。NHibernate中的查询方法在NHibernate中提供了三种查询方式给我们选择:NHibernate查询语言(HQL,NHibernate Query Language)、条件查询(Criteri... 阅读全文

posted @ 2010-10-26 19:57 EVON168 阅读(398) 评论(0) 推荐(0)

摘要:上一节,我们初步搭建了一个NHibernate程序,完成了映射Customer表并读取数据功能,这一节和下一节我们初步探讨一下在NHibernate中的查询方法。我这之前还是先回忆一下上一节完成的东西,其中一张图很多人回复说非常经典,简单明了!还是看着图。总结一下上一节三个重要的事情:建立数据库表-----编写持久化类-----编写映射文件,然后配置使用了。NHibernate中的查询方法在NHi... 阅读全文

posted @ 2010-10-26 19:56 EVON168 阅读(355) 评论(0) 推荐(0)

摘要:我们亲自动手,来一步一步搭建一个NHibernate程序来,我以一个实际场景电子交易程序来模拟,客户/订单/产品的经典组合。由于是第一次使用NHibernate,所以我们的目的是映射一张表并完成使用NHibernate来读取数据,下面的一幅图片给了我们第一印象。我们按照基本开发软件思想的流程一步一步完成。我使用的开发环境:Microsoft Visual Studio 2008 SP1、SQL S... 阅读全文

posted @ 2010-10-26 19:55 EVON168 阅读(335) 评论(0) 推荐(0)

摘要:NHibernate是什么NHibernate 是一个面向.NET 环境的对象/关系数据库映射工具。对象关系映射(O/R Mapping,Object Relational Mapping)表示一种技术,用来把对象模型表示的对象映射到基于SQL 的关系模型数据结构中去。NHibernate不仅仅管理.NET 类到数据库表的映射(包括.NET 数据类型到SQL 数据类型的映射),还提供数据查询和获取... 阅读全文

posted @ 2010-10-26 19:53 EVON168 阅读(184) 评论(0) 推荐(0)

摘要:在C#中,当出现某种异常时,就会创建一个异常对象。这个对象包含有助于跟踪问题的信息。我们可以创建自己的异常类,但.NET已经提供了许多预定义的异常类 。 [代码][代码] 阅读全文

posted @ 2010-10-18 21:29 EVON168 阅读(167) 评论(0) 推荐(0)

摘要: 阅读全文

posted @ 2010-10-17 18:01 EVON168 阅读(82) 评论(0) 推荐(0)

摘要:[代码] 阅读全文

posted @ 2010-10-16 00:33 EVON168 阅读(169) 评论(0) 推荐(0)

摘要:[代码] 阅读全文

posted @ 2010-10-15 23:04 EVON168 阅读(257) 评论(0) 推荐(0)

摘要:[代码] 阅读全文

posted @ 2010-10-15 22:30 EVON168 阅读(183) 评论(0) 推荐(0)

摘要:[代码] 阅读全文

posted @ 2010-10-12 22:30 EVON168 阅读(119) 评论(0) 推荐(0)

摘要:EmEditor一款非常出色的文字处理软件,它可以打开任意大小的文档,支持无限次撤消、重做,且拥有强大的宏处理能力和众多的优秀插件支持,是最佳的Windows记事本替代工具之一。Emeditor5.0注册码:1812 8697 3961 0886Emeditor6.0注册码:1817599010044106 阅读全文

posted @ 2010-10-12 16:43 EVON168 阅读(960) 评论(0) 推荐(0)

摘要:抽象是纯虚的概念,只是定义;当创建一个类时,有时需要让该类包含一些特殊方法,该类对这些方法不提供实现。但是该类的派生类必须实现这些方法,这些方法称为抽象方法.抽象类:抽象方法必须定义在抽象类中.抽象类中可以出现方法的具体实现或虚方法。抽象类不能直接通过New实例化,必须通过继承自抽象类的子类来实例化。语法:加上关键字abstract 无方法体();优点:抽象方法的优点在于基类无需对抽象方法提供实现... 阅读全文

posted @ 2010-10-11 20:51 EVON168 阅读(177) 评论(0) 推荐(0)

摘要:JCGMJ-TC669-KCBG7-HB8X2-FXG7M JB88F-WT2Q3-DPXTT-Y8GHG-7YYQY 阅读全文

posted @ 2010-10-11 12:45 EVON168 阅读(163) 评论(0) 推荐(0)

摘要:1.可访问性修饰符:Public:对任何类和成员都公开,无限制访问Protected:仅仅对该类及该类的派生类中可公开Private:仅对该类公开Internal:只能在包含该类的程序集中访问该类protected internal:只能在该类,派生类或者包含该类的程序集中访问默认可访问修饰符:namespace--默认public,不允许定义public类--默认为internal类成员--默认... 阅读全文

posted @ 2010-10-06 22:25 EVON168 阅读(232) 评论(0) 推荐(0)

摘要:[代码] 阅读全文

posted @ 2010-10-06 11:16 EVON168 阅读(154) 评论(0) 推荐(0)

摘要:0.定义变量的时候,养成设置初始值的习惯 如int a=0;1.注意这种写法public bool Compare(Client other) { return this.TotalMoney > other.TotalMoney;//值得注意的写法 }2.如果遇到不懂的按F12查看定义3.学习方法---看得懂代码,听得懂 自己建个空白项目的时候就头脑空白---基础不牢怎么办?练------... 阅读全文

posted @ 2010-10-05 23:29 EVON168 阅读(126) 评论(0) 推荐(0)

摘要:[代码] 阅读全文

posted @ 2010-10-04 00:41 EVON168 阅读(148) 评论(0) 推荐(0)