当前位置: 首页 > 编程日记 > 正文

NHibernate和Cuyahoga(二)(翻译):

原文:http://www.cuyahoga-project.org/home/developers.aspx

Mappings: 

       在我们使用像NHibernate这样强大的ORM工具的时候,映射类有时候是相当严格的.这就造成了很大的障碍,尤其是由于没有足够的真实的映射例子(更确切的说,对于Java版本的Hibernate来说,会有更多的例子).
       提示:为了可以更好的理解这片文章, 最好有一份Cuyahoga源码. 在这片文章内有引用到源码的连接.

Mapping Files:
 

       和其他的NHibernate例子一样,映射文件被组织在一起. 对于每一个Domain类,都有一个包含映射信息的.hbm.xml文件.这些文件作为资源文件被编译进程序集中了.你可以看到他们和domain类一起被放在Cuyahoga/Core/Domain文件夹中.
       在Modules中,映射文件和其他的Modules的文件一样被放在相同的文件夹下(ArticlesModules是最好的演示.).
 
Common Aspects in Mapping Files: 

       大多数的映射文件内有通常有两部分:

1: 数据库中Key通常是自动生成的, 反应在映射文件中的结果如下元素:

None.gif<id name="Id" column="nodeid" type="Int32" unsaved-value="-1"> 
None.gif        
<generator class="native"> 
None.gif        
<param name="sequence">cuyahoga_node_nodeid_seq</param> 
None.gif        
</generator> 
None.gif
</id> 

对于PostgreSQL数据库这个sequence元素是必需的,而对于其他的(SQLServer, MySQL)可以忽略的.

2: Timestamps 是用于乐观并发的.

None.gif       <timestamp name="UpdateTimestamp" column="updatetimestamp" /> 

对于version元素使用版本号是明智的,但是既然Cuyahoga在使用NHibernate以前就已经在数据库中使用了updatetimestamp, 那么实现
        客观并发是相当容易的.

So, how can I learn a bit more about mappings?
 

       恩….., 映射是非常的多的以至于不能够解释所有的细节. 最好的方法是在Class Diagram和DataBase Diagram的帮助下浏览代码. 
Cuyahoga.Core.Domain.Node类也许是最好的开始. 他和其他的类有好几个关系, 包括双向的(是的, inverse相关)和怎么映射联合类. 
      
         为了整体上了解, 你可能已经想察看Admin页面的代码,看看这些映射对象是怎么样运行的.这些管理页面比起那些面向最终用户的页面(例如Cuyahoga.Web.UI.PageEngine类)要更加直接而且更加容易理解.

Reference:
 

       下面这张表简要的说明了在Cuyahoga中的映射,并且指出哪里可以找到这些类.

Relation type

Collection type

Mapping file

Classes

Remarks

one-many

bag

Node.hbm.xml

Node <-> Section

bi-directional

 

 

 

Node <-> Node (parent-child)

bi-directional

 

 

ModuleType.hbm.xml

ModuleType -> ModuleSetting

composite element

 

map

Section.hbm.xml

Section -> Settings

name-value pairs

 

 

 

 

 

 

 

 

 

 

many-many

bag

User.hbm.xml

User -> Role

 

 

 

Node.hbm.xml

Node -> Role

NodePermission as association class, composite element

 

list

Menu.hbm.xml

Menu -> Node

 

 

 

 

 

 

many-one

N/A

Node.hbm.xml

Node <- Site

bi-directional

 

 

 

Node <- Template

 

 

 

 

Node <- Node (parent-child)

bi-directional

 

 

Section.hbm.xml

Section <- ModuleType

 

 

 

 

Section <- Node

bi-directional

 

 

Article.hbm.xml (in ArticleModule)

Article <- Category

 

 

 

 

Article <- Section

multi-assembly

 

 

 

Article <- User

multi-assembly

转载于:https://www.cnblogs.com/guaiguosh/archive/2005/11/13/275352.html

相关文章:

Enterprise Library Step By Step系列(十二):异常处理应用程序块——进阶篇

一&#xff0e;把异常信息Logging到数据库在日志和监测应用程序块中&#xff0c;有朋友提意见说希望能够把异常信息Logging到数据库中&#xff0c;在这里介绍一下具体的实现方法。1&#xff0e;创建相关的数据库环境&#xff1a;我们可以用日志和监测应用程序块自带的SQL语句来…

观点PK_倘若做不好AI,云服务商还能勇往直前吗?

AI强大却不独立存在&#xff0c;如今已经成为人们普遍接受的理念之一。在这个火热的时代&#xff0c;AI技术不是一个独立的产品&#xff0c;而是一种“基本生产力”&#xff0c;它适用于大部分经济活动&#xff0c;可以让各行各业都产生“增倍效应”&#xff0c;可以预见的是&a…

练习 MongoDB 操作 —— 备份篇(三)

2019独角兽企业重金招聘Python工程师标准>>> mongodb数据备份和还原主要分为二种&#xff0c; 一种是针对于库的mongodump和mongorestore&#xff0c; 一种是针对库中表的mongoexport和mongoimport。 mongodb 数据库操作--备份 还原 导出 导入 导入与导入 导入与导出…

判断是否为闰年oracle,ORACLE 通过日期变量判断是否闰年

最近在做同比环比报表&#xff0c;2月份的日期需要判断是否闰年&#xff0c;在网上查了很多资料&#xff0c;大部分都是用sysdate说明的&#xff0c;不是很理想&#xff0c;自己捣鼓了半天&#xff0c;终于整出来了。跟大家分享下。declarevbdate date;V_LASTDAY NUMBER(2,0);V…

CentOS 6.x中目录结构及用途

目录名称作用/根目录&#xff0c;一般根目录下只存放目录&#xff0c;不要存放文件/bin存放普通用户可执行的系统命令/sbin存放的是超级管理员执行的系统命令/etc系统管理和配置文件存放路径/etc/rc.d启动的配置文件和脚本存放目录/etc/passwd系统用户密码文件&#xff0c;包含…

oracle dataguard 日志 很多no,oracle dataguard 日志传输原理

Services)&#xff0c;它不仅控制着传输redo数据到其它数据库&#xff0c;同时还管理着解决由于网络中断造成的归档文件未接收的过程。一、如何发送数据在primary数据库&#xff0c;DataGuard可以使用归档进程(ARCn)或者日志写进程(LGWR)收集redo数据并传输到standby&#xff0…

“偷鸡”不成的马斯克,终于丢掉了自己的“王位”

整理 | 非主流出品 | AI科技大本营&#xff08;公众号ID&#xff1a;rgznai100&#xff09;昨天&#xff0c;好战的马斯克丢了一血。据多家外媒报道&#xff0c;美国当地时间周六&#xff0c;埃隆马斯克与美国证券交易委员会&#xff08;SEC&#xff09;达成和解协议。马斯克必…

JVM指令详解(上)

文中提及的栈是虚拟机栈中的栈帧的操作数栈&#xff0c;本地变量表是栈帧中的本地变量表&#xff0c;如下图:/*** Author: qlq* Description* Date: 22:44 2018/9/25*/ public class MathTest {public static void main(String a[]){MathTest mathTest new MathTest();System.…

oracle修改时区无效,Oracle 时区问题

oracle中的tz_offset是用来返回给定时区与标准时区(UTC universal of time Coordinate 通用时间坐标)的偏移量&#xff0c;其参数可以是&#xff1a;1.一个合法的时区名2.一个离UTC的标准偏移量3.关键字SessionTimeZone或者是DB_timezone其中合法的时区名可以从系统视图V$TimeZ…

::operator new、sgi stl alloc、dlmalloc测试结果

注&#xff1a; 使用的dlmalloc为2.8.3版本使用GetTickCount()&#xff0c;测试1000000次的new/delete分配空间大小为2的幂&#xff0c;依次递增在Debug模式下sgi-stl alloc > dlmalloc > ::operator new在Release模式下dlmalloc > sgi-stl alloc > ::operator new…

假期快乐!超强面试资源等你Pick,先收藏!

整理 | Jane 出品 | AI科技大本营 【导读】准备面试不是一件简单的事情&#xff0c;本文的作者在过去一段时间先后参加 50 多次面试。过程是艰难的&#xff0c;但是在这个过程中也积累了一些非常有用的资源。今天 AI科技大本营就为大家整理了那些有价值的学习资源&#xff0c;…

oracle判断值是否为0的高数,SQLServer和Oracle的常用函数对比

数学函数1.绝对值S:select abs(-1) valueO:select abs(-1) value from dual2.取整(大)S:select ceiling(-1.001) valueO:select ceil(-1.001) value from dual3.取整(小)S:select floor(-1.001) valueO:select floor(-1.001) value from dual4.取整(截取)S:select cast(-1.002 …

9月机器学习开源项目Top10

作者 | Mybridge译者 | 王天宇整理 | Jane出品 | AI科技大本营【导读】我们从过去一个月近 250 个有关机器学习的开源项目中&#xff0c;精心挑选出了最热门的 10 个。在挑选过程中&#xff0c;我们始终在各个项目之间作比较。Mybridge AI 基于大量的因素来估量项目的专业水平&…

翻译:CREATE DATABASE语句

本文为mariadb官方手册&#xff1a;CREATE DATABASE的译文。 原文&#xff1a;https://mariadb.com/kb/en/create-database/我提交到MariaDB官方手册的译文&#xff1a;https://mariadb.com/kb/zh-cn/create-database/ 语法 CREATE [OR REPLACE] {DATABASE | SCHEMA} [IF NOT …

Consultanting Service

在我所做的咨询顾问工作中最耗费精力的事情就是去客户那边提案&#xff0c;对于咨询公司来说&#xff0c;这个过程就像高考一样。 这里的提案指的是&#xff0c;咨询公司给企业做的报告或者方案的演示 。提案之所以重要&#xff0c;是因为它质量的好坏直接关系到客户是否会继续…

第三次组织架构变动背后,腾讯AI走向何方?

AI科技大本营注&#xff1a;在 9 月末一场轰轰烈烈的“甚至连腾讯人自己都是睡梦中得知”的组织架构大调整后&#xff0c;不少业内人士给出了对暴风雨中腾讯的上帝视角评价。据了解&#xff0c;此次腾讯组织架构调整&#xff0c;酝酿已久&#xff0c;在腾讯内部早已不是秘密。如…

使按钮响应回车键

定在<head></head>之间 <script language"javascript"event"onkeydown"for"document">if(event.keyCode13) { document.all(Button1).focus(); document.all(Button1).click(); }</script> 转载于:https://www.cnb…

oracle cusor游标,ORACLE CURSOR 游标详解

DECLAREsqlStr VARCHAR2(2000); --拼写sqlflag int; --判断是否存在col_name VARCHAR2(100); --字段名字tab_name VARCHAR2(100); --表名col_type VARCHAR2(100); --表名operator_str VARCHAR2(100) : ;FindUser VARCHAR2(50) :ERSAFETY; --要查…

【播放器SDK】Android如何实现固定竖屏播放视频

安卓的固定竖屏播放并不受手机是否开启旋转的限制&#xff0c;需要用户设置Activity为固定竖屏。目前带皮肤的播放器内部对竖屏播放视频做了一定的支持.用户使用相对比较简单. 带皮肤播放器 参考Demo代码FixedSkinActivity 1.在onCreate里面设置当前Activity为固定竖屏模式. se…

命令别名的设置alias,unalias

alias命令的作用是为系统中的命令设置别名&#xff0c;如果常用命令比较长&#xff0c;那么为其设置别名可以简化用户操作&#xff0c;例如为ls -l | more命令设置别名lm&#xff0c;这样只需要输入lm就可以得到和 ls -l | more相同的效果;为rm -i设置别名为rm&#xff0c;可以…

重磅!Facebook公布PyTorch 1.0预览版!

作者 | 琥珀 出品 | AI科技大本营&#xff08;公众号ID&#xff1a;rgznai100&#xff09; 今日&#xff0c;Facebook 宣布发布深度学习框架 PyTorch 1.0 开发者预览版&#xff0c;包括一些列工具和集成&#xff0c;使其与 Google Cloud、AWS、Azure 的机器学习服务更为兼容。…

cisco路由器视频下载

总共133M&#xff0c;我进行了两次压缩&#xff0c;才压缩到23M, 有拓扑图&#xff0c;对于新手学习非常有用。具体下载,我放到论坛上:有兴趣的网友,请到:http://bbs.51cto.com/viewthread.php?tid8652&extrapage%3D1转载于:https://blog.51cto.com/eskystar/2571

linux进程状态d状态,Linux下进程的状态

如下信息来自于命令man psHere are the different values that the s, stat and state output specifiers (header "STAT" or "S") will display to describe the state of a process:D uninterruptible sleep (usually IO)R running or runnable (on run …

linux哪个版本支持多线程,关于Linux操作系统的叙述错误的是()A、Linux是多用户、多任务、支持多线程的操作系统B、Linux的源...

【多选题】以下哪些是藏族崇尚白色的体现。【判断题】等到口语出现后&#xff0c;非语言表达便消失了。冷变形金属在加热时&#xff0c;随加热温度的升高&#xff0c;发生[填空(1)][填空(2)][填空(3)]莫菲(&#xff2d;&#xff55;&#xff52;&#xff50;&#xff48;&#…

马斯克受罚离任董事长,默多克之子或将成接替者!

美国东部时间 10 月 3 日上午&#xff0c;特斯拉公司股价早盘出现波动。期间&#xff0c;特斯拉创始人兼 CEO 埃隆马斯克&#xff08;Elon Musk&#xff09;被迫接受美国证券交易委员会&#xff08;SEC&#xff09;指控&#xff0c;并威胁离开董事会、新任董事长继任的消息传开…

Log4j使用技巧——让子类使用父类中定义的Logger

关于Log4j&#xff0c;是一个很庞大的话题&#xff0c;在这里&#xff0c;我不能对其特点和使用方法进行一一描述&#xff0c;只想记录自己在使用Log4j开发项目的过程中遇到的一些问题和自己的解决方案。在项目中&#xff0c;有时候会遇到这么一种情况&#xff0c;我们需要记录…

区分json与jsonp

JSON(JavaScript Object Notation)和JSONP(JSON with Padding)虽然只有一个字母的差别&#xff0c;但其实他们根本不是一回事儿,下边简单区分概括一下&#xff1a; JSON是一种数据交换格式&#xff0c;而JSONP是一种依靠开发人员的聪明才智创造出的一种非官方跨域数据交互协议。…

通俗理解PCA降维作用

作者 | 黄礼泊&#xff0c;广东工业大学数据挖掘与信息检索实验室(DMIR)&#xff0c;机器学习与人工智能&#xff0c;目前研究方向最优化&#xff0c;将最优化理论运用在图像检索、压缩感知生物信号处理等领域。▌概述 本文主要介绍一种降维方法&#xff0c;PCA&#xff08;Pr…

windows和linux添加引导文件,Linux与Windows 10用grub引导教程-Go语言中文社区

前言去年暑假的时候&#xff0c;写了一篇如何装 Linux 和 Windows 10 双系统的文章发在了简书上&#xff0c;我写这篇文章的原因是当初装双系统确实是折腾了许久&#xff0c;网上也找不到一篇详尽的教程。由于去年对于写教程还不是熟练&#xff0c;而这一年多的使用过程也遇到了…

使用Apache对Tomcat进行负载均衡

翻译&#xff1a;疯狂的技术宅原文标题&#xff1a;Load balancing tomcat with Apache原文链接&#xff1a;http://programmergate.com/loa...本文首发微信公众号&#xff1a;充实的脑洞有时候我们需要把自己的应用部署在多个Tomcat实例上&#xff0c;这种场景通常是在使用大量…