ibatis VS Hibernate - 转自百度百科

2024-04-29 19:48

本文主要是介绍ibatis VS Hibernate - 转自百度百科,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

iBATIS一词来源于“internet”和“abatis”的组合,是一个由Clinton Begin在2001年发起的开放源代码项目。最初侧重于密码软件的开发,现在是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO),同时还提供一个利用这个框架开发的JPetStore实例。
  相对Hibernate和Apache OJB等“一站式”ORM解决方案而言,ibatis 是一种“半
  自动化”的ORM实现。
  所谓“半自动”,可能理解上有点生涩。纵观目前主流的 ORM,无论 Hibernate 还是
  Apache OJB,都对数据库结构提供了较为完整的封装,提供了从 POJO 到数据库表的全
  套映射机制。程序员往往只需定义好了POJO 到数据库表的映射关系,即可通过 Hibernate
  或者 OJB 提供的方法完成持久层操作。程序员甚至不需要对 SQL 的熟练掌握,
  Hibernate/OJB 会根据制定的存储逻辑,自动生成对应的 SQL 并调用 JDBC 接口加以执
  行。
  大多数情况下(特别是对新项目,新系统的开发而言),这样的机制无往不利,大有一
  统天下的势头。但是,在一些特定的环境下,这种一站式的解决方案却未必灵光。
  在笔者的系统咨询工作过程中,常常遇到以下情况:
  1. 系统的部分或全部数据来自现有数据库,处于安全考虑,只对开发团队提供几
  条Select SQL(或存储过程)以获取所需数据,具体的表结构不予公开。
  2. 开发规范中要求,所有牵涉到业务逻辑部分的数据库操作,必须在数据库层由
  存储过程实现(就笔者工作所面向的金融行业而言,工商银行、中国银行、交
  通银行,都在开发规范中严格指定)
  3. 系统数据处理量巨大,性能要求极为苛刻,这往往意味着我们必须通过经过高
  度优化的SQL语句(或存储过程)才能达到系统性能设计指标。
  面对这样的需求,再次举起 Hibernate 大刀,却发现刀锋不再锐利,甚至无法使用,
  奈何?恍惚之际,只好再摸出JDBC 准备拼死一搏……,说得未免有些凄凉,直接使用 JDBC
  进行数据库操作实际上也是不错的选择,只是拖沓的数据库访问代码,乏味的字段读取操作
  令人厌烦。
  “半自动化”的ibatis,却刚好解决了这个问题。
  这里的“半自动化”,是相对Hibernate等提供了全面的数据库封装机制的“全自动化”
  ORM 实现而言,“全自动”ORM 实现了 POJO 和数据库表之间的映射,以及 SQL 的自动
  生成和执行。而ibatis 的着力点,则在于POJO 与 SQL之间的映射关系。也就是说,ibatis
  并不会为程序员在运行期自动生成 SQL 执行。具体的 SQL 需要程序员编写,然后通过映
  射配置文件,将SQL所需的参数,以及返回的结果字段映射到指定 POJO。
  使用ibatis 提供的ORM机制,对业务逻辑实现人员而言,面对的是纯粹的 Java对象,
  这一层与通过 Hibernate 实现 ORM 而言基本一致,而对于具体的数据操作,Hibernate
  会自动生成SQL 语句,而ibatis 则要求开发者编写具体的 SQL 语句。相对Hibernate等
  “全自动”ORM机制而言,ibatis 以 SQL开发的工作量和数据库移植性上的让步,为系统
  设计提供了更大的自由空间。作为“全自动”ORM实现的一种有益补充,ibatis 的出现显
  得别具意义。

这篇关于ibatis VS Hibernate - 转自百度百科的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/947009

相关文章

持久层 技术选型如何决策?JPA,Hibernate,ibatis(mybatis)

转自:http://t.51jdy.cn/thread-259-1-1.html 持久层 是一个项目 后台 最重要的部分。他直接 决定了 数据读写的性能,业务编写的复杂度,数据结构(对象结构)等问题。 因此 架构师在考虑 使用那个持久层框架的时候 要考虑清楚。 选择的 标准: 1,项目的场景。 2,团队的技能掌握情况。 3,开发周期(开发效率)。 传统的 业务系统,通常业

Windwos +vs 2022 编译openssl 1.0.2 库

一 前言 先说 结论,编译64位报错,查了一圈没找到解决方案,最后换了32位的。 使用qt访问web接口,因为是https,没有openssl库会报错 QNetworkReply* reply = qobject_cast<QNetworkReply*>(sender());if (reply){if (reply->error() == QNetworkReply::NoError

百度OCR识别结构结构化处理视频

https://edu.csdn.net/course/detail/10506

关于文章“python+百度语音识别+星火大模型+讯飞语音合成的语音助手”报错的修改

前言 关于我的文章:python+百度语音识别+星火大模型+讯飞语音合成的语音助手,运行不起来的问题 文章地址: https://blog.csdn.net/Phillip_xian/article/details/138195725?spm=1001.2014.3001.5501 1.报错问题 如果运行中报错,且报错位置在Xufi_Voice.py文件中的pcm_2_wav,如下图所示

通用大模型 vs垂直大模型:AI界的“宫斗大戏”

科技圈最近可真热闹,AI大模型的“宫斗大戏”让人眼花缭乱。两个阵营:通用大模型和垂直大模型,正在上演一场激烈的“权力的游戏”。到底谁能笑到最后?咱们一起来“吃瓜”看看吧! 首先,登场的是“全能王”通用大模型。它们就像是学习成绩顶尖、体育全能的学霸,什么都懂,什么都能干。 通用大模型:全能选手看看这家伙的优势: 通用大模型就像那种考上清华北大的学霸,不管是文科还是理科,全都能拿下。从写文章到

VS Code SSH 远程连接服务器及坑点解决

背景 Linux服务器重装了一下,IP没有变化,结果VS Code再重连的时候就各种问题,导致把整个流程全部走了一遍,留个经验帖以备查看 SSH 首先确保Windows安装了ssh,通过cmd下ssh命令查看是否安装了。 没安装,跳转安装Windows下的ssh 对应的,也需要Linux安装ssh,本文是Ubuntu系统,使用以下命令安装: sudo apt updatesudo

spring(一)--spring/springmvc/spring+hibernate(mybatis)配置文件

这篇文章用来总结一下spring,springmvc,spring+mybatis,spring+hibernate的配置文件 1.web.xml 要使用spring,必须在web.xml中定义分发器等信息,基本的配置信息如下: <?xml version="1.0" encoding= "UTF-8"?><web-app version= "3.0"xmlns="http://java.

技术性屏蔽百度爬虫已经一周了!

很久前明月就发现百度爬虫只抓取、只收录就是不给流量了,加上百度搜索体验越来越差,反正明月已经很久没有用过百度搜索,目前使用的浏览器几乎默认搜索都已经修改成其他搜索引擎了,真要搜索什么,一般都是必应+谷歌结合着使用。所以就一直在纠结要不好屏蔽百度爬虫,上周借助 CloudFlare 的【随机加密】先技术性的屏蔽百度爬虫了。 说起来比较好笑都 2024 年了,早就号称支持 HTTPS 的百度爬虫

【转自看雪】反编译apk+eclipse中动态调试smali

初涉移动端,请各位前辈多多指教! 本文参考http://www.kaifazhe.com/android_school/380973.html 在此,对作者表示感谢! 跟踪apk一般的做法是在反编译的smali代码中插入log输出,然后重新编译运行看输出日志,这种方法费时费力,如果能够动态调试就最好了。下面就给大家介绍apk+eclipse来调试smali。 前

文心一言 VS 讯飞星火 VS chatgpt (287)-- 算法导论21.2 6题

六、假设对 UNION 过程做一个简单的改动,在采用链表表示中拿掉让集合对象的 tail 指针总指向每个表的最后一个对象的要求。无论是使用还是不使用加权合并启发式策略,这个修改不应该改变 UNION 过程的渐近运行时间。(提示:而不是把一个表链接到另一个表后面,将它们拼接在一起。)如果要写代码,请用go语言。 文心一言: 在并查集(Union-Find)数据结构中,UNION 过程通常用于合并