我正在制作一个Java gui和web应用程序,它将使用相同的mysql数据库。
这是一个DTh管理系统,其中所有信息将根据输入动态存储和检索。
我认为视图本质上是静态的,因此我的查询将具有不同的where条件(userid),因此无用。
我需要使用触发器吗?我的意思是我可以编写java来执行多个语句而不是使用内置触发器(例如,在客户名称和家庭成员名称中插入两者将具有该系列的头部的副本副本)。是否有性能受损?我错了吗?
同样的事情是什么使用存储过程?我不能在java中使用方法来做任何事情吗?
所以,我问的是有可能将所有计算密集型的东西转移到java和web脚本而不是sql。如果是,这是否意味着我只需要创建数据库的后端结构(即所有不同的表和FK,PK)并在不使用mysql工作台上的任何sql东西的情况下休息?
感谢您的帮助。
答案 0 :(得分:1)
(一如既往)有一个正确答案:取决于。
如果您只想显示和查询某些数据,则可能不需要触发器或存储过程。
视图是另一回事:如果你想要一个静态的viesw到一个连接表或类似的东西,它们是非常有用的。如果您不需要,请不要使用它。
钥匙非常重要。它们使您的数据能够抵御错误的输入。
您使用的是PrepearedStatement而不是Statement
。如果您只使用PreparedStatement
,那么SQL-Injection的问题就是(几乎?)安全。
答案 1 :(得分:1)
我们使用视图,因为它比选择查询更快,而且只显示数据(不是编辑更新),它更快更好。
触发器在数据库端触发,因此它更快,因为它只是在单次执行中执行2个或更多查询。
存储过程相同,因为我们可以在单个数据库连接中执行多个查询。如果我们执行不同的查询,那么每次执行数据库连接都需要花费更多时间(查找数据库服务器,进行身份验证,查找数据库等等)。