续:我们需不需要像存储过程一样的跨数据库的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里,就有业务逻辑,以后查小问题你就不用看代码了。或者这样说,哪些蛋疼的问题就让客服和工程去忙去吧。
[color=red][size=x-large]当然,这么干的话很多开发人员会拍砖。[/size][/color]
[color=darkred][size=x-large]所以、数风流人物还看今朝。看各位了.........[/size][/color]
实现birt报表跨库数据源的简单办法 最近在使用BIRT实现跨数据库数据查询和关联计算时遇到了问题。用DB2实现跨库的join配置很麻烦;如果用BIRT把两个库的数据都读进来的话,用BIRT的脚本(java或者java script)都要写较长的代码来实现jion,也很麻烦。 要在一个报表里展现的数据来源于两个DB2数据库,使用的工具是集算器+BIRT。项目的数据有保密的要求,所以用订单表和订单明细表来做验证的: 订单表(来源数据 阅读详情

相关推荐

DBeaver 实战:利用 Elasticsearch JDBC 驱动实现跨数据库 SQL 统一查询

本文详细介绍了如何利用DBeaver和Elasticsearch JDBC驱动实现跨数据库SQL统一查询,解决数据分散在不同存储系统中的痛点。通过实战案例和配置教程,帮助开发者高效查询Elasticsearch索引和传统数据库,提升数据分析效率。特别适合数据中台建设和跨系统ETL场景。

weixin_33694172的博客 422

java jta mysql_JTA实现跨数据库操作

EJB3.0实现跨数据库进行存取环境:MySQL5.1/JBoss5.11.加入跨数据库的数据源,由于JBoss没有提供mysql的配置文件,所以要手工加入:mysql-xa-ds.xml:(注意:不是mysql-ds.xml)MySqlXADS1com.mysql.jdbc.jdbc2.optional.MysqlXADataSourcejdbc:mysql://localhost/ejb?us...

weixin_39748183的博客 173

ROS2 DDS中间件(图文并茂+超详细)

DDS 的目标场景在端上,致力于使端上的应用可以更容易的进行通信,由于它的完全分布式架构,可以方便的将端上的应用拆分为多进程架构,从而提高端的容错能力。从产品定位角度来讲,它和 Chromium 中的 mojo 都是端上的通信中间件,只不过 mojo 不强调分布式,内部集成了更多的特定于端上的机制,比如句柄的传输,消息的缓存等。但由于 mojo 生于 Chromium,目前官方并没有把它独立出来,所以用起来比较不方便。而 DDS 或许可以在简单的场景下作为 mojo 的替代品。

weixin_39939185的博客 5284

Doris跨数据库查询实战

摘要: 本文介绍了基于Doris实现跨数据库查询的实践经验。针对多源数据查询需求,传统方案存在数据同步繁琐、存储冗余等问题。通过Doris的Catalog功能,直接映射Hive、MySQL等多个数据源,实现跨库关联查询。新架构避免了数据同步任务,减少存储占用和运维成本,同时提升查询效率和一致性。示例SQL展示了跨Hive、MySQL多表关联的便捷性。该方案显著优化了临时数据提取场景的工作流程。

大数据、数据仓库、数据治理、数据开发、数据库等相关数据方面经验分享~ 970

Android Framework之Pkms详解

system 用户并没有访问应用程序目录的权限,但是 Installd 服务是以 root 用户启动的,可以访问 /data/data/ 下的目录,Installd 需要完成一些创建应用数据的任务。Installer 服务是 Android 提供的用于安装的服务,Installer 持有 Installd 守护进程对应的 Binder 服务的代理对象,本质上是通过 Binder 通信调用底层的 Installd 服务真正完成 APK 文件格式的优化和转换、建立相关的数据目录、删除文件、安装应用等工作。

门徒07的博客 1843

STM32F1的USB接口-自定义HID

设置USB VID:1155 PID :22352。

chilian12321的博客 839

Apache Doris JDBC外部表:跨数据库查询的终极指南

Apache Doris JDBC外部表功能让您能够轻松实现**异构数据库查询**,直接在Doris中访问MySQL、PostgreSQL、Oracle等关系型数据库,无需数据迁移即可进行高效数据分析。本文将为您详细介绍JDBC外部表的完整使用指南。 ## 🔗 什么是JDBC外部表? JDBC外部表是Apache Doris提供的一种**外部数据源接入**方式,通过标准的JDBC协议连接到各

gitblog_00964的博客 568

Spring AI 项目实战(十二):Spring Boot +AI + DeepSeek + 百度OCR 公司发票智能处理系统的技术实践(附完整源码)

本文介绍了基于百度OCR API与DeepSeek AI的发票智能处理系统,通过整合AI技术实现发票识别、信息提取和验证的全流程自动化。系统采用Spring Boot 3.2.0架构,结合百度OCR的高精度图像识别和DeepSeek的语义理解能力,显著提升了发票处理效率与准确率。关键技术包括多模型融合、智能错误纠正和自适应学习机制,实现了95%以上的识别准确率,将传统处理效率提升90%以上。该系统为数字化转型中的企业财务管理提供了智能化解决方案,具备高精度识别、实时处理、智能验证等核心优势。

博客 1628

jotm跨数据库 事务

jotm跨数据库 spring + hibernate 软件包 ow2-jotm-dist-2.1.9-bin.tar.gz spring-framework-3.0.5.RELEASEhibernate-3.6.0.Final hibernate-3.6.0.Final spring和hibernate不再详述,讲讲jotm如何与spring集成 web开发中,使用hib...

fengbin2005 170

C++(Qt)软件调试---gdb调试入门用法(12)

学习GDB可以帮助程序员更好地调试程序,找到程序中的错误和问题,提高程序的质量和稳定性。 在开发大型软件时,程序中可能存在许多错误和问题,这些问题可能会导致程序崩溃或者出现不可预期的行为。 使用GDB可以帮助程序员更快地找到这些问题,并且提供一些调试工具来帮助程序员更好地理解程序的行为。

mahuifa的博客 5564

Vue 网络处理 - axios 异步请求的使用,请求响应拦截器(最佳实践)

axios 用来在前端页面发起一个异步请求,请求之后页面不动,响应回来刷新局部.1.为什么不使用 ajax 呢?官方:在 jQuery 中推荐使用 ajax 技术, Vue 里面不推荐使用 jQuery 框架,因此 Vue 更推荐使用 axiox 异步请求库(axios并不是 vue 官方库).2.axios 特性可以从浏览器中创建 XMLHttpRequests可以从 node.js 中创建 http 请求.支持 Promise API.支持拦截请求和响应.转换请求数据和响应数据.

CYK_byte的博客 1万+

spring+hibernate+tomcat+JTA跨数据库事务

 随着公司网站的发展,网站上的产品越来越多,单个mysql库表太多不好维护,我着手开始分库表,由于服务器是tomcat的本身不支持JTA,我就打算用spring+Jotm的方式来实现跨数据库的事务管理,spring的配置文件如下: datasoruce.xml://jotm事务管理          ///第一个datasource

Roger★L☆M☆J★ 1860

WorkBuddy 技能指南:基础办公与文档处理

WorkBuddy 不仅仅是一个对话工具——它通过技能(Skills)系统,将通用 AI 助手转变为具备专业领域能力的智能助手。每个技能都是一套经过精心设计的"能力包",包含专业知识、工作流程和专用工具。本文聚焦于文档处理类技能——这是日常工作中使用频率最高、最实用的能力集合。

u011186532的专栏 705

jotm跨数据库事务 spring + hibernate

[align=left][size=x-large][b]jotm跨数据库 spring + hibernate[/b][/size][/align] 软件包 ow2-jotm-dist-2.1.9-bin.tar.gz spring-framework-3.0.5.RELEASEhibernate-3.6.0.Final hibernate-3.6.0.Final sprin...

cjnetwork 187

Jetson AGX Orin和Drive AGX Orin相机的关联分析和编程指南

通过适当的相机接口和连接,以及使用适当的软件开发环境,开发人员可以在这些平台上实现相机功能。Jetson AGX Orin和Drive AGX Orin是NVIDIA推出的两款强大的计算平台,用于自动驾驶和人工智能应用。Jetson AGX Orin和Drive AGX Orin平台提供了强大的计算能力,使开发人员能够实现复杂的相机功能和算法。以上只是一些示例,Jetson AGX Orin和Drive AGX Orin平台提供了丰富的开发资源和工具,可用于实现各种复杂的相机应用。显示图像在一个窗口中。

CyberLynxO的博客 1122

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

MySQL的JDBC OutOfMemoryError: Ja…

转自:http://blog.youkuaiyun.com/miraclestar/article/details/6623138 MySql数据库通过JDBC对大表进行查询时抛出java.lang.OutOfMemoryError: Java heap space异常。这是因为默认情况下,MySQL的JDBC驱动会一下子把所有row都读取下来,这在一般情况下是最优的,因为可以减少Client- Server

wiy_dawn的博客 442

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

自己写的跨数据库的表同步工具

阅读本文大概需要 3.6 分钟。近期在做数据集市,遇到的痛点如下:1、数据采集过程繁琐,重复的脚本编写太多。从不同的数据库抽取数据,需要为不同的数据库写卸数脚本,再传输到数据集市文件服务...

somenzz的博客 1872

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

mysql不同参数的同名函数_MySql存储过程批量给多个数据库中的同名表添加字段...

1创建存储过程batchAddField:给所有"MyDB_"开头的数据库添加新字段-- ------------------------------ Procedure structure for batchAddField-- ----------------------------DROP PROCEDURE IF EXISTS `batchAddField`;DELIMITER ;;C...

weixin_42466857的博客 484

mysql同步数据到另一张表_自己写的跨数据库的表同步工具

阅读本文大概需要 3.6 分钟。近期在做数据集市,遇到的痛点如下:1、数据采集过程繁琐,重复的脚本编写太多。从不同的数据库抽取数据,需要为不同的数据库写卸数脚本,再传输到数据集市文件服务器,再入库,每一环节都需要调度。2、不同的数据库写不同的 shell 脚本,没法复用,开发效率低。于是我写了这个数据库同步工具,如果你是做数据仓库或数据集市的,可能对你有所帮助。为什么我使用 Java 不...

weixin_39864373的博客 1566

Neo4j APOC与MySQL集成:如何用JDBC实现跨数据库数据迁移

本文详细介绍了如何利用Neo4j APOC扩展库与JDBC实现Neo4j与MySQL之间的跨数据库数据迁移。从环境配置到实战技巧,涵盖了数据导入、数据导出的完整流程,帮助开发者高效解决异构数据库整合的挑战。

weixin_26765287的博客 139

java跨数据库查询_Quicksql

QSQL是以SQL进行单一、混合查询的一款产品。QSQL支持标准SQL语言(SQL-2003);QSQL支持查询关系型数据库、NoSQL式数据库、原生不支持SQL查询的存储(如ES、Druid),及借助中间计算引擎实现混合查询。QSQL最大的特点是独立于计算引擎、存储引擎本身,如此用户只需要关注于QSQL语法以及数据本身,就可完成数据计算、统计以及分析。架构设计QSQL包含三层结构:语法解析层:负...

weixin_39637711的博客 1423

java跨库分页_jDialects首页、文档和下载 - 跨数据库分页及DDL工具 - OSCHINA - 中文开源技术交流社区...

jDialectsjDialects是一个从Hibernate中提取的支持70多种数据库(并加入了SQLite、Access等)方言的小项目,主要功能有:1.创建跨数据库的分页SQL,根据当前方言生成当前数据库的分页SQL。2.创建跨数据库的建表和删表DDL语句,根据当前数据库方言生成相应的DDL语句。3.创建跨数据库的SQL函数,根据当前数据库方言生成对应的SQL函数片段。jDialects起初...

weixin_42528534的博客 489

多设备同步表数据_自己写的跨数据库的表同步工具

阅读本文大概需要 3.6 分钟。近期在做数据集市,遇到的痛点如下:1、数据采集过程繁琐,重复的脚本编写太多。从不同的数据库抽取数据,需要为不同的数据库写卸数脚本,再传输到数据集市文件服务器,再入库,每一环节都需要调度。2、不同的数据库写不同的 shell 脚本,没法复用,开发效率低。于是我写了这个数据库同步工具,如果你是做数据仓库或数据集市的,可能对你有所帮助。为什么我使用 Java 不...

weixin_32612263的博客 542

集算器实现BIRT报表的跨库数据

使用BIRT实现跨数据库数据查询和关联计算时遇到问题。用DB2实现跨库的join配置很麻烦;如果用BIRT把两个库的数据都读进来的话,用BIRT的脚本(java或者java script)都要写较长的代码来实现join,也很麻烦。采用了集算器后任务就变得简单许多。          要在一个报表里展现的数据来源于两个DB2数据库。项目的数据有保密的要求,所以用订单表和订单明细表来做验证的:  

u012388497的专栏 923

Spring跨数据库事务管理

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34326179的博客 1256
上一篇: 我们需不需要像存储过程一样的跨数据库的JAVA存储过程。
下一篇: 续1:我们需不需要像存储过程一样的跨数据库过程
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值