【问题标题】:Is there any use for views,triggers and stored procedures for a Java GUI project?Java GUI 项目的视图、触发器和存储过程有什么用处?
【发布时间】:2013-01-15 06:38:15
【问题描述】:

我正在制作一个 Java gui 和 web 应用程序,它将使用相同的 mysql 数据库。

这是一个 DTh 管理系统,所有信息都将根据输入动态存储和检索。

我相信视图本质上是静态的,因此毫无用处,因为我的所有查询都会有不同的 where 条件(用户 ID)。

我需要使用触发器吗?我的意思是我可以编写 java 代码来执行多个语句,而不是使用内置触发器(例如,插入客户姓名和家庭成员姓名都会有一个家庭负责人的副本)。是否有性能影响?我在某些方面错了吗?

同样的事情,存储过程有什么用?我不能用java中的方法来做所有事情吗?

所以,我想问是否可以将所有计算密集型的东西转移到 java 和 web 脚本而不是 sql。如果是,这是否意味着我只需要创建数据库的后端结构(即所有不同的表和 FK、PK)并在不使用 mysql 工作台上的任何 sql 东西的情况下休息?

感谢您的帮助。

【问题讨论】:

  • 即使您不需要使用 PK & FK,因为您也可以通过在代码中编写逻辑来做到这一点..
  • 我正在做 PK 和 FK,因为 mysql 工作台可视化编辑器使它变得非常简单,并且不需要编码。

标签: java sql triggers views procedures


【解决方案1】:

(一如既往)有一个正确答案:视情况而定。

如果您只想显示和查询一些数据,您可能不需要触发器或存储过程。

视图是另一回事:如果您想要连接表或类似的静态视图,它们会非常有用。如果你不需要这个,就不要使用它。

键真的很重要。它们使您的数据能够抵御错误输入。

你应该使用PrepearedStatement 而不是Statement。如果你只使用PreparedStatements,你(几乎?)在SQL-Injection的问题上是安全的。

【讨论】:

  • 我的所有查询都将使用 Java GUI 运行,因此,它就像人类一样会键入信息,然后在注册时将其存储。检索时,将需要客户 ID,因此视图超出范围。那么我应该在这个检索过程中使用一个程序,还是坚持为所有事情做准备?我目前的标准是完成项目,并且表现良好。
  • 用java做。但是使用 PreparedStatement:docs.oracle.com/javase/6/docs/api/java/sql/…
  • 谢谢你的帮助我会尽量用java做所有事情
【解决方案2】:

我们使用视图是因为它比选择查询更快,并且仅显示数据(而不是编辑更新)它更快且更可取。

触发器在数据库端触发,因此它更快,因为它只在一次执行中执行 2 个或更多查询。

在存储过程中也是如此,因为我们可以在单个数据库连接中执行多个查询。如果我们执行不同的查询而不是每次执行数据库连接(查找数据库服务器、验证、查找数据库等)所花费的时间更多。

【讨论】:

  • 视图只不过是一个存储的SELECT 语句,并且不能比“独立”执行的SELECT 语句更快-除非您在谈论“索引视图 i>" 这是 SQL Server 特定的东西
  • 所以我相信视图实际上是有史以来最没用的东西。
  • 我认为仅显示数据,视图在 SQL 中非常快,但在 mysql 中不是强制性的,因为 MySQL 不会在视图中缓存数据..
猜你喜欢
  • 2011-07-08
  • 2013-12-30
  • 1970-01-01
  • 1970-01-01
  • 2011-05-02
  • 1970-01-01
  • 1970-01-01
  • 2018-01-18
  • 2013-09-12
相关资源
最近更新 更多