编程思考 开发框架基础

编程思考 开发框架基础

数据库ORM框架:
NHIBERATE:
NHibernate是一个基于.Net,用于关系数据库的对象持久化类库.它是著名的Hibernate的.Net版本.
NHibernate用于把你的.Net对象持久化到底层的关系数据库中.你完全不用自己编写Sql语句去操作这些对象,NH会代替你做。你的代码里面只需要关心这些对象,NH自动生成sql语句并能为你取到正确的数据。
 
NH的基本步骤: 
1.       在数据库中建表.
2.       创建需要被持久化的.Net类.
3.       创建XML映射文件,以告诉NH怎样持久化这些类的属性.
4.       创建NH的配置文件,以告诉NH怎样连接数据库.
5.       使用NH提供的API,获得数据各种操作
 
 
 
 
IBATIS.NET:
iBATIS一词来源于“internet”和“abatis”的组合,是一个由Clinton 
Begin在2001年发起的开放源代码项目。最初侧重密码软件的开发,现在是一个持久层框架。iBATIS提供的持久层框架包括SQLMaps和Data Access Objects(DAO)。iBATIS 目前提供了三种语言实现的版本,包括:Java、.NET以及Ruby。IBATIS.NET是其.net版本的名称
 
 
 
 
LINQ:
LINQ是.NET语言集成查询,.NET Framework 3.5 版中一项突破性的创新,它在对象领域和数据领域之间架起了一座桥梁。传统上,针对数据的查询都是以简单的字符串表示,而没有编译时类型检查或IntelliSense支持。此外,还必须针对以下各种数据源学习不同的查询语言:SQL 数据库、XML 文档、各种 Web 服务等。LINQ 使查询成为 C# 和 Visual Basic 中的语言集成。可以使用语言关键字和熟悉的运算符针对强类型化对象集合编写查询。可以为SQL Server 数据库、XML文档、ADO.NET 数据集以及支持 IEnumerable 或泛型 IEnumerable<(Of <(T>)>) 接口的任意对象集合查询。
 
 
 
 
ADO.NET Entity Framework:
实体框架 是 ADO.NET 中的一组支持开发面向数据的软件应用程序的技术。实体框架 使开发人员可以采用特定于域的对象和属性(如客户和客户地址)的形式使用数据,而不必自己考虑存储这些数据的基础数据库表和列。通过提升开发人员在处理数据时可以使用的抽象级别并减少创建和维护面向数据的应用程序所需的代码。因为 实体框架 是 .NET Framework 的一个组件,所以 实体框架 应用程序可以在安装了 .NET Framework 3.5 Service Pack 1 (SP1) 的任何计算机上运行。
 
为概念模型赋予生命
数据建模的一种由来已久且常见的设计模式是将数据模型分为三个部分:概念模型、逻辑模型和物理模型。概念模型定义要建模的系统中的实体和关系。关系数据库的逻辑模型通过外键约束将实体和关系规范化到表中。物理模型通过指定分区和索引等存储详细信息实现特定数据引擎的功能。
 
物理模型由数据库管理员进行优化以改善性能,而编写应用程序代码的程序员的工作主要限制为通过编写 SQL 查询和调用存储过程来处理逻辑模型。概念模型通常用作捕获和传达应用程序的要求的工具,常常以静态关系图的形式供项目早期阶段查看和讨论,随后被弃用。许多开发团队会跳过概念模型的创建,直接从指定关系数据库中的表、列和键开始工作。
 
实体框架 可使开发人员查询概念模型中的实体和关系,同时依赖于 实体框架 将这些操作转换为特定于数据源的命令,从而为概念模型赋予生命。这使应用程序不再对特定数据源具有硬编码的依赖性。概念模型、存储模型以及两个模型之间的映射以外部规范(称为 实体数据模型 (EDM))表示。可以根据需要对存储模型和映射进行更改,而不需要对概念模型、数据类或应用程序代码进行更改。存储模型是特定于提供程序的,因此可以在各种数据源之间使用一致的概念模型。
 
EDM 由以下三种模型和具有相应文件扩展名的映射文件进行定义。
 
概念架构定义语言文件 (.csdl) — 定义概念模型。
 
存储架构定义语言文件 (.ssdl) — 定义存储模型(又称逻辑模型)。
 
映射规范语言文件 (.msl) — 定义存储模型与概念模型之间的映射。
 
实体框架 使用这些基于 XML 的模型和映射文件将对概念模型中的实体和关系的创建、读取、更新和删除操作转换为数据源中的等效操作。EDM 甚至支持将概念模型中的实体映射到数据源中的存储过程。有关更多信息,请参见 实体框架中的数据建模。
 
将对象映射到数据
面向对象的编程对与数据存储系统的交互提出了一个难题。虽然类的组织通常可比较接近地反映出关系数据库表的组织,但是拟合程度并不完美。多个规范化表通常对应于单个类,类之间的关系并未按照表之间的关系一样表示。例如,若要表示某个销售订单的客户,一个 Order 类可使用包含对 Customer 类实例的引用的属性,但是数据库中的一个 Order 表行包含的一个外键列(或列集)具有对应于 Customer 表中的主键值的值。一个 Customer 类可以具有名为 Orders 的属性,该属性包含 Order 类的实例的集合,但是数据库中的 Customer 表不包含相应的列。
 
现有解决方案只能通过将面向对象的类和属性映射到关系表和列来尝试弥合这种通常称为“阻抗不匹配”的差异。实体框架 没有采用这种传统方法,而是将逻辑模型中的关系表、列和外键约束映射到概念模型中的实体和关系。这在定义对象和优化逻辑模型方面都增加了灵活性。实体数据模型 工具基于概念模型生成可扩展数据类。这些类是分部类,可以通过开发人员添加的其他成员进行扩展。为特定概念模型生成的类派生自一些基类,这些基类提供对象服务以将实体具体化为对象以及跟踪和保存更改。开发人员可以使用这些生成的类以由导航属性关联起来的对象的形式来处理实体和关系。
 
 
 
 
Javascript框架
ExtJS:
ExtJS是一个用javascript写的,主要用于创建前端用户界面,是一个与后台技术无关的前端ajax框架。因此,可以把ExtJS用在.Net、Java、Php等各种开发语言开发的应用中。ExtJs 最开始基于 YUI 技术,由开发人员 Jack Slocum 开发,通过参考 Java Swing等机制来组织可视化组件,无论从 UI 界面上 CSS 样式的应用,到数据解析上的异常处理,都可算是一款不可多得的 JavaScript 客户端技术的精品。

 

转载于:https://www.cnblogs.com/Sky-cloudless/p/4254939.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/109570.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • php curl_init post/get请求

    php curl_init post/get请求publicfunctiongetCurlApi(){$url=’地址’;$headers=array(‘access_token:’.$token);$curl=curl_init();curl_setopt($curl,CURLOPT_URL,$url);//设置调用地址curl_setopt($curl,CURLOPT_HTTPHEADER,$headers);//添加头…

    2022年7月12日
    19
  • jvm的垃圾回收_java垃圾回收方法

    jvm的垃圾回收_java垃圾回收方法上文回顾:《可能是把Java内存区域讲的最清楚的一篇文章》写在前面本节常见面试题:问题答案在文中都有提到如何判断对象是否死亡(两种方法)。简单的介绍一下强引用、软引用、弱引用、虚引用(虚引用与软引用和弱引用的区别、使用软引用能带来的好处)。如何判断一个常量是废弃常量如何判断一个类是无用的类垃圾收集有哪些算法,各自的特点?HotSpot为什么要分为新生代和老年代?…

    2025年10月27日
    4
  • 初笔,JAVA.HelloWorld代码详解「建议收藏」

    初笔,JAVA.HelloWorld代码详解「建议收藏」HelloWorld.java//文件名publicclassHelloWorld{  publicstaticvoidmain(String[]args){    System.out.println(“HelloWorld!!!”);}}详解:publicclassHelloWorld:class:翻译过来就叫:类,可以理解为是JAVA中一种文件的名字….

    2022年5月28日
    35
  • Axis2创建WebService实例(转载)

    Axis2创建WebService实例(转载)博文地址:http://clq9761.iteye.com/blog/976029

    2022年7月21日
    12
  • 2021年总结:缘起性空,归来不少年——回顾这荆棘的一年

    2021年总结:缘起性空,归来不少年——回顾这荆棘的一年2021年已经离去,感谢大家的陪伴和帮助,感谢家人的鼓励。转眼,这已是我在CSDN写下的第九篇年终总结,真是岁月如梭。《缘起性空,归来不少年》。是啊,归来不再少年,我已经是而立之年了。当我写下这几个字的时候,心里还沉甸甸的。曾经的我总以为,博士毕业继续回到贵州教书,陪伴家人,仍是少年,真的如此吗?或许现实将更加残忍,岁月将不饶人,这荆棘一年让我意识到,我已为人父,不再少年。

    2022年4月30日
    55
  • 你不知道的PreparedStatement预编译[通俗易懂]

    你不知道的PreparedStatement预编译[通俗易懂]大家都知道,Mybatis内置参数,形如#{xxx}的,均采用了sql预编译的形式,大致知道mybatis底层使用PreparedStatement,过程是先将带有占位符(即”?”)的sql模板发送至mysql服务器,由服务器对此无参数的sql进行编译后,将编译结果缓存,然后直接执行带有真实参数的sql。如果你的基本结论也是如此,那你就大错特错了。目录1.mysql是否默认开启了预编译功…

    2022年5月30日
    31

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号