你可曾听说过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的更多相关文章

  1. Java Persistence API(转)

    定义 Java Persistence API JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中.[编辑本段]起源 Sun引入新的JPA ORM规范 ...

  2. 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 ...

  3. JAVA PERSISTENCE API (JPA)

    13.2.1. About JPA The Java Persistence API (JPA) is the standard for using persistence in Java proje ...

  4. JPA(Java Persistence API)Java持久化API-介绍

    JPA全称: Java Persistence API JPA的宗旨是为POJO提供持久化标准规范,能够脱离容器独立运行,很方便开发和测试.JPA通过JDK 5.0注解或XML描述对象-关系表的映射关 ...

  5. 关于注解-Hebernate与JPA(java persistence api)

    The JPA spec. defines the JPA annotation in the javax.persistence package. Hibernate not only implem ...

  6. Hibernate操作指南-搭建一个简单的示例(基于Java Persistence API JPA)

  7. JPA使用指南 javax.persistence的注解配置

    @SuppressWarnings("serial") @Entity @Table(name="T_X") public class X implements ...

  8. JPA入门例子(采用JPA的hibernate实现版本) --- 会伴随 配置文件:persistence.xml

    JPA入门例子(采用JPA的hibernate实现版本) 分类: j2se2011-03-30 16:09 45838人阅读 评论(9) 收藏 举报 jpahibernate数据库jdbcjava框架 ...

  9. spring boot(五):spring data jpa的使用

    在上篇文章springboot(二):web综合开发中简单介绍了一下spring data jpa的基础性使用,这篇文章将更加全面的介绍spring data jpa 常见用法以及注意事项 使用spr ...

随机推荐

  1. php 2038年问题

    在mysql中存放日期时可以存放整数 (int),  而int可以存放的数据最大为4294967295(无符号), 而php最大为2147483647, 要显示一个大于2038年日期,该如何处理 ? ...

  2. 一个解析json串并组装echarts的option的函数解析

    缘起: 在组装echart页面的时候,遇到这样一个问题,它是一个需要在循环内层的时候,同时循环外层,在内层循环中就要将外层获取的值存入,导致了一种纠缠状态,费了老劲儿,终于得到如下解决.记录之,绿色为 ...

  3. 练习JavaScript实现梯形乘法表

    效果: 表格用html中的table,tr,td,然后利用for语句实现,循环输出行和列,再根据行列的数量进行乘法运算,第一个for循环输出9行,然后内嵌一个for,在条件表达式中取第一个for循环的 ...

  4. 一次sql注入中转

    今天一朋友丢过来一个注入让我看看 url:http://xxxx/ 先看下页面 常规测试一下 用户名输入:' or 1=1 -- - 密码任意 返回 用户名输入:' or 1=2 -- - 返回 基本 ...

  5. HibernateSessionFactory建立-使用ThreadLocal

    立即加载还是延迟加载必须要连接数据库的,而在Java中连接数据库是依赖java.sql.Connection,在hibernate中session就是Connection的一层高级封装,一个sessi ...

  6. iconfont使用,亲测

    iconfont对于前端应用来说有很多便捷: 1.自由变化大小 2.自由修改颜色 3.可以添加一些视觉效果如:阴影.旋转.透明度. 4.兼容IE6 在线引用和下载到本地两种方法 一.在线引用 图标的制 ...

  7. 父子页面之间元素相互操作(iframe子页面)

    js/jquery获取iframe子页面中元素的方法: 一.使用window.frames["iframe的ID"]获取元素 window.onload = function() ...

  8. 如何在MyEclipse上添加更换JRE

    如何在myeclipse上添加更换JRE 由于兼容性的问题,有些WEB项目会依赖jdk的版本.如果需要更换jdk,那么,知道如何更换JRE的方法很有必要. 一种在myeclipse上添加和更换JRE的 ...

  9. sed awk 样例

    sed [options] '[action]' filename options: -n:一般sed命令会把所有数据都输出到屏幕,如果加入此选项,则只会把经过sed命令处理的行输出到屏幕. -e:允 ...

  10. Linux下安装 MySQL

    Ubuntu环境 使用二进制安装包安装,相对简单绿色 1.到官网下载二进制压缩包http://dev.mysql.com/downloads/mysql/ 2.选择需要的版本 目前最新为5.7.之后选 ...