`
weedria
  • 浏览: 34991 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

续:我们需不需要像存储过程一样的跨数据库的JA

阅读更多
(原:我们需不需要像存储过程一样的跨数据库的JAVA存储过程)
接触过数据库的同学肯定知道存储过程,先列一下好处?
1:易于调试。
2:随时可以查看其原代码。
3:便于测试及跟踪。
4:性能良好。
缺点:
1:只能用于特定的数据库。
2:保密性不强。
3:语言单一。

以下是一些简单说明,如果我们开发出一款类似于存储过程的"Java存储过程",他有存储过程的好处,又可以克服存储过程的缺点,你会用吗????

经过这段时间的讨论以及对技术的调研,总结如下:
1、SQLJ:这个确实是好东西,与我的想法基本一致,也试用了一下。可以在数据库上用JAVA写储储过程,是基于JDBC上的封装,目前只看到Oracle与DB2有解析,开发工具也是这两家独有的,第三方的开发工具基本没有(可能我没找到),还有解析器也没有开源的,用到j2ee服务器上会不会有法律问题,这个没有深入了解。还有SQL语句是在标准的基础上加了一些扩展,不能做到跨数据库,与传统的存储过程对比,移植方面会更好。很可惜的是不能成为Java的一项标准,否则现在的Hibernate应该就不会这么火了。
2、JSQLParser:SQL的语法解析器,这玩意儿也不错,可以校验SQL语句,或许能够派上用处。
3、LINQ to SQL:微软的玩意儿,这个还是相当的好的,功能强大,在Java方面只有Linq,LINQ to SQL还没见着,可惜了。
4、自已写一个解析器,这个可行性还是很高的,而且现有有很多文法解析框架,实现起来应该不难,关键是还得有配套的开发工具,这个是个大工程,短期内很难实现,而且价值不高。
5、使用模板引擎结合JSQLParser来实现,这个可行性还是很高的,但看着模板引擎的语法怎么看怎么不舒服。
6、利用注释+Java语法+JSQLParser作为扩展脚本来实现(非常怪异、应该没看懂)。简单上说就是在java的注释里写sql脚本。如下:
/**
SQL{
--这是一个获是用户的sql语句。(对sql的备注)
select * from users where a.user = 'super';
--这个太普通了,再来一句有深度的。
  select user_code to ${userBean.user_code},user_name to ${userBean.user_name} from a.user = 'super';
}
*/
这个类的扩展名不是java叫sqld(SQL帝).将sqld根据简单的规则转换成java源码(SQLJ的原理一致),写在注释也有好处,生成的java doc里,就有业务逻辑,以后查小问题你就不用看代码了。或者这样说,哪些蛋疼的问题就让客服和工程去忙去吧。
当然,这么干的话很多开发人员会拍砖。
所以、数风流人物还看今朝。看各位了.........
0
0
分享到:
评论

相关推荐

    java连接数据库课程设计(1).doc

    " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " "为了不暴露表结构和只显示用户需要的信息,建立了一个视图record " " " " " " " "下面是用java连接数据库的过程: " "首先下载java连接sql...

    netcap-dbs:NETCAP的数据库集合

    指数待办事项集成新的trisul ja3存储库: : 安装要克隆此仓库,您需要安装LFS git插件来处理大文件。 Apt/deb: sudo apt-get install git-lfsYum/rpm: sudo yum install git-lfsMacOS: brew install git-lfsWindows:...

    JA-SIG(CAS)学习笔记3.doc

    CAS技术框架 CAS Server 目前,我们使用的CAS Server 3.1.1的是基于Spring ...是基于关系数据库的存储,还是采用LDAP服务器,CAS Server给我们提供了这些常用的验证器模板代码,只要稍作修改,便可灵活使用了。

    Dengi:Ülevaadetuludest ja kuludest

    数据库不可知。 。 。 Laravel易于访问,功能强大,并提供大型,强大的应用程序所需的工具。学习Laravel Laravel拥有所有现代Web应用程序框架中最广泛,最全面的和视频教程库,因此轻而易举地开始使用该框架。 如果...

    java课程设计题目..doc

    同时把该收银台的销售总量和有关种类商品的剩 余量以及该持卡顾客的消费情况交数据库存储以供查询。 另外,对没有卡的消费情况不记录该顾客的消费情况等个人信息。如果一个未持卡顾 客一次购物满200元,可为其发放一张...

    破解电信路由器RG100A-BA功能限制

    不过打开后发现所有内容跟原来从main中看到的一样,这就代表main并没有过滤掉网页的信息,但是在寻找过程中发现,有部分网页地址前面都有一个ct,我们试试将ct去掉后在访问网页看看,果然,在设备信息页面发现了与...

    PyLyre:音频流媒体平台 - Python3 IPI 项目

    音频流媒体平台 - Python3 IPI 项目 数据库结构 第一步指南 初始化数据库: 存储库中提供了一个pylyre.sql文件。 使用以下命令创建数据库: ... 不幸的是,PEP 8 不一定在任何地方都受到尊重:( 由于 Ja

    jacg:Java Attack Calculus Gear(Metin2 攻击计算工具)的存储库

    杰克 Java Attack Calculus Gear(Metin2 攻击计算工具)的存储库 Java Attack Calculus Gear 是 Metin2 中最新一代的攻击和伤害计算工具。 它由 Son Gohan 于 2013 年创建,并利用了 Son ...武器数据库是一个包含在 JA

    DP-060JA-Migrating-your-Database-to-Cosmos-DB

    该存储库包含工作分配文档和源代码,用于在将研讨会数据库迁移到Cosmos DB时进行练习。 挑战2:将MongoDB迁移到Cosmos DB 在此挑战中,您将现有的MongoDB数据库迁移到Cosmos DB。 使用Azure数据库迁移服务。相反,它...

    Java Web编程宝典-十年典藏版.pdf.part2(共2个)

    7.5.6 应用存储过程进行数据操作 7.6 实战检验 7.6.1 JDBC连接SQLServer2005数据库 76.2 网站用户注册 7.7 疑难解惑 7.7.1 Prepared Statement与Statement 7.7.2 预编译的理解 7.8 精彩回顾 第8章 浅尝辄止 ——...

    Praktikum_prognet:Praktikum Pemrograman互联网2021

    数据库不可知。 。 。 Laravel易于访问,功能强大,并提供大型,强大的应用程序所需的工具。 学习Laravel Laravel拥有所有现代Web应用程序框架中最广泛,最全面的和视频教程库,因此轻而易举地开始使用该框架。...

    基于服装销售信息管理系统的毕业设计实现.zip

    # 基于服装销售信息管理系统的毕业设计实现 本文介绍了一种基于服装销售信息管理系统的毕业设计实现方案。该方案旨在实现一个集成化的...该系统采用Java语言开发,使用MySQL数据库进行数据存储。前端采用HTML、CSS和Ja

    tutorial-2015mongodb:MongoDB教程,在2015年仓促为COMP391编写

    在该教程中,我们有一个UserService将用户数据存储在内存中。 在本教程中,我们将其放入数据库中。 由于我们的条款还很晚,解决方案将立即发布-您可以通过比较master分支和solution分支来查看需要做的事情。 我...

    JAVA上百实例源码以及开源项目源代码

     Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码截图如上所示。 Java 数字签名、数字证书生成源码 2个目标文件 摘要:JAVA源码,...

    zero:Kubernetes中的零停机时间部署

    Kubernetes中的零停机时间部署存储库包含以下代码和表示形式:“ Kubernetes中的零停机时间部署”推介会要求迷你库Kubectl 舵sql Java示例的JDK8或更高版本Go语言的Golang 1.8或更高版本演示用户服务启动minikube: ...

    weixin228基于微信小程序的走失人员的报备平台设计ssm后端毕业源码案例设计

    基于微信小程序的走失人员的报备平台服务端用Java开发的网站后台,接收并且处理微信小程序端传入的json数据,数据库用到了MySQL数据库作为数据的存储。这样就让用户用着方便快捷,都通过同一个后台进行业务处理,而...

    UML类图实例分析

    再将具体数据访问对象注入到业务逻辑对象中,可通过配置文件(如XML文件)等方式来实现,将具体的数据访问类类名存储在配置文件中,如果需要更换新的具体数据访问对象,只需修改配置文件即可,原有程序代码无须做...

    Java经典入门教程pdf完整版

    如同我们需要阳光、空气、水和食物才能正常存活一样,软件最终要能够运行,也需要 系列旳外部环境,来为软件的运行提供支持,而提供这些支持的就是运行平台。 3.2:Java是一种运行平台 Java本身提供Java软件所需要的运行...

    non-touch-roll-call:非接触式点名 | KMITL Psit 项目 2019

    非接触式点名 | KMITL ...数据库使用一个SQL数据库(MariaDB)来存储所有数据。 预期收益 已经练习了小组工作的技能和过程 练习解决问题的原则算法思维概念流程图和入门计算机编程 练习使用 Python、HTML、CSS 和 Ja

    oop:G1T4的面向对象编程项目

    服务器应用服务器应用程序会定期使用访问密钥调用Web服务(API),以获取船只的到达时间并将它们存储在关系数据库中。 以下值应该是可配置的,无需重新编译代码: 调用API的时间间隔Web服务访问密钥默认情况下,将...

Global site tag (gtag.js) - Google Analytics