Como criar uma classe AbstractBO?

Olá pessoal,

Estou montando um sistema o qual possui uma classe do tipo BO para cada Entity Bean correspondente tal qual:

public class PaisBO {
	private static PaisBO me;

	private PaisBO() {
	}

	private static synchronized void loadInstance() {
		if (me == null) {
			me = new PaisBO();
		}
	}

	public static PaisBO getInstance() {
		if (me == null) {
			loadInstance();
		}
		return me;
	}

	public void insert(Pais p) {
		if (p.getNome() == null || p.getNome().equals("")) {
			System.out.println("Nome inválido!");
		}
		if (p.getSigla() == null || p.getSigla().equals("")	|| p.getSigla().length() > 2) {
			System.out.println("Sigla inválida!");
		}

		DAO<Pais> dao = (DAO<Pais>) new DAOFactoryImpl().getDao(Pais.class);
		dao.insert(p);
		dao.commitOperation(true);
	}
//public void update e delete
}

O código acima se torna bastante repetitivo (com exceção das validações) para cada classe BO.
Gostaria de saber como fazer uma classe AbstractBO de tal forma que todas classes BO herdassem dela tornando o código mais limpo e menos repetitivo. Exemplo:

public class PaisBO extends AbstractBO {
	@override
	public void insert(Pais e) {
		if (e.getNome() == null || e.getNome().equals("")) {
			System.out.println("Nome inválido!");
		}
		if (e.getSigla() == null || e.getSigla().equals("")	|| e.getSigla().length() > 2) {
			System.out.println("Sigla inválida!");
		}

		super.insert(e);
	}
//public void update e delete
}
public class AbstractBO {
	private static AbstractBO me;

	protected AbstractBO() {
	}

	private static synchronized void loadInstance() {
		if (me == null) {
			me = new AbstractBO();
		}
	}

	public static AbstractBO getInstance() {
		if (me == null) {
			loadInstance();
		}
		return me;
	}

	public void insert(T<? extends AbstractEntity> entity) {
		DAO<T> dao = (DAO<T>) new DAOFactoryImpl().getDao(entity.getClass());
		dao.insert(entity);
		dao.commitOperation(true);
	}
//public void update e delete
}

Obs.: Todas minhas classes Entity Bean (tal qual Pais) herdam de AbstractEntity.

Enfim, tentei usar generics mas me parece estranho realizar o seguinte exemplo de implementação:

Pais p = new Pais();
p.setSigla("BR"); 
p.setNome("Brasil"); 
PaisBO<Pais>.getInstance().insert(p);

O que vocês acham? Há uma forma mais Design Pattern de se fazer isso? Como seria? Ou minha idéia sobre o assunto está incorreta?

Já fazem mais de um ano que não programo em Java e parece que desaprendi muitas coisas…

Desde já agradeço a compreensão,

Rafael