如何从MySQL调用Java代码?

我在2008年发现了一篇文章,讨论如何从MySQL调用Java代码 。 有很多警告和免责声明,因为这个过程涉及使用MySQL的实验分支。

对于我想到的项目,能够访问MySQL中的Java库非常有用,类似于Oracle的Java存储过程 。 此function现在是否作为MySQL的标准function存在? 如果没有,哪些开源RDBMS支持类似于Oracle的Java存储过程的东西?

PostgreSQL支持可插入的过程语言,并且存在一个用PL / Java作为语言来扩展PostgreSQL的项目。

我不建议在RDBMS中添加太多代码。 在应用程序层中开发,测试和调试代码的工具比在RDBMS中使用代码的工具更好。

许多开发人员也不明白RDBMS中的代码应遵循事务隔离。 他们尝试从触发器等发送电子邮件。 我认为副作用的代码应该在应用程序层中,因此您不会创建幻像效果(例如,即使更改已回滚,电子邮件也可能会通知数据库更改)。

如果您可以使用HSQLDB,那么您可以直接从SQL调用java方法: http : //hsqldb.org/doc/2.0/guide/sqlroutines-chapt.html#N1240C

我完全同意Bill,但我可以想象在数据库中存储(未处理)业务规则。 我在想这里的流口水 。 引擎将在应用程序中,但规则可以在具有管理前端的数据库中。

对于不仅参数改变而且公式可以改变的场景,这样的野兽也会很有趣。

根据您目前提供的有限信息,很难提供好的建议。 然而:

…该示例涉及基于图形的数据类型(化学结构),无法使用内置MySQL函数与查询匹配。 Java库会将文本字段的查询和内容转换为可以匹配的内存中对象。 例如,将此逻辑保留在数据库层中将保持数据库中的连接,这似乎是它们所属的位置。 这至少就是这个想法。

我不认为我会在MySQL中使用数据库端Java。 相反,我想我会考虑以下选项:

  • 使用对象关系映射(例如JDO或JPA)(例如使用Hibernate)来处理基于图形的数据模型与数据库提供的内容之间的映射。 您不一定要使用RDBMS作为后端,但这可能是最好的开始……除非您已经发现这是一个性能问题。

  • 再看一下您的数据模型和数据访问模式。 看看是否可以找出一些转换,它允许将应用程序的主要查询实现为(高效)表连接,而无需借助服务器端应用程序逻辑。

  • 如果确实需要使用服务器端应用程序逻辑(出于性能原因!),请坚持使用RDBMS支持的机制。 例如,在Oracle中你可以使用PL / SQL和PostgreSQL,你有很多选择。 准备切换到更适合您的应用程序要求的不同RDBMS。

我(个人)会避免依赖某个数据库的实验分支:

  • 考虑如果实验分支未合并回主分支会发生什么。 根据不受支持的分支,您将无法使用代码库,并且可能会停止维护并失败。

  • 使用(当前)不受支持的RDBMS分支将阻碍其他可能想要使用您的软件的人。

显然,如果软件的长期可行性不是主要问题,您可以选择忽略此建议。 但它可能对某人很重要; 例如你的研究主管。