[NHibernate]视图处理

作者: 云计算机网 分类: 云计算知识 发布时间: 2016-09-27 04:34

写在前面

前面的文章主要讲了对物理数据表的操作,当然了Nhibernate同样可以操作视图,本文将讲nhibernate对视图操作的种种。

视图

首先创建一个VW_CustomerOrder(采用同数据表相同的命名规则,如数据表TB_Customer)的视图,选中CustomerID,CustomerName,CustomerAddress,OrderID,OrderDate字段

一个例子

添加视图的持久化类

 1 namespace Wolfy.Shop.Domain.Entities 2 { 3     /// <summary> 4     /// 描述:客户订单视图持久化类 5     /// 创建人:wolfy 6     /// 创建时间:2014-11-08 7     /// </summary> 8     public class CustomerOrderView 9     {10         /// <summary>11         /// 客户id12         /// </summary>13         public virtual Guid CustomerID { get;private set; }14         /// <summary>15         /// 客户姓名16         /// </summary>17         public virtual string CustomerName { get; private set; }18         /// <summary>19         /// 客户住址20         /// </summary>21         public virtual string CustomerAddress { get; private set; }22         /// <summary>23         /// 订单id24         /// </summary>25         public virtual Guid OrderID { private set; get; }26         /// <summary>27         /// 下单时间28         /// </summary>29         public virtual DateTime OrderDate {private set; get; }30     }31 }

注意:对视图最常用的是查询操作,视图是一张虚表,也就是只读的(数据的来源是来自物理表的)。所以这里将持久化类的属性设置为只读的(private set)就可以了,如果真想修改数据了,就通过修改物理表的数据。
编写映射文件CustomerOrderView.hbm.xml

 1 <?xml version='1.0' encoding='utf-8' ?> 2 <!--assembly:程序集,namespace:命名空间--> 3 <hibernate-mapping  xmlns='urn:nhibernate-mapping-2.2' assembly='Wolfy.Shop.Domain'  namespace='Wolfy.Shop.Domain.Entities'> 4   <class name='Wolfy.Shop.Domain.Entities.CustomerOrderView,Wolfy.Shop.Domain' table='VW_CusomterOrder' mutable='false'> 5     <!--主键--> 6     <id name='CustomerID' type='Guid' unsaved-value='null'> 7       <column name='CustomerID' sql-type='uniqueidentifier' not-null='true' unique='true'/> 8       <generator class='assigned'></generator> 9     </id>10     <property name='CustomerName' column ='CustomerName' type='string'11                          length='16' not-null='false' />12     <property name ='CustomerAddress' column='CustomerAddress' type='string'13                          length='128' not-null='false' />14     <property name='OrderID' column='OrderID' type='Guid' not-null='true'/>15     <property name='OrderDate' column='OrderDate' type='DateTime' />16   </class>17 </hibernate-mapping> 

  • 北卡罗莱纳州立大学的研究人员们最近开发出了两种新的技术,可让多核心处理器更高效地获取数据,从而提升10-40%的性能。

    在这篇名为《多核心处理器的硬件预取与带宽分配研究》的论文中,研究人员们主要探讨了多核心处理器的带宽分配和数据预取问题。

    随着处理器核心数量的增多,对外联络带宽日渐拥挤,系统性能也难免受到影响。

    解决办法之一就是加大每个核心的缓存,但预测精准度非常重要,不然反而会让错误的数据占用更多带宽。

    北卡罗莱纳州立大学电机与计算机工程系副教授、论文作者之一Yan Solihin解释说他们为此开发了两种新技术,其中之一可以利用从处理器中硬件计数器轻松获得的数据,决定每个核心能分配到多少带宽,而通过为不同核心分配不同的带宽,能够实现系统性能的最大化。

    第二项技术用来确定数据预取何时能够提升性能,以及何时会拖慢性能,从而决定在不同的条件下是否使用它。

    这里同样用到了来自硬件计数器的数据。

    有了这项技术,处理器的每个核心都可以按照需要自动开启和关闭预取,提高协作效率。

    有了这两项技术,研究人员们发现多核心处理器会比始终预取数据时性能提升10%,比始终不预取的时候则提升40%。

    (责任编辑:admin)

  • 相关推荐:

  • 两大新招让多核心处理器
  • 大数据处理分析的六大工
  • 聚焦三大场景戴尔易安信
  • 当PowerEdge服务器遇到EP
  • 数据洪流下英特尔至强可
  • 富士通展示DataffinicComp
  • wps纵向打印方法教程
  • 美图秀秀怎么批量处理图
  • 视频文件无法渲染怎么处
  • 详解intel处理器命名规则
  • 网站内容禁止违规转载,转载授权联系中国云计算网