大家都喜欢提及JDBC如何提取SQL之间供应商特定的差异,以呈现一种可以抵御整个SQL的单一SQL风格。 (JDBC 4.1)支持的SQL(指定版本)所支持的SQL的任何(详细)规范或甚至体面的用户空间范围都没有提及!因此,最终发生的事情(至少在我看来)是,如果我使用MySQL,我必须参考MySQL参考手册,然后尝试防止意外使用MySQL特有的功能。对于编写可移植的SQL(至少在我使用的JDBC驱动程序版本支持的级别),我宁愿直接引用JDBC规范或SQL规范,而不是引用MySQL,PostgresQL等。JDBC SQL:详细规范在哪里?
SQL标准本身(2008,2003等),JDBC的特定版本是基于哪个版本免费提供的?或者,我是否需要花费$ $$才能获得副本?
您的wiscorp链接应该证明非常有用。我发现它非常令人压抑**整体上DBMS层的事务状态:SQL可能是用于特定数据查询和操作的强大工具。但仅仅因为它不可移植,并且在涉及关系模型时并没有走到最后一英里,我们中的很多人(不包括OO粉丝)发现自己不得不处理ORM。我以某种方式憎恨ORM,因为在我的直觉中,集合将是更强大的方法来模拟实体和关系。 – Harry
@Harry SQL的一大问题在于它是一种专门用手写的ad-hoc语法的语言,但现在它主要是由机器编写的。对于查询语言,我们应该使用不同的语法,而不需要复杂的通用语法分析器,比如嵌套的yaml/json,嵌套的S表达式等。除了在数据库中获取传递关系以避免那些可怕的左连接链和重复数据删除之外,只需使用新的语法和稍微扩展的关系模型就可以做出更好的事情。 –
@Harry这不会对整个one-db-supports-one-thing,other-db-supports-other-thing问题有所帮助,但这是* any *标准的问题,而更强大的标准具有更多的差异。 PostgreSQL的嵌套JSON格式取回结果的能力已经在帮助解决这个问题。 –