Converter String em HTML no momento de salvar

Boa tarde.

Preciso converter String que contenham acentuações em HTML no momento de salvar no banco para que quando o outro sistema for fazer uso destes dados não tenha problemas de acentuação.
Ou seja, recebo uma string, verifico se ela tem um ç ou é ou ã e assim por diante e converto para html.
Preciso fazer o mesmo no momento de exibir na tela, pega o trecho da string em html e converter para String correspondente.

Eu criei um método para fazer isso mas ouvi dizer que existe uma biblioteca que faça isso sem ter que usar tantos replace.

Abaixo meu código…

public String ConvertString(String value) {

		Pattern regra = Pattern.compile("[\\p{Alnum} ]");
		String saida = "";
		for (int i = 0; i < value.length(); i++) {
			Matcher mt = regra.matcher(Character.toString(value.charAt(i)));
			if (mt.matches()) {
				saida += mt.group();
			} else {
				if (!(Character.isLetter(value.charAt(i)))) {
					continue;
				}
				String aux = Character.toString(value.charAt(i));
				boolean upperCaseFlag = false;
				if (Character.isUpperCase(aux.charAt(0))) {
					upperCaseFlag = true;
					aux = aux.toLowerCase();
				}
				aux = aux.replace("&agrave","à");
				aux = aux.replace("&egrave","è");
				aux = aux.replace("&igrave","ì");
				aux = aux.replace("&ograve","ò");
				aux = aux.replace("&ugrave","ù");
				aux = aux.replace("&aacute","á");
				aux = aux.replace("&eacute","é");
				aux = aux.replace("&iacute","í");
				aux = aux.replace("&oacute","ó");
				aux = aux.replace("&uacute","ú");
				aux = aux.replace("&acirc","â");
				aux = aux.replace("&ecirc","ê");
				aux = aux.replace("&icirc","î");
				aux = aux.replace("&ocirc","ô");
				aux = aux.replace("&ucirc","û");
				aux = aux.replace("&Atilde","Ã");
				aux = aux.replace("&Otilde","Õ");
				aux = aux.replace("&Auml","Ä");
				aux = aux.replace("&Euml","Ë");
				aux = aux.replace("&Iuml","Ï");
				aux = aux.replace("&Ouml","Ö");
				aux = aux.replace("&Uuml","Ü");
				aux = aux.replace("&Agrave","À");
				aux = aux.replace("&Egrave","È");
				aux = aux.replace("&Igrave","Ì");
				aux = aux.replace("&Ograve","Ò");
				aux = aux.replace("&Ugrave","Ù");
				aux = aux.replace("&Aacute","Á");
				aux = aux.replace("&Eacute","É");
				aux = aux.replace("&Iacute","Í");
				aux = aux.replace("&Oacute","Ó");
				aux = aux.replace("&Uacute","Ú");
				aux = aux.replace("&Acirc","Â");
				aux = aux.replace("&Ecirc","Ê");
				aux = aux.replace("&Icirc","Î");
				aux = aux.replace("&Ocirc","Ô");
				aux = aux.replace("&Ucirc","Û");
				aux = aux.replace("&Atilde","Ã");
				aux = aux.replace("&Otilde","Õ");
				aux = aux.replace("&ccedil","ç");
				aux = aux.replace("&Ccedil","Ç");
				if (upperCaseFlag) {
					aux = aux.toUpperCase();
				}
				saida += aux;
			}
		}
	return saida;
	}

Como faria isso?

Obrigado!