Como otimizar os comandos em SQL?

Olá,

Estava eu pensando qual seria o melhor método para reduzir o trabalho de inserção, update, select e delete em um site.

Como o site tem diversas tabelas de dados com valores bem diferentes, queria criar algo que reduzisse o trabalho na hora de fazer todas as tarefas do MySQL.

Ao inves de criar diversas páginas especificas para cada insert por exemplo, não daria para criar um servlet que pegasse os nomes dos campos das tabelas e tb pegasse os nomes dos campos recebidos via POST (teriam de ser os mesmos nomes das colunas) e aí sim ele faria um loop e inseriria os valores na tabela.

Gostaria de saber de vocês se isso é viável e possível de se fazer?
Ou existe algum método melhor para otimizar essas tarefas?

Grato a todos.

A segurança do seu sistema ficaria mais furada que uma peneira. Daria pra fazer miséria usando SQL Injection em um esquema como esse que você sugeriu.

Há outros modos para evitar sujar as mãos com código SQL, já deu uma olhada no Hibernate?

Olá,

Dei uma olhada no site do hibernate e ele me parece muito com o dreamweaver, q tb cria conexoes e tudo mais. Acho que não tem muito jeito, né? Tem q criar uma página para cada insert ou update ou delete?

No caso o ideal é usar o JSP, correto? Ou criando servlets posso ganhar em velocidade e segurança?

Grato

Olá

Antigamente o dreamweaver era apenas uma ferramenta usada pelos web designers para gerar html confuso. Será que ele evoluiu tanto assim?

[]s
Luca

Pois é, hehehehe, ele está bem evoluido, faz código em php, jsp, asp, e vários outros. Conecta a qualquer banco de dados, e tem ajuda de tags, quando digita ponto ou espaço, e ele sincroniza o ftp da pasta local com a remota, então sempre que você salva ele envia as páginas e tem até um mini debug de códigos, uso ele bastante, mas mesmo assim tem que ficar mexendo no código. Por exemplo para fazer uma simples inserção em jsp o dreamweaver cria umas 40 linhas de código.

Dê uma olhada neste insert (modifiquei apenas a linhas do select, pois ele fazia um loop e para este caso quis dar uma simplificada):

[code]<%@ page contentType=“text/html; charset=iso-8859-1” language=“java” import=“java.sql.*” errorPage="" %>
<%@ include file="…/…/Connections/conn_adm_login.jsp" %>
<%@ include file = “…/…/sys_commons/crypt_functions.jsp” %>
<%
// *** Edit Operations: declare variables
// connection information
String MM_editDriver = null, MM_editConnection = null, MM_editUserName = null, MM_editPassword = null;
// redirect information
String MM_editRedirectUrl = null;
// query string to execute
StringBuffer MM_editQuery = null;
// boolean to abort record edit
boolean MM_abortEdit = false;
// table information
String MM_editTable = null, MM_editColumn = null, MM_recordId = null;
// form field information
String[] MM_fields = null, MM_columns = null;
%>
<%
// *** Insert Record: set variables
MM_editDriver = MM_conn_adm_login_DRIVER;
MM_editConnection = MM_conn_adm_login_STRING;
MM_editUserName = MM_conn_adm_login_USERNAME;
MM_editPassword = MM_conn_adm_login_PASSWORD;
MM_editTable = “adm_login”;
MM_editRedirectUrl = “…/adm_login.jsp”;
String MM_fieldsStr = “cd_adm_login|value|cd_adm_pass|value”;
String MM_columnsStr = “cd_adm_login|’,none,’’|cd_adm_pass|’,none,’’”;

String cryptPass = cryptEncode(request.getParameter(“cd_adm_pass”));

String SQL_Query = “INSERT INTO " + MM_editTable +
" (cd_adm_login, cd_adm_pass) VALUES (’” + request.getParameter(“cd_adm_login”)
+ “’,’” + cryptPass + “’)”;

// finish the sql and execute it
Driver MM_driver = (Driver)Class.forName(MM_editDriver).newInstance();
Connection MM_connection = DriverManager.getConnection(MM_editConnection,MM_editUserName,MM_editPassword);
PreparedStatement MM_editStatement = MM_connection.prepareStatement(SQL_Query.toString());
MM_editStatement.executeUpdate();
MM_connection.close();

// redirect with URL parameters
if (MM_editRedirectUrl.length() != 0) {
response.sendRedirect(response.encodeRedirectURL(MM_editRedirectUrl));
return;
}[/code]

Até que resolve, mas queria um método que simplificasse um pouco a construção, pois tenho umas umas 450 páginas em php e estou transformando em JSP. Ainda não estou totalmente convencido dos benefícios do java sobre php, mesmo porque não conheço java profundamente ainda e creio que não estou sabendo tirar o melhor proveito da linguagem ainda. Resolvi migrar pois quero aprender esta linguagem e também aliar alguns softwares desktop com as aplicações na internet.

Como vocês costumam fazer inserts e outros comandos em JAVA na internet?

Outra dúvida, estou usando a locaweb para hospedar as páginas, vocês conhecem algum provedor mais eficaz para java?

Grato

Olá

O dreamweaver coloca SQL dentro da página html?

Caraca! Então ele é muito pior do que eu imaninava. Como alguém pode cometer uma sandice desta e ainda vender.

[]s
Luca

Não é que o Dreamweaver ponha código SQL no HTML; ele ajuda a você criar um JSP (note o monte de <% %> que ele pôs para você).
O que ele faz é ajudar a criar aqueles JSPs clássicos estilão ASP (onde a página é que se conecta diretamente com a base).
Mas o problema é o conceito - páginas que abrem e fecham diretamente conexões com a base são sintoma de aplicações de estilo antigo - não MVC.

Exatamente… hehehe

O dreamweaver deixa aquele “ranso” de linguagem interpretada. Como posso aprender a utilizar o jsp e servlets para construir páginas mais eficientes?

Existe algum livro que oriente neste aspecto, um livro que seja voltado a produção, com exemplos. Pois acho que estou fazendo tudo errado, por exemplo, qual seria a melhor forma de se fazer este insert?

Grato

Por exemplo:

em php para fazer um cadastro de usuários, tenho 4 páginas:

1 - formulário que também serve para mostrar os dados gravados
2 - página com insert
3 - página com update
4 - página com delete

Para fazer isso em jsp e servlets, como seria a estrutura? Existe um método melhor de se fazer isso?

[]s

Olá

Colocar SQL dentro de página HMTL é idiotice completa usando qualquer tecnologia a menos que o site contenha menos do que 5 páginas e não vá crescer nunca.

Se em ASP se pode fazer assim, então usar ASP é idiotice. Com JSP se pode fazer assim mas quem faz é tolo porque JSP oferece todas as condições de não fazer isto. É fácil perceber que dar manutenção em uma aplicação onde a lógica fica espalhada dentro de páginas HTML é um pesadelo.

Qualquer tutorial ou livro mais atual de JSP ensina a não colocar o código nas páginas JSP.

[]s
Luca

Luca, não entendi o que você disse.

Por exemplo, este fórum que estamos usando, ele tem um banco de dados que armazena nossas mensagem, e também armazena os dados dos usuários, permissões, e relatórios.

E a interface com o usuário é feita em html, misturado com jsp provavelmente, correto?

Qual seria a melhor forma de se fazer um cadastro e visualizações de clientes, por exemplo para uma administração de site?

[]s

Olá

Fácil responder!

Escreva código Java e nele faça o que quiser tal como acessar BD e tudo o mais. Nas páginas JSP você não coloca NADA de código, apenas referencias aos Java beans.

Aliás, antes de fazer qualquer coisa com JSP, dê uma estudada em Expression Language e JSTL.

[]s
Luca

Entendi, ou seja, toda a parte de expressões eu deixo em um servlet, e para puxar um dado do sql e mostrar ao usuário eu me conecto via um servlet e jogo apenas o resultado na tela?

Não, não foi isto que falei. Na verdade você não precisa escrever servlet nenhum. Estude mais um pouco porque percebo que ainda está muito cru para sobreviver só com dicas esparsas.

E avalie também usar algum framework MVC tal como webwork.

[]s
Luca

Obrigado Luca,

Encontrei uns artigos sobre programação em 3 camadas e talz, vou dar uma estudada.

Valeuz