java orm框架 博客园_自己写ORM框架 DBUtils
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相关推荐
- 潜移默化学会WPF(绚丽篇)--热烈欢迎RadioButton,改造成功,改造成ImageButton,新版导航 - AYUI框架 - 博客园...
潜移默化学会WPF(绚丽篇)--热烈欢迎RadioButton,改造成功,改造成ImageButton,新版导航 - AYUI框架 - 博客园 原文:潜移默化学会WPF(绚丽篇)--热烈欢迎Radio ...
- java课程设计 博客园_Java课程设计博客(团队)
Java课程设计博客(团队) 1. 团队/项目名称 使用JAVA实现简易HTTP服务器 2. 团队成员 组长:林一心 组员:张杭镖 3. 项目git地址 4. 项目git提交记录截图 5. 项目功能架 ...
- python博客园_用Python向博客园发布新文章
最近在开发一个博客系统,经常把写的东西放在自己网站的博客上(之前写在Onenote),然后我在博客园也申请了一个博客,就有了同样一篇文章,我需要复制粘贴排版分别提交两次的情况.于是我就想能不能在我的网 ...
- java orm框架 博客园_ORM框架的前世今生
目录 一.ORM简介 二.ORM的工作原理 三.ORM的优缺点 四.常见的ORM框架 一.ORM简介 ORM(Object Relational Mapping)对象关系映射,一般指持久化数据和实体对 ...
- python 面试题 博客园_常见的python面试问题1
雷锋网按:本文为 AI 研习社编译的技术博客,原文 Top 35 Python Interview Questions and Answers in 2018 ,作者 DataFlair Team. ...
- 触发器和java的关系_触发器-1 - java ee spring - 博客园
------------------------------------环境代码 create table student (stuid varchar2(10) not null, stuname ...
- java数据结构博客园_常见数据结构的Java实现
单链表的Java实现 首先参考wiki上的单链表说明,单链表每个节点包含数据和指向链表中下一个节点的指针或引用.然后看代码 import java.lang.*; public class Singl ...
- java oxm_OXM - csnmd - 博客园
O/X Mapper 是什么? Spring 3.0 的一个新特性是 O/X Mapper.O/X 映射器这个概念并不新鲜,O 代表 Object,X 代表 XML.它的目的是在 Java 对象(几乎 ...
- java课程设计 博客园_java课程设计
Java程序设计 课程设计 3.本人负责的主要功能展示与代码分析 //这是一个文件夹类 public class Folder { private String name;//文件夹的名称 priva ...
最新文章
- 从UV位置图获得3D人脸
- 查看电脑python虚拟环境-手把手教你在Linux系统下使用Python虚拟环境
- socket实现进程间通信
- 华为路由器固件_【卖萌推荐】路由器推荐第二期
- python列表、元组、字典和集合的算法时间_27.Python列表(list)、元组(tuple)、字典(dict)和集合(set)详解...
- 云服务器 文件服务,云服务器文件服务
- python logger filter_使用Filter过滤python中的日志输出的实现方法
- python中文相似度_python比较两个文本的相似性
- 单点登录原理及实现方式
- android 仿QQ列表可折叠+自定义Dialog结合的DEMO
- 平均股价的时间序列图形_数据可视化——pandas绘制股票走势图
- Kubernetes 学习总结(3) Manifests
- MT7628平台编程设计指南资料
- 小米也打价格战?会有1999的小米2吗?
- MySQL-7 DDL约束 标识列 TCL事务控制语言 视图view
- 一部《小猪佩奇》让中国90%的家长感到惭愧
- 二维空间最近点对问题 python
- 浅谈Feature Scaling
- 100集华为HCIE安全培训视频教材整理 | Agile Controller终端安全管理特性(二)
- 【CISSP】安全评估与测试
热门文章
- springboot+微信小程序健康饮食系统毕业设计源码280920
- 1.5 匹配电容计算(硬件基础系列)
- [读论文]CAAD-2018 Targeted Attack方向季军技术报告
- 分析4千万+数据,人才红利诱惑有多大?(附报告下载)
- Windows下vulkan开发流程分析
- 【splishsplash】如何利用blender渲染出流体结果
- WEB安全的防御--介绍XSS跨网站脚本[wiki]
- centos安装rpmforge
- m1芯片安装Oracle11g数据库
- MyBatis 逆向工程配置文件mgb.xml没有提示怎么办?