Pequena duvida hibernate

5 respostas
A

comecei ontem com hibernate e to com uma pequana dúvida,
como to acostumado com jdbc e escrever os codigos sql,
nao sei como fazer com que o usuário set os valores dos atributos, como por exemplo em jdbc:

PreparedStatement st = conexao.prepareStatement("INSERT INTO paciente (NOME, SEXO, DATA_NASC, CELULAR, TELEFONE, CPF, RG, NOME_DOENCA, INFORMACOES, RUA, BAIRRO, CIDADE, EMAIL) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
            st.setString(1, paciente.getNome());
            st.setString(2, paciente.getSexo());
            st.setString(3, paciente.getDataNasc());
            st.setString(4, paciente.getCelular());
            st.setString(5, paciente.getTelefone());
            st.setString(6, paciente.getCpf());
            st.setString(7, paciente.getRg());
            st.setString(8, paciente.getNomeDoenca());
            st.setString(9, paciente.getInformacoes());
            st.setString(10, paciente.getRua());
            st.setString(11, paciente.getBairro());
            st.setString(12, paciente.getCidade());
            st.setString(13, paciente.getEmail());
            st.execute();
            st.close();
            conexao.close();

como eu faria em hibernate ?

package ManipulacaoContato;

import dao.ContatoDao;
import beans.Contato;

public class AdicaoDeContato {

	public static void main(String[] args) {
		Contato contato = criaContato();	
		new ContatoDao().salva(contato);
	}
	
	private static Contato criaContato(){
		Contato contato = new Contato();
		contato.setNome("João");
		contato.setEndereco("Rua tal");
		contato.setDataNascimento("10/10/1990");
		contato.setEmail("[email removido]");
		return contato;
	}

}

queria que o usuário setasse esses atributos ao invés de mim!
Sendo que o usuário tem q setar isso em um formulário html através de um servlet.

obrigado.

5 Respostas

pintofree

Cara, em sql “normal” como seu usuarios set o valor do paciente.getNome()); ???

E a mesma coisa a diferenca e que vc vai passar a classe paciente setado para o metodo de insert no hibernate

eulen

Artur, também sou iniciante. Não sei se entendi sua dúvida. Vc quer saber como pegar os dados do form ou ainda não se entendeu com o hibernate? Veja que o hibernate é apenas para persistência (gravação, consulta, exclusão, alteração) dos dados. Se for em relação à obter os dados do form, tem um exemplo bem simples:

Faça do action, seu servlet. Este servlet usa um DAO que pode ter sido escrito para usar hibernate ou JDBC normal. A aquisição dos dados é feita através do:
request.getParameter(“nomeDoCampo”)

cadastro_contato.jsp

<form name="cadastroContato" method="post" action="CadastraContato">
 //faça os inputs
</form>

implementação da servlet

package br.com.sistema.servlets;

import java.sql.Date;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class CadastraContato extends HttpServlet{
	
	public void service(HttpServletRequest request, HttpServletResponse response){
                //instancia novo contato
		Contato contato = new Contato();
                //atribui os valores. Os inputs tem esses nomes
		contato.setNome(request.getParameter("nome"));
		contato.setEndereco(request.getParameter("endereco"));
		contato.setTelefone(request.getParameter("telefone"));

		//utiliza um dao implementado, seja em jdbc ou hibernate
		ContatoDAO contatoDAO = new ContatoDAO();
		contatoDAO.salvar(contato);
		
	}
}
T

Query q = session.createQuery(“seu sql where id = :id”);
q.setParameter(“id”,1);

LPJava

vamos la, vou colocar partes de um code aqui. estou usando jsf, mas veja como ficou o code hibernate.

public class ControllerUser {
	private Usuarios usuario; 

	private DataModel model;
public Usuarios getUserEditorDelete(){
			Usuarios us = (Usuarios) model.getRowData();
		return us;
	}
	public String editar(){
		Usuarios us = getUserEditorDelete(); 
		setUsuario(us);
		return "editar";
	}
public class UsuarioDAO extends DAO {
public void atualizar(Usuarios us){
		try{
			getSession().beginTransaction();
			getSession().merge(us);
			getSession().beginTransaction().commit();
			getSession().flush();
		}catch (HibernateException e) {
			e.printStackTrace(); rollback();			
		}
	}
a pagina editar.jsf
<legend>Alterar Usuário</legend>
			
			<table>
			<tr><td>
			<label jsfc="h:outputLabel" for="nome">Nome:</label></td>
			<td>
			<input jsfc="h:inputText" size="30" type="text" id="nome" class="field"
			required="true" requiredMessage="Campo nome obrigatório" value="#{controllerUser.usuario.nome}"/>
			</td></tr>
			<tr><td>
			<label jsfc="h:outputLabel" for="sobrenome">Sobrenome:</label></td>
			<td>
			<input jsfc="h:inputText" size="50" type="text" id="sobrenome" class="field"
			required="true" requiredMessage="Campo sobrenome obrigatório" value="#{controllerUser.usuario.sobrenome}"/>
			</td>
			</tr>
			<tr><td>
			<label jsfc="h:outputLabel" for="login">Login:</label></td>
			<td>
			<input jsfc="h:inputText" size="25" type="text" id="login" class="field"
			required="true" requiredMessage="Campo login obrigatório"  value="#{controllerUser.usuario.login}"/>
			</td>
			</tr>
			<tr><td>
			<span jsfc="h:messages" class="msg" ></span></td></tr>	
			<tr><td>
			<label jsfc="h:outputLabel" for="senha">Senha:</label>
			</td>
			<td>			
			</tr>			
			
			<tr>
			<td><input jsfc="h:commandButton" type="submit" value="Alterar"
	action="#{controllerUser.update}" class="botao" /></td>
A

Muito Obrigado a todos! Resolvi o problema (era tão fácil!)
era só eu me lembrar de quando eu fazia apps desktop com o
swing aí desenrolei!

obg!

Criado 28 de junho de 2010
Ultima resposta 28 de jun. de 2010
Respostas 5
Participantes 5