Cascade persistindo todos os objetos

Segue a classe com o metodo main()

[code]package br.com.testes;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

import br.com.bean.Departamento;
import br.com.bean.Estado;
import br.com.bean.Funcionario;
import br.com.bean.Usuario;

public class Testes {

/**
 * @param args
 * @throws ParseException 
 * @throws IOException 
 */

public static void main(String[] args) throws ParseException, IOException {
	
	EntityManagerFactory fac = Persistence.createEntityManagerFactory("MeuBanco");
	EntityManager manager = fac.createEntityManager();
	
	manager.getTransaction().begin();
	
	/*Funcionario f1 = new Funcionario();
	f1.setNome("Daniel");
	Funcionario f2 = new Funcionario();
	f2.setNome("Rafael");
	Funcionario f3 = new Funcionario();
	f3.setNome("Natanael");
	
	Departamento dep = new Departamento();
	dep.getFuncionarios().add(f1);
	dep.getFuncionarios().add(f2);
	dep.getFuncionarios().add(f3);
	dep.setSetor("Cozinha");
	
	manager.persist(dep);*/
	
	Usuario user = new Usuario();
	user.setEmail("fulano@mail.com");
	
	Estado est = new Estado();
	est.setNome("euricon");
	
	[b]manager.persist(user);[/b]
    
    manager.getTransaction().commit();
    manager.close();
    fac.close();
	
}

}[/code]

persistence.xml

[code]<?xml version="1.0" encoding="UTF-8"?>

<persistence-unit name="MeuBanco" transaction-type="RESOURCE_LOCAL">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <class>br.com.bean.Usuario</class>
    <class>br.com.bean.Estado</class>

br.com.bean.Departamento
br.com.bean.Funcionario

false










[/code]

quando eu persisto o usuario la em cima… eu persisto todas as outras classes… mas pq?
Eu utilizei um cascade sim… mas foi em outra tabela que nao tem nada a ver…

no caso essa:

[code]package br.com.bean;

import java.util.ArrayList;
import java.util.Collection;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.OneToMany;

import org.hibernate.annotations.Cascade;

@Entity
public class Departamento {

@Id @GeneratedValue
private Long id;
private String setor;
[b]@OneToMany(cascade=CascadeType.PERSIST)[/b]
@JoinTable(name="Departamento_Funcionario",
	joinColumns=@JoinColumn(name="dep_id"),
	inverseJoinColumns=@JoinColumn(name="func_id"))
private Collection<Funcionario> funcionarios;

public Departamento() {
	this.funcionarios = new ArrayList<Funcionario>();
}

public Long getId() {
	return id;
}
public void setId(Long id) {
	this.id = id;
}
public String getSetor() {
	return setor;
}
public void setSetor(String setor) {
	this.setor = setor;
}
public Collection<Funcionario> getFuncionarios() {
	return funcionarios;
}
public void setFuncionarios(Collection<Funcionario> funcionarios) {
	this.funcionarios = funcionarios;
}

}
[/code]

Mas nao consegui entender o que uma tem a ver com a outra?


Outra duvida:

[code]public class Testes {

/**
 * @param args
 * @throws ParseException 
 * @throws IOException 
 */

public static void main(String[] args) throws ParseException, IOException {
	
	EntityManagerFactory fac = Persistence.createEntityManagerFactory("MeuBanco");
	EntityManager manager = fac.createEntityManager();
	
	manager.getTransaction().begin();

	Contato c1 = manager.find(Contato.class, 1);
	c1.setNome("Nome Novo");
    
    manager.getTransaction().commit();
    manager.close();
    fac.close();

[/code]

no banco nao era pra ficar “nome novo”???