20 de dez. de 2007

Quem quer dinheiro???

A info divulgou agora em Dezembro uma pesquisa um tanto interessante, com dados da Manager Assessoria em Recursos Humanos. Eu acho que você merece um aumento! Confira aqui

12 de dez. de 2007

Curso Struts - Aula 03

tiles-defs.xml
<?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

Para essa nova aula precisamos de uma nova biblioteca: struts-extras-1.3.8.jar br.com.livrariaweb.entidades.Usuario
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 sets
br.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 List listar() {
  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();
 }
}
br.com.livrariaweb.util.HibernateUtil
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=salvar
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="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

LivroAction.java
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();
 List l = servico.listar();
 request.setAttribute("livros", l);
 return mapping.findForward("listar");
}
}
LivroAction.java
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 List listar() {
 Session s = HibernateUtil.getSessionFactory().openSession();
 s.beginTransaction();
 List l = s.createCriteria(Livro.class).list();
 s.getTransaction().commit();
 s.close();
 return l;
}
}
HibernateUtil.java
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

> Faça uma classe de serviço que persista, recupere e atualize dados de pessoas para um escritório de advocacia. O escritório é composto por clientes, advogados e funcionários diversos. > Toda pessoa possue nome, cpf, telefone e endereço > Clientes possuem registros de atendimentos > Funcionários possuem número da carteira de trabalho, e registros de horário > Advogados possuem número da OAB e horários de atendimento 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/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 List horarios;
        
        // 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 List horarios;

        // 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 List atendimentos;
    
        //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);
  List advogados = 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

ROOT   lib     antlr-2.7.6.jar     cglib-nodep-2.1_3.jar     commons-beanutils.jar     commons-collections.jar     commons-dbcp.jar     commons-logging.jar     dom4j-1.6.1.jar     ejb3-persistence.jar     hibernate3.jar     hibernate-annotations.jar     hibernate-commons-annotations.jar     jta.jar     mysql-connector-java-5.0.7-bin.jar   src     hibernate.cfg.xml     entidades       classe         Pessoa.java         PessoaFisica.java         PessoaJuridica.java       simples         Flor.java         Rosa.java         Tulipa.java       subclasse         Caminhao.java         Carro.java         Veiculo.java     servico       FlorServico.java       PessoaServico.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/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

Problema: Existem vários evento e pessoas. Cada pessoa pode participar de vários eventos e a mesma pode ter vários emails. 1. Realize o mapeamentos. 2. Crie uma classe de servico para cadastrar pessoas com seus emails 3. Crie uma classe de servico para evento onde você pode cadastrar eventos e também as pessoas que serao participantes. Segue abaixo o esquema para entender melhor: Obs: Coloco o resultado na segunda pela manhã.

21 de nov. de 2007

Curso Hibernate - Aula 03

Ainda hoje coloco um desafio para ser feito até na Segunda-Feira (26/11/07) Bibliotecas utilizadas: antlr-2.7.6 cglib-nodep-2.1_3.jar commons-beanutils.jar commons-collections.jar commons-dbcp.jar commons-logging.jar dom4j-1.6.1.jar ejb3-persistence.jar hibernate3.jar hibernate-annotations.jar hibernate-commons-annotations.jar jta.jar mysql-connector-java-5.0.7-bin.jar Fontes do hibernateQuerie: ROOT - lib   - libs - src   - hibernate.cfg.xml   - entidade     - Aluno.java     - Curso.java   - servico     - AlunoServico.java     - CursoServico.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/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 Collection alunos;

 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 Collection livros;

 @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();
  List alunos = 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

Bibliotecas utilizadas: cglib-nodep-2.1_3.jar commons-beanutils.jar commons-collections.jar commons-dbcp.jar commons-logging.jar dom4j-1.6.1.jar ejb3-persistence.jar hibernate3.jar hibernate-annotations.jar hibernate-commons-annotations.jar jta.jar mysql-connector-java-5.0.7-bin.jar Fontes Ciclo de Vida: ROOT  - lib   - libs  - src   - Usuario.java   - UsuarioServico.java   - HibernateUtil.java   - hibernate.cfg.xml HibernateUtil.java
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 Set enderecos;

 @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 List usuarios;

 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();
 }

}
Google