ORM框架想必大家都比较熟知了,即对象关系映射(英语:Object Relation Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。从效果上说,它其实是创建了一个可在编程语言里使用的“虚拟对象数据库”。 当你开发一个应用程序的时候(不使用O/R MAPPING),你可能会写不少数据访问层的代码,用来从数据库保存,删除,读取对象信息,等等。

现在流行的ORM框架有:

JAVA系列:APACHE OJB,CAYENNE,JAXOR,JPA,HIBERNATE,IBATIS/MYBATIS,JRELATIONALFRAMEWORK,SMYLE,TOPLINK等

其中 TOPLINK 是 ORACLE 的商业产品,其他均为开源项目。其中 HIBERNATE的轻量级 ORM 模型逐步确立了在 JAVA ORM 架构中领导地位,甚至取代复杂而又繁琐的 EJB 模型而成为事实上的 JAVA ORM 工业标准。

.NET系列:EF(ENTITY FRAMWORK),NHIBERNATE,Ibits,ENTITYSCODEGENERATE,LINQ TOSQL,GROVE,RUNGOO.ENTERPRISEORM,FIRECODE CREATOR,MYGENERATION,CODESMITH PRO,CODEAUTO等

微软VS中自带的有EF(ENTITY FRAMWORK)框架。

你在DAO中写了很多的方法来读取对象数据,改变状态对象等等任务。而这些代码写起来总是重复的。我们可不可以写一个类来封装这些重复的劳动呢?

想必大家都有曾经想过写DBUtils_DG吧,实际上,从DBUtils_DG一步步写下来,封装到足够好之后,就会成为一个自己专属的ORM框架了。

在这里,小编写了一个很基础的类ORM的DBUtils_DG里面仅仅对Select查询语句进行了封装,由于考虑到了反射机制的诟病(这里不再讨论,关于反射效率问题有大多数的讨论,利与弊总是同时存在的,我们不纠结于这点)。对于常见的CRUD来说,CUD通常一个方法可以实现,并且Sql语句可以得到更大的封装结合配置文件和反射机制进行操作。小编这里采用的模式是MySql+DBUtils_DG+代码生成器(需要代码生成器的可以联系本人,不定期更新)来完成的代码编写工作,因此没有对CUD进行大量的封装,同时也提高了执行效率(你懂的)。

接下来我贴上我的代码(里面注释采用中文注释,比较完善有不懂的可以咨询本人):

 DBUtils_DG

db.properties是外部的一个配置文件,里面对数据库的一些信息进行配置,具体配置信息如下:

1 driver_class=com.mysql.jdbc.Driver

2 driver_url=jdbc\:mysql\://localhost\:3306/db_liuyanban

3 database_user=root

4 database_password=root

内部的一些主要方法介绍:

executeUpdate 执行sql命令,返回受影响的行数,通过受影响的行数进而判断是否执行成功! 一般用作CUD操作

executeQuerySingleData 执行sql语句或存储过程 返回单个数据 (如返回自增的ID)

public static ResultSet executeQueryResultSet(String sql, Object... params)执行sql语句或存储过程 返回ResultSet

public static JSONObject executeQuerySingleLineToJsonObject(String sql, Object... params) 执行sql语句,查询单行数据返回一个JSONObject(Object对象转成的JSONObject)

public static JSONArray executeQueryResultSetToJsonArray(String sql, Object... params) 执行sql语句,查询单行数据返回一个JSONArray(list对象转成的JSONArray)

executeQueryProcedure 执行存储过程

public static List executeQueryList(Class clazz,String sql, Object... params)反射返回一个List T 类型的结果集 如List 用于Reader操作

public static T executeQuerySingleLine(Class clazz,String sql, Object... params) 反射返回一个T类型的结果 如User 用于Reader操作

接下来我们介绍一下使用方法 :

这里采用的使用地方是我自己以前写过的一个留言板的Dao层,这里面有对我的DBUtils_DG的使用,具体见代码:

 UesrDaoImpl

写到这里,相信大家都已经对ORM框架的实现机制有一定的了解,并且能完美的实现一个DBUtils来进行对自己数据访问代码的封装!如果喜欢,大家可以进一步对DAO层的代码进行封装放到一个类里面,更加方便自己对数据库的访问,可以更加简便地访问数据库,有朝一日写出一个属于自己的ORM框架!

2016-08-29 16:44:12

本文为七小站主原创作品,转载请注明出处:http://www.cnblogs.com/qixiaoyizhan/

java orm框架 博客园_自己写ORM框架 DBUtils相关推荐

  1. 潜移默化学会WPF(绚丽篇)--热烈欢迎RadioButton,改造成功,改造成ImageButton,新版导航 - AYUI框架 - 博客园...

    潜移默化学会WPF(绚丽篇)--热烈欢迎RadioButton,改造成功,改造成ImageButton,新版导航 - AYUI框架 - 博客园 原文:潜移默化学会WPF(绚丽篇)--热烈欢迎Radio ...

  2. java课程设计 博客园_Java课程设计博客(团队)

    Java课程设计博客(团队) 1. 团队/项目名称 使用JAVA实现简易HTTP服务器 2. 团队成员 组长:林一心 组员:张杭镖 3. 项目git地址 4. 项目git提交记录截图 5. 项目功能架 ...

  3. python博客园_用Python向博客园发布新文章

    最近在开发一个博客系统,经常把写的东西放在自己网站的博客上(之前写在Onenote),然后我在博客园也申请了一个博客,就有了同样一篇文章,我需要复制粘贴排版分别提交两次的情况.于是我就想能不能在我的网 ...

  4. java orm框架 博客园_ORM框架的前世今生

    目录 一.ORM简介 二.ORM的工作原理 三.ORM的优缺点 四.常见的ORM框架 一.ORM简介 ORM(Object Relational Mapping)对象关系映射,一般指持久化数据和实体对 ...

  5. python 面试题 博客园_常见的python面试问题1

    雷锋网按:本文为 AI 研习社编译的技术博客,原文 Top 35 Python Interview Questions and Answers in 2018 ,作者 DataFlair Team. ...

  6. 触发器和java的关系_触发器-1 - java ee spring - 博客园

    ------------------------------------环境代码 create  table student (stuid varchar2(10) not null, stuname ...

  7. java数据结构博客园_常见数据结构的Java实现

    单链表的Java实现 首先参考wiki上的单链表说明,单链表每个节点包含数据和指向链表中下一个节点的指针或引用.然后看代码 import java.lang.*; public class Singl ...

  8. java oxm_OXM - csnmd - 博客园

    O/X Mapper 是什么? Spring 3.0 的一个新特性是 O/X Mapper.O/X 映射器这个概念并不新鲜,O 代表 Object,X 代表 XML.它的目的是在 Java 对象(几乎 ...

  9. java课程设计 博客园_java课程设计

    Java程序设计 课程设计 3.本人负责的主要功能展示与代码分析 //这是一个文件夹类 public class Folder { private String name;//文件夹的名称 priva ...

最新文章

  1. 从UV位置图获得3D人脸
  2. 查看电脑python虚拟环境-手把手教你在Linux系统下使用Python虚拟环境
  3. socket实现进程间通信
  4. 华为路由器固件_【卖萌推荐】路由器推荐第二期
  5. python列表、元组、字典和集合的算法时间_27.Python列表(list)、元组(tuple)、字典(dict)和集合(set)详解...
  6. 云服务器 文件服务,云服务器文件服务
  7. python logger filter_使用Filter过滤python中的日志输出的实现方法
  8. python中文相似度_python比较两个文本的相似性
  9. 单点登录原理及实现方式
  10. android 仿QQ列表可折叠+自定义Dialog结合的DEMO
  11. 平均股价的时间序列图形_数据可视化——pandas绘制股票走势图
  12. Kubernetes 学习总结(3) Manifests
  13. MT7628平台编程设计指南资料
  14. 小米也打价格战?会有1999的小米2吗?
  15. MySQL-7 DDL约束 标识列 TCL事务控制语言 视图view
  16. 一部《小猪佩奇》让中国90%的家长感到惭愧
  17. 二维空间最近点对问题 python
  18. 浅谈Feature Scaling
  19. 100集华为HCIE安全培训视频教材整理 | Agile Controller终端安全管理特性(二)
  20. 【CISSP】安全评估与测试

热门文章

  1. springboot+微信小程序健康饮食系统毕业设计源码280920
  2. 1.5 匹配电容计算(硬件基础系列)
  3. [读论文]CAAD-2018 Targeted Attack方向季军技术报告
  4. 分析4千万+数据,人才红利诱惑有多大?(附报告下载)
  5. Windows下vulkan开发流程分析
  6. 【splishsplash】如何利用blender渲染出流体结果
  7. WEB安全的防御--介绍XSS跨网站脚本[wiki]
  8. centos安装rpmforge
  9. m1芯片安装Oracle11g数据库
  10. MyBatis 逆向工程配置文件mgb.xml没有提示怎么办?