(原:我们需不需要像存储过程一样的跨数据库的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里,就有业务逻辑,以后查小问题你就不用看代码了。或者这样说,哪些蛋疼的问题就让客服和工程去忙去吧。
当然,这么干的话很多开发人员会拍砖。
所以、数风流人物还看今朝。看各位了.........
分享到:
相关推荐
### ORACLE数据库字符集设置详解 #### 一、引言 在使用ORACLE数据库时,字符集设置不当可能会导致汉字显示异常...此外,在开发过程中,还需要注意客户端与服务器端之间的字符集一致性,以确保数据的正确性和完整性。
通过以上步骤,我们可以在Myeclipse中使用Java JSP与MySQL数据库实现完整的CRUD操作,为Web应用程序提供数据存储与检索的能力。在实际项目中,还可以结合MVC模式、框架(如Spring、Hibernate)等进一步提升开发效率...
- 不应在代码中硬编码数据库凭据,应考虑使用环境变量或配置文件存储敏感信息。 7. **性能优化** - 使用批处理(batch processing)可以提高大量插入或更新操作的效率。 - 考虑使用连接池(如C3P0、HikariCP)...
本项目"database_java.rar_database ja_学生数据_管理程序"是一个使用Java实现的学生数据库管理程序,它展示了如何通过Java与数据库进行交互,处理学生数据。 1. **JDBC(Java Database Connectivity)**:Java...
描述中提到“这个是网站的一个数据库的定义,主要其中的一个类对应数据库中的一个表”,这表明项目中包含了一种对象关系映射(ORM)的设计模式。在这种模式下,Java类被设计来直接映射到数据库的表,使得数据库操作...
数据库连接池,简单来说,就是一组预先初始化的数据库连接,这些连接被存储在一个“池”中,供多个应用程序共享。当应用程序需要与数据库交互时,它可以从池中获取一个已存在的连接,而不是每次都创建新的连接。使用...
- **存储过程**:支持调用数据库中的存储过程,并处理输入输出参数。 - **Parameter Maps** 和 **Inline Parameters**:定义参数映射规则,支持多种参数类型。 - **Result Maps**:定义结果集映射规则,用于将查询...
数据库课程设计——学生成绩管理系统(java版)是一个典型的IT项目,旨在通过编程实现对学生成绩数据的存储、查询、更新和删除等操作。在这个项目中,Java作为主要的编程语言,结合数据库技术来构建一个功能完备的系统...
指数待办事项集成新的trisul ja3存储库: : 安装要克隆此仓库,您需要安装LFS git插件来处理大文件。 Apt/deb: sudo apt-get install git-lfsYum/rpm: sudo yum install git-lfsMacOS: brew install git-lfsWindows:...
2. **教职工信息添加**:系统提供界面供管理员输入新教职工的全部信息,并将这些信息存储到数据库中。 3. **教职工信息修改**:管理员可以更新已存在的教职工信息,如更改电话号码或调整工资。 4. **教职工信息删除*...
很抱歉,根据您提供的信息,这个压缩包"参考资料-Ja-8~Ja-15给水管20mm中粗砂基础.zip"似乎包含了一个名为"Ja-8~Ja-15给水管20mm中粗砂基础.XLS"的Excel文件,但没有具体的文件内容或详细的技术描述。在没有具体...
JA-SIG CAS(Central Authentication Service)是开源社区开发的一个广泛使用的SSO框架,主要针对教育和研究机构。下面将详细阐述基于Java的JA-SIG CAS系统的相关知识点。 1. **CAS协议**: CAS(Central ...
2. 课程名称“SAP Java Persistence Framework”表明该课程专注于SAP系统中Java编程语言的持久化技术,持久化技术是指数据在数据库中长期存储和管理的方法。 3. 课程的版本为2006年第三季度发布的版本,意味着课程...
JA-SIG CAS(Central Authentication Service)是Java社区开发的一个开源SSO项目,旨在简化Web应用的身份验证过程。 CAS的核心功能包括: 1. **统一认证**:用户只需要一个用户名和密码,就能访问所有集成到CAS的...
4. **数据库操作**:通常,彩信网关会存储和检索消息元数据,因此可能使用了SQL数据库,并且使用了JDBC(Java Database Connectivity)进行数据访问。 5. **Linux系统管理**:由于项目运行在Linux环境下,开发者...
《基于Java Web和Matlab Builder JA的远程数学实验教学系统设计》 在信息化教育日益发展的今天,远程实验教学系统已经成为高等教育的重要组成部分。本系统的设计旨在利用先进的技术手段,打破传统实验室的地域限制...
9. **JDBC**:Java Database Connectivity,是Java与数据库交互的标准API,包括连接数据库、执行SQL语句、处理结果集等操作。 10. **Spring框架**:作为Java企业级应用的主流框架,Spring提供了依赖注入、AOP(面向...
描述中提到的“java_database java mdb_ja”表明这个Java程序可能使用了特定的API或库来与Access数据库进行交互。 在Java中,与关系型数据库如Access交互通常通过JDBC(Java Database Connectivity)实现。JDBC是...
【Java共享网盘】是一个基于Java技术开发的在线文件存储和分享平台,它结合了jsp和servlet技术来构建项目的后端逻辑。该项目的核心目标是为用户提供一个安全、便捷的在线存储空间,允许用户根据其角色(管理员、普通...
《Spring+20宝典:TP312JA+L162.1》是一部针对Spring框架深入学习的资源合集,它包含了丰富的教程、实战案例和相关文档,旨在帮助开发者提升Spring技术栈的掌握程度。这个压缩包可能包含多个章节、教程文件,如TP312...