Dúvida ao remover registro

Uma dúvida, para eu remover o objeto do banco, seria melhor eu fazer uma recuperação através do find, sendo que o find busca pela chave primária, não teria como usar o find sem ser pela chave??? o que eu queria evitar é usar 2 metódos para excluir um registro, sei q poderia colocar em 1 mas pela organização coloquei em 2 como abaixo.

a chamada ao método

Recupera

[code]public Cadastro recuperaRegistro(String nome)
{
Cadastro cadastro = new Cadastro();
factory = Persistence.createEntityManagerFactory("exfuncionarios");
manager = factory.createEntityManager();
System.out.print("Recuperando registro… ");
EntityTransaction tx = manager.getTransaction();
tx.begin();
try
{
Query query = manager.createNamedQuery("Cadastro.recupera");
query.setParameter("nome",nome);
cadastro = (Cadastro) query.getSingleResult();

			tx.commit();
			manager.close();
			factory.close();
			
			return cadastro;
		} 
		catch (RuntimeException e) 
		{ 
			e.printStackTrace();
			tx.rollback();
			return cadastro;
		}
	}[/code]

excluir

[code]public void removerRegistro(Cadastro cadastro)
{
factory = Persistence.createEntityManagerFactory("exfuncionarios");
manager = factory.createEntityManager();
System.out.print("Excluindo registro… ");
EntityTransaction tx = manager.getTransaction();
tx.begin();
try
{
// Cadastro cad = manager.find(Cadastro.class,2);
// se fosse usar o find aki é só pela chave primária

			manager.remove(cadastro);

			tx.commit();
		
			System.out.println("OK");
			manager.close();
			factory.close();
		}
		catch (RuntimeException e) 
		{
			e.printStackTrace();
			tx.rollback();
		}
	}[/code]

cara…o delete() recebe um objeto mapeado…pra isso vc precisa popula-lo antes de executar o método, eu sempre fiz o load() antes via PK mesmo…o q vc pode tentar fazer eh criar uma nova instancia do objeto q vc vai apagar, apenas com a PK e tentar executar o delete(), mas acho q nao funciona nao…

to usando JPA, acho q não tem o método delete(), tem o remove() mas mesmo eu jogando um objeto populado ele não vai… só se eu recuperasse pelo método find

eh, falei do delete() e load() pq estou mais acostumado com o hibernate…hehehehe…mas acho q tem q carregar o objeto antes de apagar mesmo…