`
calmness
  • 浏览: 353974 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

JPA,感觉有点鸡肋

    博客分类:
  • Java
阅读更多
    看了下JPA的介绍,就是在原有ORM的基础上抽象出一层通用接口,以便可以任意替换不同的ORM实现,有的朋友认为JPA的出现可以替代掉DAO,可是事实上,这确是大错特错了,我认为JPA非但不能替换掉DAO,而且因为DAO的存在而显得更加尴尬。

    为什么?JPA虽然抽象了ORM的接口,想统一ORM标准,但是也正因为如此,它实际和直接使用ORM框架没有区别(除了能够任意替换不同实现以外),因为即使使用JPA,我们一样不能缺少DAO,我们来看看DAO的主要作用:
   1、DAO将持久逻辑抽象出来,让业务层不需关注与持久相关的逻辑
   2、在DAO层我们可以任意更换不同的持久实现,而无需更改业务层

   从以上DAO两个主要作用看来,第一点,即使使用JPA也不能缺少,因为JPA并不能将持久相关逻辑抽象,对于第二点,JPA更换的是更底层即ORM框架的实现,而DAO是从持久逻辑处更换ORM实现,所以JPA比DAO来得容易,可是出于商业原因,JPA并无法全面的顾及到各个方面,不能够像单独的ORM那样提供灵活的功能,因此也失去了不少单独ORM框架的特色,而如果要使用这些被忽略的特性,则必须绕开JPA而使用。

    站在我的观点上,我宁愿在更换实现时麻烦点(不算太麻烦吧,至少不用改动业务层),也不愿意放弃掉ORM特有的一些特性,因此我觉得JPA固然目标远大,但是实质上并不能带给我多大的好处,而且我想我也很少有机会更换ORM实现吧。
分享到:
评论
4 楼 badqiu 2008-10-20  
Hibernate屏蔽不同的数据库差异,JPA屏蔽不同的ORM差异。
JPA有意义么?规范更新慢,现在事实标准也是使用Hibernate作为JPA实现。
3 楼 sway 2008-10-20  
"有的朋友认为JPA的出现可以替代掉DAO",jpa跟dao有什么关系.
2 楼 epim 2007-12-14  
有和楼主一样的疑惑,郁闷Ing
1 楼 lordhong 2007-12-07  
JPA是个标准而已, 就是为了不同厂商产品替换来着想的, DAO还是需要的.

相关推荐

    jpa例子jpajpa

    **Java Persistence API (JPA)** 是Java平台上的一个标准,用于管理关系数据库中的对象-关系映射(ORM)。它提供了一种方式,让开发者可以用面向对象的编程模型来操作数据库,而无需直接编写SQL语句。JPA允许你在...

    JPA源文件/jpa学习

    **JPA(Java Persistence API)**是Java平台上的一个标准,用于管理关系数据库中的数据,它简化了在Java应用程序中存储、检索和管理对象的工作。JPA是Java EE和Java SE环境中的一种ORM(Object-Relational Mapping)...

    JPA教程,包括TOPLink JPA,Hibernate JPA,Open Jpa,jpa批注

    **Java Persistence API (JPA)** 是Java平台上的一个标准,用于管理关系数据库中的数据。它为Java开发者提供了一种对象关系映射(ORM)机制,将业务对象与数据库表进行映射,使得开发者可以使用面向对象的方式来操作...

    Pro JPA2 精通JPA2

    《Pro JPA2:精通Java™ Persistence API》是一本由Mike Keith和Merrick Schincariol撰写的关于Java持久化API(JPA)的权威指南。本书深入探讨了JPA2,即Java Persistence API的第二版,是Java EE 6标准的一部分。...

    JPA中文解释,JPA的API

    Java Persistence API(JPA)是Java平台上的一个标准,用于管理关系数据库中的对象持久化。它简化了在Java应用程序中存储、检索和管理数据的过程,是Enterprise JavaBeans(EJB)的一部分,也是Spring框架中的一个...

    JPA 标注 JPA标签手册

    Java Persistence API (JPA) 是Java企业版5(Java EE 5)的一部分,与Enterprise JavaBeans(EJB)3.0规范一起,极大地简化了Java持久化。它提供了一种对象关系映射方法,允许您以标准、可移植的方式声明性地定义...

    Gemini JPA 介绍资料

    Gemini JPA是在OSGi环境下(特别是Eclipse RCP)中使用的Java持久化框架。OSGi是一个模块化服务平台,允许在Java环境中动态地安装、启动、停止和卸载组件,而不会影响其他组件的正常运行。在Java开发中,持久化层...

    spring注解+spring data jpa文档+JPA文档.rar

    Spring框架的核心特性包括依赖注入(DI)和面向切面编程(AOP),并且它还提供了对数据库操作的支持,这主要通过Spring Data JPA和Java Persistence API(JPA)实现。 Spring注解是Spring框架中的一大特色,它极大...

    Spring Data JPA 简化 JPA 开发

    Spring Data JPA 是一个由 Spring 框架提供的强大库,它极大地简化了基于 Java Persistence API (JPA) 的数据库访问。JPA 是 Java 平台上的标准 ORM(对象关系映射)规范,允许开发者使用面向对象的方式处理数据库...

    Spring Data JPA中文文档[1.4.3]_springdatajpa_erlang_waitxpf_

    **Spring Data JPA** 是一个基于 **Java** 的开源框架,它是 **Spring Framework** 的一个模块,主要用于简化 **Java Persistence API (JPA)** 的使用。JPA 是 Java 平台上的一个标准,用于管理和持久化应用程序的...

    JPA_官方文档_中文版

    ### JPA概述与核心知识点详解 #### 一、JPA概览 JPA,全称Java Persistence API,作为Java EE 5.0平台标准的ORM(Object-Relational Mapping)规范,旨在解决对象持久化问题,使开发人员能更轻松地在Java应用程序...

    Spring Data JPA API(Spring Data JPA 开发文档).CHM

    Spring Data JPA API。 Spring Data JPA 开发文档。 官网 Spring Data JPA API。

    jpa

    **JPA(Java Persistence API)**是Java平台上用于管理关系数据库的数据持久化标准API,它为应用程序提供了一种对象/关系映射工具,将关系数据库中的数据与Java类对象关联起来,使得开发者可以使用面向对象的方式来...

    JPA Demo 简单的了解下jpa

    **JPA(Java Persistence API)简介** Java Persistence API(JPA)是Java平台上的一个标准,用于管理和持久化Java对象到关系数据库。它是Java EE和Java SE环境中处理对象关系映射(ORM)的一种规范,旨在简化...

    JPA

    标题与描述均提到了“JPA”,这指向的是Java Persistence API(Java持久化API),一个用于Java应用中的对象-关系映射(ORM)的标准。JPA允许开发人员将数据库表映射到Java对象,从而在应用程序中以面向对象的方式...

    Spring Data JPA 笔记

    Spring Data JPA 是一个强大的框架,它简化了Java应用程序与数据库之间的交互,是Spring生态中的重要组成部分。通过使用Spring Data JPA,开发者可以避免编写大量的JPA(Java Persistence API)和SQL代码,专注于...

    openJpa的应用,感觉还可以

    在“openJpa的应用,感觉还可以”的标题中,我们可以理解到作者对于OpenJPA的使用体验是积极的。OpenJPA提供了诸如实体管理、事务处理、查询优化等核心ORM功能,并且与常见的Java应用服务器如Tomcat、WebLogic等兼容...

    JPA (一)

    **Java 持久化 API(JPA)详解(一)** Java 持久化 API(Java Persistence API),简称 JPA,是 Java 平台上的一个标准,用于管理关系数据库中的数据。JPA 提供了一种面向对象的方式来操作数据库,使得开发人员...

    如何控制JPA的事务

    "JPA事务管理" JPA(Java Persistence API)是一种Java持久化规范,它提供了一个抽象层来访问关系数据库。JPA的事务管理是指对一系列操作的管理,包括创建、读取、更新和删除(CRUD)等操作。事务管理的目的是确保...

Global site tag (gtag.js) - Google Analytics