使用 Hibernate 的商业 Web 应用程序中的 MySQL 许可

标签 mysql hibernate licensing gpl

关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。












想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。

6年前关闭。




Improve this question




我正在评估使用 Hibernate 作为 ORM 框架开发商业 java web 应用程序的前景。该应用程序将安装在客户的服务器上,供少数用户使用。此外,我不想发布我的源代码,因为该应用程序是关键任务,它可能会危及应用程序的安全性。

我会设计应用程序,因此如果客户已经拥有企业数据库许可证,我会配置 Hibernate 以使用该数据库。否则,理想情况下我想为他们提供/推荐一个数据库。根据我目前的专业知识,我更喜欢使用具有商业双重许可和 GPL 许可的 MySQL。

除了 Hibernate 方言设置之外,我不打算在我的应用程序中包含任何特定于 MySQL 的代码或 SQL。根据 MySQL 网站上的信息和我在网上阅读的许多相互矛盾的帖子,似乎如果我想以这种方式分发应用程序,我需要从 MySQL 购买商业许可证。商业许可证的成本(据我所知每年 600 美元以上)会使该软件过于昂贵。我觉得肯定有其他商业 web 应用程序允许类似的功能并且不与数据库捆绑在一起。

这让我想到了这两个问题:

1.) 是否有任何已知情况可以将 MySQL Community Edition 与商业闭源应用程序一起使用而无需支付许可费?如果是这样,您是否知道任何合法地这样做的商业应用程序或公司?

2.) 理想情况下,我想使用 MySQL 连接器 J 驱动程序,我认为它也是双重许可的。如果我没有在我的代码中捆绑这个 jar 而是指示用户下载连接器并直接从 MySQL 的网站下载和安装 MySQL 服务器,这在 GPL 下是允许的吗?

Stack Overflow 上已经有一些有用的帖子(例如 MySQL licensing and GPL ),但我正在为我的案例寻找更具体的答案。我意识到我们大多数人都不是律师,但任何指导都会有所帮助,因此我可以解决法律问题并开始实际编码!谢谢。

最佳答案

不要根据您在互联网上获得的法律建议做出商业决策——包括我的。

我的理解是,如果您告诉您的客户他们负责下载和安装 MySQL 和 JDBC 连接器,您就可以绕过 GPL 许可条款。

如果您随应用程序分发 GPL 软件,您的软件也会隐式使用该许可证。您有义务允许您的客户访问您的源代码。包括修改它和自己分发它的权利。

您可以选择另一个具有更宽松许可的流行开源 RDBMS 作为默认 RDBMS,例如:

  • PostgreSQL (BSD 许可证)
  • SQLite(公共(public)领域)
  • Firebird(InterBase 公共(public)许可证,基于 Mozilla 公共(public)许可证)


  • 在评论中回复您的问题:Confluence 实际上不是开源的,它是一个商业产品。他们确实向商业许可证持有者提供了源代码,但这并不符合 OSI 定义的开源标准。

    Confluence 使用 JDBC,这是 Sun Microsystems 定义的非 RDBMS 特定的 API。 Confluence 使用名为 HSQL 或 HypersonicHSQL 的轻量级 Java 数据库进行分发,该数据库使用类似于新 BSD 许可证的许可证。如果客户想在 MySQL 中使用 Confluence,他必须自己安装它。

    http://confluence.atlassian.com/display/DOC/Database+Setup+For+MySQL安装文档告诉您下载并安装 MySQL 和 MySQL Connector/J。

    为什么这适用于像 Confluence 这样的非开源产品的关键是他们的产品不一定需要使用 MySQL,它可以使用不同的 JDBC 驱动程序(事实上,默认情况下这样做)。由于不依赖于专门使用 MySQL,因此 Confluence 不需要遵守 GPL 的条款。

    如果您有关于 GPL 的其他问题,GPL FAQ 可能是您开始的最佳位置,而不是 StackOverflow。见 http://www.gnu.org/licenses/gpl-faq.html

    关于使用 Hibernate 的商业 Web 应用程序中的 MySQL 许可,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1424613/

    相关文章:

    mysql - 我当前的任务是否需要使用完整连接来连接 mysql 中的多个表

    php - 处理社交新闻网站上的赞成/反对票

    hibernate - 帮助我了解 SEAM 和 Hibernate?

    java - hibernate OneToMany 条件返回重复项

    mysql - 数据库内部 : How are variable size fields handled?

    PHP/Doctrine 1.2/MySQL - 根据另一个值识别一个值

    hibernate - grails/hibernate : how to disable auto-increment on ID column?

    android - 生成设备特定的序列号

    licensing - 是否听说过收购后的许可转让费?

    Windows 许可问题