Como verificar se um Objeto já foi Persistido no meu banco antes de persistir

Possuo uma classe Fabricante que é persistido e cadastro um Carro referente aquele Fabricante, e está tudo OK. Vejo que se cadastrar um Fabricante vou ter problema devido a duplicação de Objeto. Como eu faço para que quando eu for salvar um Objeto já possa ser verificado se existe.

OBS: De preferência ignorando maiuscula e minuscula porque é Case Sensitive.

Segue meu codigo.

Modelo
public class Fabricante implements Serializable{

	private static final long serialVersionUID = 1L;
	
	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	private Long codigo;
	
	@NotNull
	@NotBlank
	@Size(max= 30,min = 4) //tamanho de caractere
	@Column(nullable = false, length=30) //coluna não pode ser null e o tamanho da coluna é 20
	private String nome;

DAO
public class FabricanteDAO implements Serializable {

	private static final long serialVersionUID = 1L;

	@Inject
	private EntityManager manager;

	
	@Transactional
	public void salvar(Fabricante fabricante) {
		manager.merge(fabricante);
	}

Service

public class FabricanteService implements Serializable {

	private static final long serialVersionUID = 1L;

	@Inject
	private FabricanteDAO fabricanteDAO;

	public void salvar(Fabricante fabricante) throws NegocioException {
		try {
			this.fabricanteDAO.salvar(fabricante);
		} catch (Exception e) {
			throw new NegocioException("Não foi possível salvar o Fabricante");
		}
	}

Controller

@Named
@ViewScoped
public class CadastroFabricanteBean implements Serializable {


	private static final long serialVersionUID = 1L;

	@Inject
	private FabricanteService cadastroFabricanteService;
	
	@Getter
	@Setter
	private Fabricante fabricante;
	
	public void inicializar() {
		System.out.println("iniciando Fabricante..");
		if (this.fabricante == null) {
			limpar();
		}
	}
	
	public void salvar()throws NegocioException {
		try {
			this.cadastroFabricanteService.salvar(fabricante);
			Messages.addGlobalInfo("Fabricante salvo com sucesso!");
			limpar();
		} catch (NegocioException e) {
			Messages.addGlobalError(e.getMessage());
		}
	}