20 de dez. de 2007
Quem quer dinheiro???
12 de dez. de 2007
Curso Struts - Aula 03
<?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE tiles-definitions PUBLIC "-//Apache Software Foundation//DTD Tiles Configuration 1.3//EN" "http://struts.apache.org/dtds/tiles-config_1_3.dtd"> <tiles-definitions> <definition name="homepage" template="/jsp/layouts/layout.jsp"> <put name="title" value="Livraria Web" /> <put name="header" value="/jsp/layouts/banner.jsp" /> <put name="menu" value="/jsp/layouts/common_menu.jsp" /> <put name="body" value="/jsp/layouts/home_body.jsp" /> <put name="footer" value="/jsp/layouts/credits.jsp" /> </definition> <!-- Livros --> <definition name="listarLivros" extends="homepage"> <put name="body" value="/jsp/livro/listar.jsp" /> </definition> <definition name="formularioLivros" extends="homepage"> <put name="body" value="/jsp/livro/criar.jsp" /> </definition> <!-- Usuarios --> <definition name="listarUsuarios" extends="homepage"> <put name="body" value="/jsp/usuario/listar.jsp" /> </definition> <definition name="formularioUsuarios" extends="homepage"> <put name="body" value="/jsp/usuario/formulario.jsp" /> </definition> <!-- Login --> <definition name="loginUsuario" extends="homepage"> <put name="body" value="/jsp/login/login.jsp" /> </definition> </tiles-definitions>/jsp/layouts/layout.jsp
<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html;charset=UTF-8" /> <title><tiles:getAsString name="title" /></title> <link rel="stylesheet" type="text/css" href="<%=request.getContextPath() %>/stylesheets/scaffold.css"/> </head> <body> <div id="page"> <div id="header"> <tiles:insert name="header" /> </div> <hr class="hidden" /> <div id="main"> <div id="content-wrapper"> <div id="content"> <tiles:insert name="body" /> </div> </div> <div id="sidebar-wrapper"> <tiles:insert name="menu" /> </div> </div> <hr class="hidden" /> <div id="footer"> <tiles:insert name="footer" /> </div> </div> </body> </html>struts-config.xml
<?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN" "http://struts.apache.org/dtds/struts-config_1_3.dtd"> <struts-config> <!-- Definicao dos Formulario de Beans --> <form-beans> <form-bean name="livroForm" type="br.com.livrariaweb.controle.LivroForm" /> <form-bean name="usuarioForm" type="br.com.livrariaweb.controle.UsuarioForm" /> </form-beans> <!-- Definicao de Excecoes Globais --> <global-exceptions></global-exceptions> <!-- Definicao de Redirecionamento Global --> <global-forwards> <forward name="homepage" path="/homepage.do" /> </global-forwards> <!-- Mapeamento de Acoes --> <action-mappings> <action path="/homepage" type="br.com.livrariaweb.controle.HomeAction"> <forward name="homepage" path="homepage" /> </action> <!-- Cadastro de Livros --> <action path="/formularioLivros" forward="formularioLivros" /> <action path="/salvarLivro" type="br.com.livrariaweb.controle.LivroSalvarAction" name="livroForm" scope="request" input="formularioLivros"> <forward name="listar" path="/listarLivros.do" redirect="true" /> </action> <action path="/listarLivros" type="br.com.livrariaweb.controle.LivroAction"> <forward name="listar" path="listarLivros" /> </action> <!-- Cadastro de Usuários --> <action path="/formularioUsuarios" forward="formularioUsuarios" /> <action path="/listarUsuarios" type="br.com.livrariaweb.controle.UsuarioAction" name="usuarioForm" scope="request" input="formularioUsuarios" parameter="metodo" validate="true"> <forward name="listar" path="listarUsuarios" /> <forward name="formulario" path="formularioUsuarios" /> </action> <!-- Login e Logout --> <action path="/login" forward="loginUsuario" /> <action path="/autenticar" type="br.com.livrariaweb.controle.LoginAction" name="usuarioForm" scope="request" input="loginUsuario" validate="true"> <forward name="homepage" path="/homepage.do" /> </action> <action path="/sair" type="br.com.livrariaweb.controle.LogoutAction" scope="request"> <forward name="homepage" path="homepage" /> </action> <!-- Comprar --> <action path="/comprar" type="br.com.livrariaweb.controle.ComprarAction"> <forward name="homepage" path="homepage" /> </action> </action-mappings> <!-- Arquivo de Definicao de Mensagens --> <message-resources parameter="mensagem" /> <plug-in className="org.apache.struts.tiles.TilesPlugin"> <set-property property="definitions-config" value="/WEB-INF/tiles-defs.xml" /> </plug-in> </struts-config>
9 de dez. de 2007
Curso Struts - Aula 02
package br.com.livrariaweb.entidades; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; @Entity public class Usuario { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Integer id; @Column(nullable = false) private String login; @Column(nullable = false) private String nome; @Column(nullable = false) private String senha; //gets e setsbr.com.livrariaweb.servico.UsuarioServico
package br.com.livrariaweb.servico; import java.util.List; import org.hibernate.Session; import br.com.livrariaweb.entidades.Usuario; import br.com.livrariaweb.util.HibernateUtil; public class UsuarioServico { public Listbr.com.livrariaweb.util.HibernateUtillistar() { return HibernateUtil.getSession().createCriteria(Usuario.class).list(); } public Usuario carregar(Integer id) { return (Usuario) HibernateUtil.getSession().load(Usuario.class, id); } public void salvar(Usuario usuario) { Session s = HibernateUtil.getSession(); s.beginTransaction(); if (usuario.getId() == 0) s.save(usuario); else s.update(usuario); s.getTransaction().commit(); s.close(); } public void excluir(Usuario usuario) { Session s = HibernateUtil.getSession(); s.beginTransaction(); s.delete(usuario); s.getTransaction().commit(); s.close(); } }
package br.com.livrariaweb.util; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.AnnotationConfiguration; public class HibernateUtil { private static final SessionFactory sessionFactory; static { try { // Criando a SessionFactory apartir no hibernate.cfg.xml sessionFactory = new AnnotationConfiguration().configure() .buildSessionFactory(); } catch (Throwable ex) { System.err.println("Não foi possivel criar a SessionFactory." + ex); throw new ExceptionInInitializerError(ex); } } public static Session getSession() { return sessionFactory.openSession(); } }hibernate.cfg.xml
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <!-- Database connection settings --> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="connection.url">jdbc:mysql://localhost/livrariaweb</property> <property name="connection.username">root</property> <property name="connection.password">root</property> <property name="connection.pool_size">1</property> <!-- SQL dialect --> <property name="dialect">org.hibernate.dialect.MySQLDialect</property> <property name="show_sql">true</property> <property name="hbm2ddl.auto">update</property> <mapping class="br.com.livrariaweb.entidades.Livro"/> <mapping class="br.com.livrariaweb.entidades.Usuario"/> </session-factory> </hibernate-configuration>br.com.livrariaweb.controle.UsuarioAction
package br.com.livrariaweb.controle; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.apache.struts.actions.DispatchAction; import br.com.livrariaweb.entidades.Usuario; import br.com.livrariaweb.servico.UsuarioServico; public class UsuarioAction extends DispatchAction { private UsuarioServico servico = new UsuarioServico(); public ActionForward listar(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { request.setAttribute("usuarios", servico.listar()); return mapping.findForward("listar"); } public ActionForward salvar(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { Usuario u = ((UsuarioForm) form).getUsuario(); servico.salvar(u); request.setAttribute("usuarios", servico.listar()); return mapping.findForward("listar"); } public ActionForward carregar(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { Integer id = Integer.valueOf(request.getParameter("idUsuario")); Usuario u = servico.carregar(id); ((UsuarioForm) form).setUsuario(u); return mapping.findForward("formulario"); } public ActionForward excluir(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { Integer id = Integer.valueOf(request.getParameter("idUsuario")); Usuario u = servico.carregar(id); servico.excluir(u); request.setAttribute("usuarios", servico.listar()); return mapping.findForward("listar"); } }br.com.livrariaweb.controle.UsuarioForm
package br.com.livrariaweb.controle; import javax.servlet.http.HttpServletRequest; import org.apache.struts.action.ActionErrors; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionMapping; import org.apache.struts.action.ActionMessage; import org.apache.struts.action.ActionMessages; import br.com.livrariaweb.entidades.Usuario; public class UsuarioForm extends ActionForm { private Usuario usuario = new Usuario(); public Usuario getUsuario() { return usuario; } public void setUsuario(Usuario usuario) { this.usuario = usuario; } @Override public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { ActionErrors erros = new ActionErrors(); if (usuario.getLogin() != null && usuario.getLogin().trim().length() == 0) { erros.add("usuario.login", new ActionMessage( "form.campoObrigatorio", "Login")); } if (usuario.getNome() != null && usuario.getNome().trim().length() == 0) { erros.add("usuario.nome", new ActionMessage( "form.campoObrigatorio", "Nome")); } if (usuario.getSenha() != null && usuario.getSenha().length() == 0) { erros.add("usuario.senha", new ActionMessage( "form.campoObrigatorio", "Senha")); } return erros; } }mensagem.properties
form.campoObrigatorio={0}: Campo Obrigatório form.salvar=salvarstruts-config.xml
<?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN" "http://struts.apache.org/dtds/struts-config_1_3.dtd"> <struts-config> <!-- Definicao dos Formulario de Beans --> <form-beans> <form-bean name="livroForm" type="br.com.livrariaweb.controle.LivroForm" /> <form-bean name="usuarioForm" type="br.com.livrariaweb.controle.UsuarioForm" /> </form-beans> <!-- Definicao de Excecoes Globais --> <global-exceptions></global-exceptions> <!-- Definicao de Redirecionamento Global --> <global-forwards> <forward name="inicio" path="/Inicio.do" /> </global-forwards> <!-- Mapeamento de Acoes --> <action-mappings> <action path="/Inicio" forward="/jsp/inicio.jsp" /> <action path="/Livros" type="br.com.livrariaweb.controle.LivroAction"> <forward name="listar" path="/jsp/livro/listar.jsp" /> </action> <action path="/LivroSalvar" type="br.com.livrariaweb.controle.LivroSalvarAction" name="livroForm" scope="request" input="/jsp/livro/criar.jsp"> <forward name="listar" path="/Livros.do" redirect="true" /> </action> <action path="/usuario" type="br.com.livrariaweb.controle.UsuarioAction" name="usuarioForm" scope="request" input="/jsp/usuario/formulario.jsp" parameter="metodo" validate="true"> <forward name="listar" path="/jsp/usuario/listar.jsp" /> <forward name="formulario" path="/jsp/usuario/formulario.jsp" /> </action> </action-mappings> <!-- Arquivo de Definicao de Mensagens --> <message-resources parameter="mensagem" /> </struts-config>jsp/usuario/listar.jsp
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%> <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%> <%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic"%> <%@ taglib uri="http://struts.apache.org/tags-nested" prefix="nested"%> <html:html> <body> <h1>Usuário</h1> <table border="1" cellpadding="1"> <tr> <th>Login</th> <th>Nome</th> <th>Senha</th> </tr> <logic:iterate id="u" name="usuarios"> <tr> <td><bean:write name="u" property="login" /></td> <td><bean:write name="u" property="nome" /></td> <td><bean:write name="u" property="senha" /></td> <td><html:link action="/usuario.do"> Editar <html:param name="idUsuario"> <bean:write name="u" property="id" /> </html:param> <html:param name="metodo">carregar</html:param> </html:link></td> <td><html:link action="/usuario.do"> Excluir <html:param name="idUsuario"> <bean:write name="u" property="id" /> </html:param> <html:param name="metodo">excluir</html:param> </html:link></td> </tr> </logic:iterate> </table> <p><html:link href="jsp/usuario/formulario.jsp">Novo Usuário</html:link></p> </body> </html:html>jsp/usuario/formulario.jsp
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%> <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%> <%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic"%> <%@ taglib uri="http://struts.apache.org/tags-nested" prefix="nested"%> <html:html> <body> <h3 style="color: red;"> <html:messages id="erro"> <li><bean:write name="erro" /></li> </html:messages> </h3> <html:form action="/usuario.do" focus="usuario.login"> <logic:present name="usuario"> <h1>Editar Usuário</h1> </logic:present> <logic:notPresent name="usuario"> <h1>Criar Usuário</h1> </logic:notPresent> <html:hidden property="usuario.id" /> <p><b>Login:</b><br> <html:text property="usuario.login" /></p> <p><b>Nome:</b><br> <html:text property="usuario.nome" /></p> <p><b>Senha:</b><br> <html:password property="usuario.senha" /></p> <html:submit property="metodo"> <bean:message key="form.salvar"/> </html:submit> </html:form> </body> </html:html>
2 de dez. de 2007
Curso Struts - Aula 01
package br.com.livrariaweb.controle; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import br.com.livrariaweb.entidades.Livro; import br.com.livrariaweb.servico.LivroServico; public class LivroAction extends Action { public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { LivroServico servico = new LivroServico(); ListLivroAction.javal = servico.listar(); request.setAttribute("livros", l); return mapping.findForward("listar"); } }
package br.com.livrariaweb.controle; import org.apache.struts.action.ActionForm; public class LivroForm extends ActionForm{ private static final long serialVersionUID = 1L; private Integer id; private String titulo; private String autor; private Integer nroEdicao; private Double valor; // gets e sets }LivroSalvarAction.java
package br.com.livrariaweb.controle; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.beanutils.BeanUtils; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import br.com.livrariaweb.entidades.Livro; import br.com.livrariaweb.servico.LivroServico; public class LivroSalvarAction extends Action { public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { Livro l = new Livro(); BeanUtils.copyProperties(l, (LivroForm) form); LivroServico s = new LivroServico(); s.salvar(l); return mapping.findForward("listar"); } }LivroAction.java
package br.com.livrariaweb.entidades; import java.io.Serializable; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; @Entity public class Livro implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.AUTO) private Integer id; private String titulo; private String autor; private Integer nroEdicao; private Double valor; // gets e sets }LivroServico.java
package br.com.livrariaweb.servico; import java.util.List; import org.hibernate.Session; import br.com.livrariaweb.entidades.Livro; import br.com.livrariaweb.util.HibernateUtil; public class LivroServico { public Livro salvar(Livro livro) { Session s = HibernateUtil.getSessionFactory().openSession(); s.beginTransaction(); s.save(livro); s.getTransaction().commit(); s.close(); return livro; } @SuppressWarnings("unchecked") public ListHibernateUtil.javalistar() { Session s = HibernateUtil.getSessionFactory().openSession(); s.beginTransaction(); List l = s.createCriteria(Livro.class).list(); s.getTransaction().commit(); s.close(); return l; } }
package br.com.livrariaweb.util; import org.hibernate.SessionFactory; import org.hibernate.cfg.AnnotationConfiguration; public class HibernateUtil { private static final SessionFactory sessionFactory; static { try { // Criando a SessionFactory apartir no hibernate.cfg.xml sessionFactory = new AnnotationConfiguration().configure() .buildSessionFactory(); } catch (Throwable ex) { System.err.println("Não foi possivel criar a SessionFactory." + ex); throw new ExceptionInInitializerError(ex); } } public static SessionFactory getSessionFactory() { return sessionFactory; } }criar.jsp
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%> <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%> <%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic"%> <%@ taglib uri="http://struts.apache.org/tags-nested" prefix="nested"%> <html:html> <body> <html:form action="/LivroSalvar.do" focus="titulo"> <h1>Criar Livro</h1> <p><b>Título</b><br> <html:text property="titulo"></html:text></p> <p><b>Autor</b><br> <html:text property="autor"></html:text></p> <p><b>Número da Edição</b><br> <html:text property="nroEdicao"></html:text></p> <p><b>Valor</b><br> <html:text property="valor"></html:text></p> <html:submit>Salvar</html:submit> </html:form> </body> </html:html>listar.jsp
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%> <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%> <%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic"%> <%@ taglib uri="http://struts.apache.org/tags-nested" prefix="nested"%> <html:html> <body> <h1>Livros</h1> <table border="1" cellpadding="1"> <tr> <th>Titulo</th> <th>Autor</th> <th>Valor</th> </tr> <logic:iterate id="l" name="livros"> <tr> <td><bean:write name="l" property="titulo" /></td> <td><bean:write name="l" property="autor" /></td> <td><bean:write name="l" property="valor" /></td> </tr> </logic:iterate> </table> <p><html:link href="jsp/livro/criar.jsp" >Criar Livro</html:link></p> </body> </html:html>inicio.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Aplicacao Struts</title> </head> <body> Aplicacao Struts no Ar! <br> <a href="<%=request.getContextPath()%>/Livros.do">Livros</a> </body> </html>index.jsp
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %> <logic:redirect forward="inicio"/>struts-config.xml
<?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN" "http://struts.apache.org/dtds/struts-config_1_3.dtd"> <struts-config> <!-- Definicao dos Formulario de Beans --> <form-beans> <form-bean name="livroForm" type="br.com.livrariaweb.controle.LivroForm" /> </form-beans> <!-- Definicao de Excecoes Globais --> <global-exceptions></global-exceptions> <!-- Definicao de Redirecionamento Global --> <global-forwards> <forward name="inicio" path="/Inicio.do" /> </global-forwards> <!-- Mapeamento de Acoes --> <action-mappings> <action path="/Inicio" forward="/jsp/inicio.jsp" /> <action path="/Livros" type="br.com.livrariaweb.controle.LivroAction"> <forward name="listar" path="/jsp/livro/listar.jsp" /> </action> <action path="/LivroSalvar" type="br.com.livrariaweb.controle.LivroSalvarAction" name="livroForm" scope="request" input="/jsp/livro/criar.jsp"> <forward name="listar" path="/Livros.do" redirect="true"/> </action> </action-mappings> <!-- Arquivo de Definicao de Mensagens --> <message-resources parameter="MessageResources" /> </struts-config>web.xml
<?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <display-name>Aplicacao Struts</display-name> <!-- Configuracoes do Strtuts --> <servlet> <servlet-name>action</servlet-name> <servlet-class>org.apache.struts.action.ActionServlet</servlet-class> <init-param> <param-name>config</param-name> <param-value>/WEB-INF/struts-config.xml</param-value> </init-param> <load-on-startup>2</load-on-startup> </servlet> <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <!-- Pagina Inicial --> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
Resposta ao comentário do Renan:
Renan, esse é um assunto que iremos tratar na próxima aula. Até agora as nossas classes de ação elas herdam de "Action" mas temos uma outra classe também do struts que é chamada de "DispatchAction". Essa nova classe permite implementarmos diversos métodos dentro de uma única classe de ação. A assinatura do método vai ser a mesma para o método "execute".
Por exemplo:
public final class UsuarioAction extends DispatchAction { public ActionForward novo (ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { // sua acao... } public ActionForward salva (ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { // // sua acao... } public ActionForward edita (ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { // // sua acao... } }
Só tem um detalhe o mapeamento da sua action vai precisar de mais um parametro, o "parameter":
<action path="/Usuario" type="br.com.loteriaweb.controle.UsuarioAction" name="usuarioForm" scope="request" input="/jsp/usuario/cria.jsp" parameter="submit"/>
ele corresponde ao método que você vai acessar. Ou seja. no seu formulario vc precisa ter um campo hidden com nome de submit que informa a ação que será executada. Vc pode utilizar um javascript para controlar essa decisão. Não fico muito feliz quando tenho que utilizar javascript então na aula eu mostro uma dica boa.
1 de dez. de 2007
Struts – Aula01 – Tutorial de Configuração Básica
Configurando o ambiente
1. Copie e descompacte o eclipse-jee-europa-fall2-win32.zip no seu diretório de trabalho. http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/20071103/eclipse-jee-europa-fall2-win32.zip 2. Copie e descompacte o apache-tomcat-5.5.25 em seu diretório de trabalho. http://mirrors.uol.com.br/pub/apache/tomcat/tomcat-5/v5.5.25/bin/apache-tomcat-5.5.25.zip 3. Copie e descompacte o struts-1.3.8 em seu diretório de trabalho. http://ftp.unicamp.br/pub/apache/struts/binaries/struts-1.3.8-all.zip
Configurando o Projeto
4. Inicie o eclipse e crie um novo projeto. File >> New >> Other >> Selecione Web >> Selecione >> Dynamic Web Project >> Next. Defina o nome do projeto e clique em Finish
5. Copie os arquivos abaixo para a pasta web\WEB-INF\lib do seu projeto struts-1.3.8\lib\antlr-2.7.2.jar struts-1.3.8\lib\commons-beanutils-1.7.0.jar struts-1.3.8\lib\commons-chain-1.1.jar struts-1.3.8\lib\commons-digester-1.8.jar struts-1.3.8\lib\commons-logging-1.0.4.jar struts-1.3.8\lib\commons-validator-1.3.1.jar struts-1.3.8\lib\oro-2.0.8.jar struts-1.3.8\lib\struts-core-1.3.8.jar struts-1.3.8\lib\struts-taglib-1.3.8.jar struts-1.3.8\lib\struts-tiles-1.3.8.jar
6. Crie o arquivo struts-config.xml em web\WEB-INF e insira o seguinte conteúdo: <?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN" "http://struts.apache.org/dtds/struts-config_1_3.dtd"> <struts-config> <!-- Definicao dos Formulario de Beans --> <form-beans></form-beans> <!-- Definicao de Excecoes Globais --> <global-exceptions></global-exceptions> <!-- Definicao de Redirecionamento Global --> <global-forwards> <forward name="inicio" path="/Inicio.do"/> </global-forwards> <!-- Mapeamento de Acoes --> <action-mappings> <action path="/Inicio" forward="/jsp/inicio.jsp"/> </action-mappings> <!-- Arquivo de Definicao de Mensagens --> <message-resources parameter="MessageResources" /> </struts-config>
7. Altere o arquivo web\WEB-INF\web.xml para que fique com as configurações do struts: <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <display-name>Aplicacao Struts</display-name> <!-- Configuracoes do Strtuts --> <servlet> <servlet-name>action</servlet-name> <servlet-class>org.apache.struts.action.ActionServlet</servlet-class> <init-param> <param-name>config</param-name> <param-value>/WEB-INF/struts-config.xml</param-value> </init-param> <load-on-startup>2</load-on-startup> </servlet> <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <!-- Pagina Inicial --> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
8. Crie o arquivo web\index.jsp com o seguinte conteúdo: <%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %> <logic:redirect forward="inicio"/>
9. Crie o arquivo web\jsp\index.jsp com o seguinte conteúdo: <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Aplicacao Struts</title> </head> <body> Aplicacao Struts no Ar! </body> </html>
Executando
10. Selecione o projeto, no menu superior clique em Run >> Run As >> Run on Server Configure o TomCat indicando o local onde foi descompactado e execute a aplicação. Acesse o browser em HTTP://localhost:8080/seuprojeto/
29 de nov. de 2007
Hibernate - Exemplo com Herança
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <!-- Database connection settings --> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="connection.url">jdbc:mysql://localhost/hibernateAdvocacia</property> <property name="connection.username">root</property> <property name="connection.password">root</property> <property name="connection.pool_size">1</property> <!-- SQL dialect --> <property name="dialect">org.hibernate.dialect.MySQLDialect</property> <property name="show_sql">true</property> <property name="format_sql">true</property> <property name="hbm2ddl.auto">update</property> <mapping class="entidade.Advogado"/> <mapping class="entidade.Atendimento"/> <mapping class="entidade.Cliente"/> <mapping class="entidade.Funcionario"/> <mapping class="entidade.Horario"/> <mapping class="entidade.HorarioAdvogado"/> <mapping class="entidade.Pessoa"/> </session-factory> </hibernate-configuration>
entidade.Pessoa.java
package entidade; import java.io.Serializable; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Inheritance; import javax.persistence.InheritanceType; @Entity @Inheritance(strategy=InheritanceType.JOINED) public class Pessoa implements Serializable{ @Id @GeneratedValue(strategy=GenerationType.AUTO) private Integer id; private String nome; private String cpf; private String rg; private String telefone; private String endereco; // gets e sets }
entidade.Advogado.java
package entidade; import java.io.Serializable; import java.util.List; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.OneToMany; import javax.persistence.PrimaryKeyJoinColumn; import org.hibernate.annotations.Cascade; import org.hibernate.annotations.CascadeType; @Entity @PrimaryKeyJoinColumn(name = "advogado_id", referencedColumnName = "id") public class Advogado extends Pessoa implements Serializable { private Integer nroOab; @OneToMany(mappedBy = "advogado",fetch=FetchType.EAGER) @Cascade(CascadeType.ALL) private Listhorarios; // gets e sets }
entidade.HorarioAdvogado.java Observe que em @JoinColumn(name="advogado_id") não foi referenciado o campo "id" de pessoa e sim o campo "advogado_id", por isso está suprimido o atributo "referencedColumnName". Isso vale para as outras classes que tem relacionamento @ManyToOne()
package entidade; import java.util.Date; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.Temporal; import javax.persistence.TemporalType; @Entity public class HorarioAdvogado { @Id @GeneratedValue(strategy=GenerationType.AUTO) private Integer id; @Temporal(TemporalType.TIMESTAMP) private Date horario; @ManyToOne() @JoinColumn(name="advogado_id") private Advogado advogado; //gets e sets }
entidade.Funcionario.java
package entidade; import java.math.BigDecimal; import java.util.List; import javax.persistence.Entity; import javax.persistence.OneToMany; import javax.persistence.PrimaryKeyJoinColumn; @Entity @PrimaryKeyJoinColumn(name = "funcionario_id", referencedColumnName = "id") public class Funcionario extends Pessoa { private String carteiraTrabalho; private BigDecimal salario; @OneToMany(mappedBy="funcionario") private Listhorarios; // gets e sets }
entidade.Horario.java
package entidade; import java.util.Date; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.Temporal; import javax.persistence.TemporalType; @Entity public class Horario { @Id @GeneratedValue(strategy=GenerationType.AUTO) private Integer id; @Temporal(TemporalType.TIMESTAMP) private Date hora; @ManyToOne() @JoinColumn(name="funcionario_id") private Funcionario funcionario; //gets e sets }
entidade.Cliente.java
package entidade; import java.util.List; import javax.persistence.Entity; import javax.persistence.OneToMany; import javax.persistence.PrimaryKeyJoinColumn; @Entity @PrimaryKeyJoinColumn(name = "cliente_id", referencedColumnName = "id") public class Cliente extends Pessoa { @OneToMany(mappedBy = "cliente") private Listatendimentos; //gets e sets }
entidade.Atendimento.java
package entidade; import java.util.Date; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.Temporal; import javax.persistence.TemporalType; @Entity public class Atendimento { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Integer id; @Temporal(TemporalType.TIMESTAMP) private Date dia; private String descricao; @ManyToOne() @JoinColumn(name = "cliente_id") private Cliente cliente; //gets e sets }
servico.PessoaServico.java
package servico; import java.util.ArrayList; import java.util.Date; import java.util.List; import org.hibernate.Criteria; import org.hibernate.Session; import util.HibernateUtil; import entidade.Advogado; import entidade.HorarioAdvogado; public class PessoaServico { public static void main(String[] args) { PessoaServico p = new PessoaServico(); // p.criarAdvogado(); p.listarAdvogados(); } private void listarAdvogados() { Session s = HibernateUtil.getSessionFactory().openSession(); s.beginTransaction(); Criteria c = s.createCriteria(Advogado.class); Listadvogados = c.list(); for (Advogado a : advogados) { System.out.println(a.getNome()); System.out.println(a.getNroOab()); System.out.println(a.getHorarios().get(0)); } s.getTransaction().commit(); s.close(); } private void criarAdvogado() { Advogado a = new Advogado(); a.setCpf("123456"); a.setEndereco("endereco"); a.setNome("Advogado 3"); a.setNroOab(789); a.setRg("783545"); a.setTelefone("789456"); HorarioAdvogado h = new HorarioAdvogado(); h.setAdvogado(a); h.setHorario(new Date()); a.setHorarios(new ArrayList ()); a.getHorarios().add(h); Session s = HibernateUtil.getSessionFactory().openSession(); s.beginTransaction(); s.save(a); s.getTransaction().commit(); s.close(); } }
util.HibernateUtil.java
package util; import org.hibernate.SessionFactory; import org.hibernate.cfg.AnnotationConfiguration; public class HibernateUtil { private static final SessionFactory sessionFactory; static { try { // Criando a SessionFactory apartir no hibernate.cfg.xml sessionFactory = new AnnotationConfiguration().configure() .buildSessionFactory(); } catch (Throwable ex) { System.err.println("Não foi possivel criar a SessionFactory." + ex); throw new ExceptionInInitializerError(ex); } } public static SessionFactory getSessionFactory() { return sessionFactory; } }
25 de nov. de 2007
Curso Hibernate - Aula 04
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <!-- Database connection settings --> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="connection.url">jdbc:mysql://localhost/hibernateHeranca</property> <property name="connection.username">root</property> <property name="connection.password">root</property> <property name="connection.pool_size">1</property> <!-- SQL dialect --> <property name="dialect">org.hibernate.dialect.MySQLDialect</property> <property name="show_sql">true</property> <property name="hbm2ddl.auto">create</property> <!-- Tabela por Classe --> <mapping class="entidades.classe.PessoaFisica"/> <mapping class="entidades.classe.PessoaJuridica"/> <!-- Tabela Simples / Tabela por Hierarquia --> <mapping class="entidades.simples.Tulipa"/> <mapping class="entidades.simples.Rosa"/> <mapping class="entidades.simples.Flor"/> <!-- Tabela por Subclasse --> <mapping class="entidades.subclasse.Veiculo"/> <mapping class="entidades.subclasse.Carro"/> <mapping class="entidades.subclasse.Caminhao"/> </session-factory> </hibernate-configuration>
Pessoa.java
package entidades.classe; import java.util.Date; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.MappedSuperclass; @MappedSuperclass public class Pessoa { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id; private String nome; private Date dataNascimento; gets e sets ... }
PessoaFisica.java
package entidades.classe; import javax.persistence.Entity; import javax.persistence.Inheritance; import javax.persistence.InheritanceType; @Entity @Inheritance(strategy=InheritanceType.TABLE_PER_CLASS) public class PessoaFisica extends Pessoa{ private String cpf; public String getCpf() { return cpf; } public void setCpf(String cpf) { this.cpf = cpf; } }
PessoaJuridica.java
package entidades.classe; import javax.persistence.Entity; import javax.persistence.Inheritance; import javax.persistence.InheritanceType; @Entity @Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) public class PessoaJuridica extends Pessoa { private String cnpj; private String nomeFantasia; gets e sets... }
Flor.java
package entidades.simples; import javax.persistence.DiscriminatorColumn; import javax.persistence.DiscriminatorType; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Inheritance; import javax.persistence.InheritanceType; @Entity @Inheritance(strategy = InheritanceType.SINGLE_TABLE) @DiscriminatorColumn(name = "tipo_flor", discriminatorType = DiscriminatorType.STRING) public class Flor { @Id @GeneratedValue(strategy=GenerationType.IDENTITY) private Integer id; private String cor; gets e sets... }
Rosa.java
package entidades.simples; import javax.persistence.DiscriminatorValue; import javax.persistence.Entity; @Entity @DiscriminatorValue(value="ROSA") public class Rosa extends Flor{ private String tamanhoEspinho; public String getTamanhoEspinho() { return tamanhoEspinho; } public void setTamanhoEspinho(String tamanhoEspinho) { this.tamanhoEspinho = tamanhoEspinho; } }
Tulipa.java
package entidades.simples; import javax.persistence.DiscriminatorValue; import javax.persistence.Entity; @Entity @DiscriminatorValue(value = "TULIPA") public class Tulipa extends Flor{ }
Caminhao.java
package entidades.subclasse; import javax.persistence.Entity; import javax.persistence.PrimaryKeyJoinColumn; @Entity @PrimaryKeyJoinColumn(name = "id", referencedColumnName="id") public class Caminhao extends Veiculo { private String tipoCarga; private String altura; gets e sets... }
Carro.java
package entidades.subclasse; import javax.persistence.Entity; import javax.persistence.PrimaryKeyJoinColumn; @Entity @PrimaryKeyJoinColumn(name = "id", referencedColumnName = "id") public class Carro extends Veiculo { private String tamanhoPortamalas; private String qtdadePortas; gets e sets... }
Veiculo.java
package entidades.subclasse; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Inheritance; import javax.persistence.InheritanceType; @Entity @Inheritance(strategy = InheritanceType.JOINED) public class Veiculo { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id; private String chassi; private String placa; private String modelo; gets e sets... }
FlorServico.java
package servico; import org.hibernate.Session; import util.HibernateUtil; import entidades.simples.Rosa; import entidades.simples.Tulipa; public class FlorServico { public static void main(String[] args) { FlorServico p = new FlorServico(); p.criarRosa(); p.criarTulipa(); } private void criarTulipa() { Tulipa f = new Tulipa(); f.setCor("Branca"); Session session = HibernateUtil.getSessionFactory().openSession(); session.beginTransaction(); session.save(f); session.getTransaction().commit(); } private void criarRosa() { Rosa f = new Rosa(); f.setTamanhoEspinho("Grandes"); f.setCor("Vermelha"); Session session = HibernateUtil.getSessionFactory().openSession(); session.beginTransaction(); session.save(f); session.getTransaction().commit(); } }
PessoaServico.java
package servico; import java.util.Date; import org.hibernate.Session; import util.HibernateUtil; import entidades.classe.PessoaFisica; import entidades.classe.PessoaJuridica; public class PessoaServico { public static void main(String[] args) { PessoaServico p = new PessoaServico(); p.criarPessoaFisica(); p.criarPessoaJuridica(); } private void criarPessoaJuridica() { PessoaJuridica p = new PessoaJuridica(); p.setCnpj("123465"); p.setDataNascimento(new Date()); p.setNome("PJ 01"); p.setNomeFantasia("PJ Nome Fantasia 01"); Session session = HibernateUtil.getSessionFactory().openSession(); session.beginTransaction(); session.save(p); session.getTransaction().commit(); } private void criarPessoaFisica() { PessoaFisica p = new PessoaFisica(); p.setCpf("123465"); p.setDataNascimento(new Date()); p.setNome("PF 01"); Session session = HibernateUtil.getSessionFactory().openSession(); session.beginTransaction(); session.save(p); session.getTransaction().commit(); } }
VeiculoServico.java
package servico; import org.hibernate.Session; import util.HibernateUtil; import entidades.subclasse.Caminhao; import entidades.subclasse.Carro; public class VeiculoServico { public static void main(String[] args) { VeiculoServico p = new VeiculoServico(); p.criarCarro(); p.criarCaminhao(); } private void criarCaminhao() { Carro v = new Carro(); v.setChassi("WQERW131354WER"); v.setModelo("AUDI"); v.setPlaca("DHS8938"); v.setQtdadePortas("5"); v.setTamanhoPortamalas("30L"); Session session = HibernateUtil.getSessionFactory().openSession(); session.beginTransaction(); session.save(v); session.getTransaction().commit(); } private void criarCarro() { Caminhao v = new Caminhao(); v.setChassi("AASD987897ASD987"); v.setModelo("SCANIA"); v.setPlaca("HTR7848"); v.setAltura("5m"); v.setTipoCarga("Animal"); Session session = HibernateUtil.getSessionFactory().openSession(); session.beginTransaction(); session.save(v); session.getTransaction().commit(); } }
HibernateUtil.java
package util; import org.hibernate.SessionFactory; import org.hibernate.cfg.AnnotationConfiguration; public class HibernateUtil { private static final SessionFactory sessionFactory; static { try { // Criando a SessionFactory apartir no hibernate.cfg.xml sessionFactory = new AnnotationConfiguration().configure() .buildSessionFactory(); } catch (Throwable ex) { System.err.println("Não foi possivel criar a SessionFactory." + ex); throw new ExceptionInInitializerError(ex); } } public static SessionFactory getSessionFactory() { return sessionFactory; } }
23 de nov. de 2007
Curso Hibernate - Desafio para um fim de semana feliz
21 de nov. de 2007
Curso Hibernate - Aula 03
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <!-- Database connection settings --> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="connection.url">jdbc:mysql://localhost/hibernateQuerie</property> <property name="connection.username">root</property> <property name="connection.password">root</property> <property name="connection.pool_size">1</property> <!-- SQL dialect --> <property name="dialect">org.hibernate.dialect.MySQLDialect</property> <property name="show_sql">true</property> <property name="format_sql">true</property> <property name="hbm2ddl.auto">update</property> <mapping class="entidade.Aluno"/> <mapping class="entidade.Biblioteca"/> <mapping class="entidade.Curso"/> <mapping class="entidade.Endereco"/> <mapping class="entidade.Livro"/> <mapping class="entidade.Telefone"/> </session-factory> </hibernate-configuration>
Aluno.java
package entidade; import java.util.Date; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.Temporal; import javax.persistence.TemporalType; @Entity public class Aluno { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Integer id; private String nome; private Integer idade; @Temporal(TemporalType.DATE) private Date nascimento; @ManyToOne(fetch=FetchType.LAZY) @JoinColumn(name = "curso_id", referencedColumnName = "id") private Curso curso; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } public Curso getCurso() { return curso; } public void setCurso(Curso curso) { this.curso = curso; } public Integer getIdade() { return idade; } public void setIdade(Integer idade) { this.idade = idade; } public Date getNascimento() { return nascimento; } public void setNascimento(Date nascimento) { this.nascimento = nascimento; } @Override public String toString() { return "Aluno["+id+"]: "+ nome; } }
Curso.java
package entidade; import java.util.Collection; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.OneToMany; import org.hibernate.annotations.Cascade; import org.hibernate.annotations.CascadeType; @Entity public class Curso { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Integer id; private String descricao; private Integer duracao; @OneToMany(mappedBy = "curso") @Cascade(CascadeType.ALL) private Collectionalunos; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getDescricao() { return descricao; } public void setDescricao(String descricao) { this.descricao = descricao; } public Collection getAlunos() { return alunos; } public void setAlunos(Collection alunos) { this.alunos = alunos; } public Integer getDuracao() { return duracao; } public void setDuracao(Integer duracao) { this.duracao = duracao; } public String toString(){ return "Curso["+id+"]: "+descricao; } }
Biblioteca.java
package entidade; import java.util.Collection; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.OneToMany; import javax.persistence.OneToOne; import javax.persistence.Table; import org.hibernate.annotations.Cascade; import org.hibernate.annotations.CascadeType; @Entity @Table(name="biblioteca") public class Biblioteca { @Id @GeneratedValue(strategy=GenerationType.AUTO) private Integer id; @Column(name="nome", length=50) private String nome; @Column(name="cnpj", length=14) private String cnpj; @OneToOne(mappedBy="biblioteca") @Cascade(CascadeType.ALL) private Endereco endereco; @OneToMany(mappedBy="biblioteca") @Cascade(CascadeType.ALL) private Collectionlivros; @OneToMany(mappedBy="") @Cascade(CascadeType.ALL) private Collection telefone; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } public String getCnpj() { return cnpj; } public void setCnpj(String cnpj) { this.cnpj = cnpj; } public Endereco getEndereco() { return endereco; } public void setEndereco(Endereco endereco) { this.endereco = endereco; } public Collection getLivros() { return livros; } public void setLivros(Collection livros) { this.livros = livros; } public Collection getTelefone() { return telefone; } public void setTelefone(Collection telefone) { this.telefone = telefone; } }
Endereco.java
package entidade; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.OneToOne; import javax.persistence.Table; @Entity @Table(name="endereco") public class Endereco { @Id @GeneratedValue(strategy=GenerationType.AUTO) private Integer idEndereco; @Column(name="rua") private String rua; @Column(name="nro") private String nro; @OneToOne() @JoinColumn(name="biblioteca_id", referencedColumnName="id") private Biblioteca biblioteca; public Integer getIdEndereco() { return idEndereco; } public void setIdEndereco(Integer idEndereco) { this.idEndereco = idEndereco; } public String getRua() { return rua; } public void setRua(String rua) { this.rua = rua; } public String getNro() { return nro; } public void setNro(String nro) { this.nro = nro; } public Biblioteca getBiblioteca() { return biblioteca; } public void setBiblioteca(Biblioteca biblioteca) { this.biblioteca = biblioteca; } }
Telefone.java
package entidade; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.Table; @Entity @Table(name="telefone") public class Telefone { @Id @GeneratedValue(strategy=GenerationType.AUTO) @Column(name="id_telefone") private Integer idTelefone; @Column(name="ddd", length = 3) private Integer ddd; @Column(name="nroTelefone", length = 8) private Integer nroTelefone; @ManyToOne() @JoinColumn(name="biblioteca_id", referencedColumnName="id") private Biblioteca biblioteca; public Integer getIdTelefone() { return idTelefone; } public void setIdTelefone(Integer idTelefone) { this.idTelefone = idTelefone; } public Integer getDdd() { return ddd; } public void setDdd(Integer ddd) { this.ddd = ddd; } public Integer getNroTelefone() { return nroTelefone; } public void setNroTelefone(Integer nroTelefone) { this.nroTelefone = nroTelefone; } public Biblioteca getBiblioteca() { return biblioteca; } public void setBiblioteca(Biblioteca biblioteca) { this.biblioteca = biblioteca; } }
Livro.java
package entidade; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.Table; @Entity @Table(name="livro") public class Livro { @Id @GeneratedValue(strategy=GenerationType.AUTO) private Integer id; @Column(name="titulo") private String titulo; @Column(name="autor") private String autor; @Column(name="isbn") private Integer isbn; @ManyToOne() @JoinColumn(name="biblioteca_id", referencedColumnName="id") private Biblioteca biblioteca; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getTitulo() { return titulo; } public void setTitulo(String titulo) { this.titulo = titulo; } public String getAutor() { return autor; } public void setAutor(String autor) { this.autor = autor; } public Integer getIsbn() { return isbn; } public void setIsbn(Integer isbn) { this.isbn = isbn; } public Biblioteca getBiblioteca() { return biblioteca; } public void setBiblioteca(Biblioteca biblioteca) { this.biblioteca = biblioteca; } }
AlunoServico.java
package servico; import java.util.ArrayList; import java.util.Date; import java.util.List; import org.hibernate.Criteria; import org.hibernate.Session; import org.hibernate.criterion.Order; import org.hibernate.criterion.Restrictions; import util.HibernateUtil; import entidade.Aluno; import entidade.Curso; public class AlunoServico { private Session session; public static void main(String[] args) { AlunoServico servico = new AlunoServico(); servico.criar(); servico.consultas(); } private void consultas() { iniciandoSessao(); Criteria c = session.createCriteria(Curso.class); for (Curso elem : (List) c.list()) { System.out.println(elem); } c = session.createCriteria(Aluno.class); c.add(Restrictions.like("nome", "Tia%")); c.add(Restrictions.between("idade", 10, 34)); for (Aluno elem : (List ) c.list()) { System.out.println(elem); } c = session.createCriteria(Aluno.class); c.add(Restrictions.like("nome", "Fla%")); c.add( Restrictions.or( Restrictions.eq("idade", 31), Restrictions.isNull("idade") ) ); for (Aluno elem : (List ) c.list()) { System.out.println(elem); } c = session.createCriteria(Aluno.class); c.add( Restrictions.in("nome", new String[] { "Tiago Ramos", "Flavia" }) ); c.add( Restrictions.disjunction() .add(Restrictions.isNull("idade")) .add(Restrictions.eq("idade", 30)) .add(Restrictions.eq("idade", 31)) .add(Restrictions.eq("idade", 34)) ); for (Aluno elem : (List ) c.list()) { System.out.println(elem); } c = session.createCriteria(Aluno.class); c.add(Restrictions.like("nome", "F%")); c.addOrder(Order.asc("nome")); c.addOrder(Order.desc("idade")); c.setMaxResults(50); for (Aluno elem : (List ) c.list()) { System.out.println(elem); } } private void criar() { Aluno a1 = new Aluno(); a1.setIdade(34); a1.setNascimento(new Date()); a1.setNome("Tiago Ramos"); Aluno a2 = new Aluno(); a2.setIdade(31); a2.setNascimento(new Date()); a2.setNome("Flavia Nunes"); List alunos = new ArrayList (); alunos.add(a1); alunos.add(a2); Curso c = new Curso(); c.setDescricao("Curso 01"); c.setDuracao(3); c.setAlunos(alunos); a1.setCurso(c); a2.setCurso(c); iniciandoSessao(); session.save(c); session.getTransaction().commit(); } private void iniciandoSessao() { session = HibernateUtil.getSessionFactory().openSession(); session.beginTransaction(); } }
CursoServico.java
package servico; import java.util.ArrayList; import java.util.Date; import java.util.List; import org.hibernate.Session; import util.HibernateUtil; import entidade.Aluno; import entidade.Curso; public class CursoServico { private Session session; public static void main(String[] args) { CursoServico servico = new CursoServico(); servico.criar(); servico.consultas(); } private void consultas() { iniciandoSessao(); Listalunos = session.createQuery("from Aluno where idade > ?") .setInteger(0, 15) .list(); for (Aluno elem : alunos) { System.out.println(elem); } alunos = session.createQuery("from Aluno where nome = ? order by nome") .setString(0, "Flavia Nunes") .list(); for (Aluno elem : alunos) { System.out.println(elem); } Aluno aluno = (Aluno) session.createQuery("from Aluno as a where a = ?") .setEntity(0, alunos.get(0)) .uniqueResult(); System.out.println(aluno); } private void criar() { Aluno a1 = new Aluno(); a1.setIdade(34); a1.setNascimento(new Date()); a1.setNome("Tiago Ramos"); Aluno a2 = new Aluno(); a2.setIdade(31); a2.setNascimento(new Date()); a2.setNome("Flavia Nunes"); List alunos = new ArrayList (); alunos.add(a1); alunos.add(a2); Curso c = new Curso(); c.setDescricao("Curso 01"); c.setDuracao(3); c.setAlunos(alunos); a1.setCurso(c); a2.setCurso(c); iniciandoSessao(); session.save(c); session.getTransaction().commit(); } private void iniciandoSessao() { session = HibernateUtil.getSessionFactory().openSession(); session.beginTransaction(); } }
BibliotecaServico.java
package servico; import java.util.ArrayList; import java.util.List; import org.hibernate.Criteria; import org.hibernate.Session; import org.hibernate.criterion.Order; import org.hibernate.criterion.Restrictions; import util.HibernateUtil; import entidade.Biblioteca; import entidade.Endereco; import entidade.Livro; import entidade.Telefone; public class BibliotecaServico { public static void main(String[] args) { BibliotecaServico servico = new BibliotecaServico(); servico.criar(); servico.cadastrarLivros(); servico.listar(); } private void listar() { Session s = HibernateUtil.getSessionFactory().openSession(); s.beginTransaction(); Criteria c = s.createCriteria(Livro.class); c.addOrder(Order.asc("titulo")); for(Livro elem : (List) c.list()){ System.out.println(elem.getTitulo()); } s.getTransaction().commit(); } private void cadastrarLivros() { Session s = HibernateUtil.getSessionFactory().openSession(); s.beginTransaction(); // Consulta da biblioteca Criteria c = s.createCriteria(Biblioteca.class); c.add(Restrictions.eq("nome", "Biblioteca do Renan")); // Recupera a biblioteca Biblioteca b = (Biblioteca) c.uniqueResult(); Livro livro1 = new Livro(); livro1.setAutor("Autor 1"); livro1.setIsbn(123456); livro1.setTitulo("titulo 1"); livro1.setBiblioteca(b); Livro livro2 = new Livro(); livro2.setAutor("Autor 2"); livro2.setIsbn(123456); livro2.setTitulo("titulo 2"); livro2.setBiblioteca(b); // Adicionando livros na coleção ArrayList livros = new ArrayList (); livros.add(livro1); livros.add(livro2); b.setLivros(livros); s.save(b); s.getTransaction().commit(); } private void criar() { Session s = HibernateUtil.getSessionFactory().openSession(); s.beginTransaction(); Endereco e = new Endereco(); e.setNro("123"); e.setRua("Minha Rua"); Telefone t = new Telefone(); t.setDdd(061); t.setNroTelefone(35979898); Biblioteca b = new Biblioteca(); b.setCnpj("123456"); b.setNome("Biblioteca Renan"); b.setEndereco(e); b.setTelefone(new ArrayList ()); b.getTelefone().add(t); e.setBiblioteca(b); s.save(b); s.getTransaction().commit(); } }
HibernateUtil.java
package util; import org.hibernate.SessionFactory; import org.hibernate.cfg.AnnotationConfiguration; public class HibernateUtil { private static final SessionFactory sessionFactory; static { try { // Criando a SessionFactory apartir no hibernate.cfg.xml sessionFactory = new AnnotationConfiguration().configure() .buildSessionFactory(); } catch (Throwable ex) { System.err.println("Não foi possivel criar a SessionFactory." + ex); throw new ExceptionInInitializerError(ex); } } public static SessionFactory getSessionFactory() { return sessionFactory; } }
19 de nov. de 2007
Curso Hibernate - Aula 02
import org.hibernate.SessionFactory; import org.hibernate.cfg.AnnotationConfiguration; public class HibernateUtil { private static final SessionFactory sessionFactory; static { try { // Criando a SessionFactory apartir no hibernate.cfg.xml sessionFactory = new AnnotationConfiguration().configure() .buildSessionFactory(); } catch (Throwable ex) { System.err.println("Não foi possivel criar a SessionFactory." + ex); throw new ExceptionInInitializerError(ex); } } public static SessionFactory getSessionFactory() { return sessionFactory; } }
Usuario.java
import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; @Entity public class Usuario { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Integer id; private String login; private String senha; private String nome; private String email; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getLogin() { return login; } public void setLogin(String login) { this.login = login; } public String getSenha() { return senha; } public void setSenha(String senha) { this.senha = senha; } public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } @Override public String toString() { return "Usuario["+this.getId()+"]: Nome "+this.getNome(); } }
UsuarioSevico.java
import org.hibernate.Session; public class UsuarioServico { private Session session; public static void main(String[] args) { UsuarioServico servico = new UsuarioServico(); System.out.println("----------------------------"); System.out.println("Criar um objeto Persistente"); System.out.println("----------------------------"); servico.criar(); System.out.println("----------------------------"); System.out.println("Obter objeto Persistente"); System.out.println("----------------------------"); servico.obter(); System.out.println("----------------------------"); System.out.println("Atualizar objeto persistente"); System.out.println("----------------------------"); servico.atualizar(); System.out.println("----------------------------"); System.out.println("Tornar transisnte um objeto persistente"); System.out.println("----------------------------"); servico.tornarTransiente(); } private void criar() { // Objeto transiente Usuario u = new Usuario(); u.setEmail("email"); u.setLogin("login"); u.setNome("nome"); u.setSenha("senha"); iniciandoSessao(); // Objeto sendo persistido session.save(u); // Objeto persistido session.getTransaction().commit(); // Objeto transiente } private void obter() { iniciandoSessao(); // Objeto transiente Usuario u = (Usuario) session.load(Usuario.class, 1); // Objeto persistente System.out.println("Usuario " + u.toString()); session.getTransaction().commit(); // Objeto transiente } private void atualizar() { iniciandoSessao(); // Objeto transiente Usuario u = (Usuario) session.get(Usuario.class, 2); // Objeto persistente System.out.println("Usuario " + u.toString()); u.setNome("novo nome"); session.getTransaction().commit(); // Objeto transiente } private void tornarTransiente() { iniciandoSessao(); // Objeto transiente Usuario u = (Usuario) session.get(Usuario.class, 3); // Objeto persistente if (u != null) { System.out.println("Usuario " + u.toString()); session.delete(u); } session.getTransaction().commit(); // Objeto transiente } private void iniciandoSessao() { session = HibernateUtil.getSessionFactory().openSession(); session.beginTransaction(); } }
hibernate.cfg.xml
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <!-- Database connection settings --> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="connection.url">jdbc:mysql://localhost/hibernateCicloDeVida</property> <property name="connection.username">root</property> <property name="connection.password">root</property> <property name="connection.pool_size">1</property> <!-- SQL dialect --> <property name="dialect">org.hibernate.dialect.MySQLDialect</property> <property name="show_sql">true</property> <property name="hbm2ddl.auto">update</property> <mapping class="Usuario"/> </session-factory> </hibernate-configuration>
Fontes Associações: ROOT - lib - libs - src - hibernate.cfg.xml - entidade - Endereco.java - Usuario.java - Veiculo.java - servico - UsuarioServico.java - VeiculoServico.java - util - HibernateUtil.java hibernate.cfg.xml
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <!-- Database connection settings --> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="connection.url">jdbc:mysql://localhost/hibernateCicloDeVida</property> <property name="connection.username">root</property> <property name="connection.password">root</property> <property name="connection.pool_size">1</property> <!-- SQL dialect --> <property name="dialect">org.hibernate.dialect.MySQLDialect</property> <property name="show_sql">true</property> <property name="hbm2ddl.auto">update</property> <mapping class="entidade.Usuario"/> <mapping class="entidade.Endereco"/> <mapping class="entidade.Veiculo"/> </session-factory> </hibernate-configuration>
Entidades: Usuario.java
package entidade; import java.util.List; import java.util.Set; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.JoinTable; import javax.persistence.ManyToMany; import javax.persistence.OneToMany; import org.hibernate.annotations.Cascade; import org.hibernate.annotations.CascadeType; @Entity public class Usuario { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Integer id; private String login; private String senha; private String nome; private String email; @OneToMany(mappedBy = "usuario") @Cascade(CascadeType.ALL) private Setenderecos; @ManyToMany(fetch = FetchType.LAZY) @JoinTable(name = "aluguel", joinColumns = { @JoinColumn(name = "usuario_id", referencedColumnName = "id") }, inverseJoinColumns = { @JoinColumn(name = "veiculo_id", referencedColumnName = "id") }) private List veiculos; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getLogin() { return login; } public void setLogin(String login) { this.login = login; } public String getSenha() { return senha; } public void setSenha(String senha) { this.senha = senha; } public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } @Override public String toString() { return "Usuario[" + this.getId() + "]: Nome " + this.getNome(); } public Set getEnderecos() { return enderecos; } public void setEnderecos(Set enderecos) { this.enderecos = enderecos; } public List getVeiculos() { return veiculos; } public void setVeiculos(List veiculos) { this.veiculos = veiculos; } }
Endereco.java
package entidade; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; @Entity public class Endereco { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Integer id; private String rua; private Integer numero; private String bairro; private String cidade; private String uf; private String cep; @ManyToOne() @JoinColumn(name = "usuario_id", referencedColumnName = "id", insertable = true, updatable = true) private Usuario usuario; public Usuario getUsuario() { return usuario; } public void setUsuario(Usuario usuario) { this.usuario = usuario; } public String getRua() { return rua; } public void setRua(String rua) { this.rua = rua; } public Integer getNumero() { return numero; } public void setNumero(Integer numero) { this.numero = numero; } public String getBairro() { return bairro; } public void setBairro(String bairro) { this.bairro = bairro; } public String getCidade() { return cidade; } public void setCidade(String cidade) { this.cidade = cidade; } public String getUf() { return uf; } public void setUf(String uf) { this.uf = uf; } public String getCep() { return cep; } public void setCep(String cep) { this.cep = cep; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } }
Veiculo.java
package entidade; import java.util.List; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.JoinTable; import javax.persistence.ManyToMany; @Entity public class Veiculo { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Integer id; @Column() private String modelo; @Column() private String cor; @Column() private Integer ano; @ManyToMany(fetch = FetchType.LAZY) @JoinTable(name = "aluguel", joinColumns = { @JoinColumn(name = "veiculo_id", referencedColumnName = "id") }, inverseJoinColumns = { @JoinColumn(name = "usuario_id", referencedColumnName = "id") }) private Listusuarios; public List getUsuarios() { return usuarios; } public void setUsuarios(List usuarios) { this.usuarios = usuarios; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getModelo() { return modelo; } public void setModelo(String modelo) { this.modelo = modelo; } public String getCor() { return cor; } public void setCor(String cor) { this.cor = cor; } public Integer getAno() { return ano; } public void setAno(Integer ano) { this.ano = ano; } }
Servico: UsuarioServico.java
package servico; import java.util.HashSet; import org.hibernate.Session; import util.HibernateUtil; import entidade.Endereco; import entidade.Usuario; public class UsuarioServico { private Session session; public static void main(String[] args) { UsuarioServico servico = new UsuarioServico(); System.out.println("-------------------------------"); System.out.println("Criar um usuario e seu endereco"); System.out.println("-------------------------------"); servico.criar(); } private void criar() { Usuario u1 = new Usuario(); u1.setEmail("email"); u1.setLogin("login"); u1.setNome("nome"); u1.setSenha("senha"); u1.setEnderecos(new HashSet()); Endereco e1 = new Endereco(); e1.setBairro("bairro"); e1.setCep("cep"); e1.setCidade("cidade"); e1.setNumero(123); e1.setRua("rua"); e1.setUf("uf"); e1.setUsuario(u1); u1.getEnderecos().add(e1); Usuario u2 = new Usuario(); u2.setEmail("email"); u2.setLogin("login"); u2.setNome("nome"); u2.setSenha("senha"); u2.setEnderecos(new HashSet ()); Endereco e2 = new Endereco(); e2.setBairro("bairro"); e2.setCep("cep"); e2.setCidade("cidade"); e2.setNumero(123); e2.setRua("rua"); e2.setUf("uf"); e2.setUsuario(u2); u2.getEnderecos().add(e2); iniciandoSessao(); session.save(u1); session.save(u2); session.getTransaction().commit(); } private void iniciandoSessao() { session = HibernateUtil.getSessionFactory().openSession(); session.beginTransaction(); } }
VeiculoServico.java
package servico; import org.hibernate.Session; import util.HibernateUtil; import entidade.Veiculo; public class VeiculoServico { private Session session; public static void main(String[] args) { VeiculoServico servico = new VeiculoServico(); System.out.println("-------------------------------"); System.out.println("Criar um veiculo"); System.out.println("-------------------------------"); servico.criar(); } private void criar() { Veiculo v1 = new Veiculo(); v1.setAno(2005); v1.setCor("cor 1"); v1.setModelo("modelo 1"); Veiculo v2 = new Veiculo(); v2.setAno(2007); v2.setCor("cor 2"); v2.setModelo("modelo 2"); iniciandoSessao(); session.save(v1); session.save(v2); session.getTransaction().commit(); } private void iniciandoSessao() { session = HibernateUtil.getSessionFactory().openSession(); session.beginTransaction(); } }