NPA——.NET Persistence API
你可曾听说过JPA。
有JPA那么就一定有NPA。
软件架构的路上一定少不了这个名词。
——————————————————————————————————————————————
P
Persistenc
持久化
所以它一定是基于O/RM的。
那么很容易理解,它封装了O/RM,
不管你使用何种O/RM,都需要对O(object)的操作,
简单来说,提取他们的接口就成了NPA。
每个映射的实体可能都需要类似Save,Update,Delete,Get等操作,
扩展开来有GetAll,GetBy条件,GetCount,及分页等操作。
引入NPA的好处就是可以省去这些操作的具体实现,
不管你是手动编写他们,或是使用代码生成器生产他们,都可以解放你的一切,简化你的代码生成器。
O/RM对开发者来说是半透明的。
为什么不是全透明的?
全透明过于理想化,还存在着以下几个问题:
1、映射,各种ORM也许都有以上提到的操作方法,但它们的映射办法绝对不会相同,从这里也可以看出NPA不需要支持多种ORM,只需要支持一种即可。
2、控制力,直接使用ORM都会带来很大的争议,性能与效率是永恒的话题,如果再过分的封装,那么势必造成开发者对自己代码控制力的不足。
有必要引入NPA的思想吗?
不好说,看个人。
这个世界什么都追求效率,简单说就是一个字,“快”。
互联网公司拼了命赶上线时间,快递哥也是拼了命的赶时间,快餐业也是拼了命的30秒餐到你手。
引入NPA的时间成本,与日后驾驭后的产出,值不值得,这个只能问自己。
如何引入NPA?
本人从纯手写SQL--》封装DBHELPER--》引入简单ORM--》精通轻量级ORM
--》轻量级ORM与传统数据访问方法结合--》去除ORM特有的配置文件
--》封装ORM的基本操作--》打造NPA专用的代码生成器
历经多年时间逐步完善。
不是那个NPA。
老外有个将JPA移植到.NET平台的NPA,
初看了下接口封装的不是很喜欢,
都说老外在软件方面领先国人,但也不是所有老外都能超越所有国人的。
那么在哪可以看到NPA
我的博文中,软件架构设计一类的,都带有些它的思想,
因为本人使用的ORM是NHibernate,你以后会看到一个版本,
这个版本你看不到NHibernate麻烦的XML配置文件,即使是代码生成器,也只是生成了很简单的代码,
简单的映射,简单的使用,“一个框架两套数据访问机制”。
NPA——.NET Persistence API的更多相关文章
- Java Persistence API(转)
定义 Java Persistence API JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中.[编辑本段]起源 Sun引入新的JPA ORM规范 ...
- Java EE (4) -- Java EE 6 Java Persistence API Developer Certified Expert(1z0-898)
Overview of the Java Persistence API Describe the basics of Object Relational Mapping (ORM) Define t ...
- JAVA PERSISTENCE API (JPA)
13.2.1. About JPA The Java Persistence API (JPA) is the standard for using persistence in Java proje ...
- JPA(Java Persistence API)Java持久化API-介绍
JPA全称: Java Persistence API JPA的宗旨是为POJO提供持久化标准规范,能够脱离容器独立运行,很方便开发和测试.JPA通过JDK 5.0注解或XML描述对象-关系表的映射关 ...
- 关于注解-Hebernate与JPA(java persistence api)
The JPA spec. defines the JPA annotation in the javax.persistence package. Hibernate not only implem ...
- Hibernate操作指南-搭建一个简单的示例(基于Java Persistence API JPA)
- JPA使用指南 javax.persistence的注解配置
@SuppressWarnings("serial") @Entity @Table(name="T_X") public class X implements ...
- JPA入门例子(采用JPA的hibernate实现版本) --- 会伴随 配置文件:persistence.xml
JPA入门例子(采用JPA的hibernate实现版本) 分类: j2se2011-03-30 16:09 45838人阅读 评论(9) 收藏 举报 jpahibernate数据库jdbcjava框架 ...
- spring boot(五):spring data jpa的使用
在上篇文章springboot(二):web综合开发中简单介绍了一下spring data jpa的基础性使用,这篇文章将更加全面的介绍spring data jpa 常见用法以及注意事项 使用spr ...
随机推荐
- freemarker种种
#include要使用绝对路径的话,在路径最前面加个"/"就行--<#include "/includes/v2/headerMacro.ftl"> ...
- C#笔记
关键字: 1.internal 被 internal 修饰的东西只能在本程序集(当前项目)内被使用. 注意事项: 1.解决c#代码引用c/c++代码出现的unsafe code错误警告提示 Unsaf ...
- 搭建自己的网站之一:如何在linux下使用tomcat
1. 要打造自己的网站,首先应该有属于自己的服务器.个人的话可以在阿里云或者腾讯云购买云主机,需要的话再购买一个域名,与自己的公网ip绑定(不然只能由ip地址访问,当然,自己用来练手的话是没什么问题的 ...
- JSP和Servlet的中文乱码处理
JSP和Servlet的中文乱码处理 前几天学习了JSP和Servlet中有关中文乱码的一些问题,写成了博客,今天进行更新一下.应该是可以解决日常的乱码问题了.现在作以下总结希望对需要的人有所帮助.我 ...
- c#上级目录
本文实例讲述了C#的path.GetFullPath 获取上级目录实现方法,分享给大家供大家参考.具体实现方法如下: string path = new directoryinfo("../ ...
- js中网页区域/正文/屏幕 宽和高
网页可见区域宽: document.body.clientWidth; 网页可见区域高: document.body.clientHeight; 网页可见区域宽: document.body.offs ...
- bootstrap学习笔记--bootstrap组件
前面已经学习了bootstrap环境搭建以及基本布局方面的知识,下面将学习下关于bootstrap的相关组件,知识点有点多. 关于bootstrap组件知识点目录: Bootstrap--代码显示 B ...
- thinkphp3.2.3版本文件目录及作用
下载thinkphp3.2.3版本,解压缩后将文件夹名字改为thinkphp,然后放在www目录下,里面的文件夹和文件的名字和作用如下:(前面有Tab健的表示下一级,thinkphp是根目录) //t ...
- 学习篇:TypeCodes的2015年博客升级记
原文: https://typecodes.com/mix/2015updateblog.html 2015年博客升级记 作者:vfhky | 时间:2015-05-23 17:25 | 分类:mix ...
- C语言产生标准正态分布或高斯分布随机数
C语言 产生标准正态分布或高斯分布 随机数 产生正态分布或高斯分布的三种方法: 1. 运用中心极限定理(大数定理) #include #include #define NSUM 25 double g ...