15
Java编程-SQL语句应存储在哪里?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 6年前关闭。 改善这个问题 兼容JDBC的应用程序应在哪里存储其SQL语句,为什么? 到目前为止,我设法确定了这些选项: 硬编码在业务对象中 嵌入在SQLJ子句中 封装在单独的类中,例如 数据访问对象 驱动元数据(将对象模式与数据模式分离-在元数据中描述它们之间的映射) 外部文件(例如,属性或资源文件) 存储过程 各自的“优点”和“缺点”是什么? 应该将SQL代码视为“代码”还是“元数据”? 存储过程应该仅用于性能优化还是它们是数据库结构的合法抽象? 性能是决定的关键因素吗?什么厂商锁定? 更好的是松耦合还是紧耦合,为什么? 编辑:谢谢大家的答案–以下是摘要: 元数据驱动,即对象关系映射(ORM) 优点: 非常抽象-无需更改模型即可切换DB服务器 广泛传播-实际上是一个标准 减少所需的SQL数量 可以将SQL存储在资源文件中 性能(通常)是可以接受的 元数据驱动的方法 (数据库)供应商独立性 缺点: 隐藏SQL和真正的开发人员意图 DBA难以审核/更改SQL 奇数情况下可能仍需要SQL 可以强制使用专有查询语言,例如HQL 不适合进行优化(抽象) 可能缺乏参照完整性 缺乏SQL知识或对数据库中的代码缺乏关注的替代品 永远无法达到本机数据库的性能(即使相差无几) 模型代码与数据库模型紧密结合 硬编码/封装在DAO层中 优点: SQL保留在访问数据的对象(封装)中 SQL易于编写(开发速度) 需要更改时,SQL很容易跟踪 简单的解决方案(没有凌乱的架构) 缺点: DBA无法检查/更改SQL SQL可能成为特定于DB的 SQL可能变得难以维护 存储过程 优点: …