【发布时间】:2014-03-23 01:01:31
【问题描述】:
我用 Spring 和 Hibernate 制作了一个 Java Webapp,我必须从数据库中获取大量数据,但是我遇到了一个问题,因为应用程序太慢了,我需要让它更快。我认为更高的问题是我在每个jsp文件中执行的conexions数量,我不知道如何解决它。我认为这些连接都是必需的,但也许我可以修改部分代码以使其更快。我通过模型中的 Hibernate 和 Spring 将数据传递给 jsp,但是在 jsp 中我必须与数据库建立连接以获取更多信息,这些信息在另一个类中。比如我有一些球员,在球员中我有他们球队的ID,所以我必须在jsp中连接取球队的名字,因为我只知道ID。我将向您展示我如何将应用程序与数据库连接起来:
try {
Class.forName("org.gjt.mm.mysql.Driver");
Connection conexion = DriverManager.getConnection("jdbc:mysql://localhost:3306/database", "user", "pwd");
if (!conexion.isClosed()) {
// La consulta
Statement st = conexion.createStatement();
ResultSet rs = st.executeQuery("SELECT * FROM entity");
while (rs.next()){
aaa = rs.getObject("aaa").toString();
}
// cierre de la conexion
conexion.close();
}
else
// Error en la conexion
out.println("fallo");
}
catch (Exception e) {
// Error en algun momento.
out.println("Excepcion "+e);
e.printStackTrace();
}
我在同一个 jsp 中多次这样做,在更大的 jsp 中甚至 10-15 次。 我可以在jsp开头打开conexion,最后关闭conexion,将所有jsp代码和html放在conexion中,与数据库只建立1个连接吗?
还有一个疑问,在同一个连接中,如果我必须做 2 个查询,我会这样做:
Statement st = conexion.createStatement();
ResultSet rs = st.executeQuery("SELECT * FROM entity");
while (rs.next()){
aaa = rs.getObject("aaa").toString();
}
st = conexion.createStatement();
rs = st.executeQuery("select * from entity2");
while (rs.next()){
bbb = rs.getObject("bbb").toString();
}
那么,我为查询创建了一个新的语句,是否有必要?或者如果我在第一个查询中创建语句就足够了?这对页面速度很重要吗?
有人知道我可以做些什么来让我的应用程序更快吗?
谢谢!
【问题讨论】:
-
JSP 中的数据库连接代码?我想我的眼睛都快融化了。
-
如何针对 JSP 代码编写单元测试?大概您有大量复制/粘贴的代码“块”?你如何维护它?这只是初学者......
-
我没有单元测试。是的,我从一个连接复制/粘贴到另一个连接的代码并修改了查询。但如果我不这样做,我该怎么办?如何从数据库中获取数据?因为我在模型中做不到...
-
这听起来像是一场灾难。删除它并重新开始。也许读一本关于 MVC 或 MVP 或任何软件设计原则的书。
-
你会不会帮我?我知道如何做一个 MVC,我只想改进这个,我不想做一个新的。如果我制作了一个新的应用程序,我应该怎么做?因为你只说我做的不好,不说哪个是对的……
标签: mysql database jsp web-applications mysql-connector