Inserir no BD (JSF+Hibernate)

Olá pessoal, bom, eu sou bem inciante em JSF e Hibernate e minha dúvida deve ser até algo bem simples, mas que eu não sei nem como resolver.
Bom, eu estou usando o Exadel Studio e modelei algumas classes para representar meu banco de dados, elas contem apenas os atributos necessário e os metodos getter e setter. Depois eu adicionei a capacidade do hibernate ao projeto usando "object to schema" e criei o arquivo DDL para a criação do BD. Até ai tudo bem. Após fazer isso eu criei as classes DAO que o Exadel gera para mim e usando elas criei um Managed Bean. Vou colocar o exemplo de uma dessas classes:

Idiomas.java

public class Idiomas {	
	private String nome;
	/** auto generated
	 * @es_generated
	 */
	private Integer id;	
	
	public String getNome() {
		return nome;
	}
	
	public void setNome(String nome) {
		this.nome = nome;
	}

	/** auto generated
	 * @es_generated
	 */
	public Integer getId() {
		return this.id;
	}

	/** auto generated
	 * @es_generated
	 */
	public void setId(Integer value) {
		this.id = value;
	}	
}

IdiomasDAOImpl.java

import org.hibernate.SessionFactory;
import org.hibernate.Session;
import java.util.List;
import org.hibernate.Criteria;
import dominio.Idiomas;
import java.util.Iterator;
import org.hibernate.criterion.Restrictions;
import org.hibernate.criterion.Order;
import org.hibernate.LockMode;

public class IdiomasDAOImpl implements IdiomasDAO {

	/** auto generated
	 * @es_generated
	 */
	SessionFactory sessionFactory = null;

	/** auto generated
	 * @es_generated
	 */
	public void setSessionFactory(SessionFactory value) {
		this.sessionFactory = value;
	}

	/** auto generated
	 * @es_generated
	 */
	private SessionFactory getSessionFactory() {
		return this.sessionFactory;
	}

	/** auto generated
	 * @es_generated
	 */
	public Session getSession() {
		return getSessionFactory().getCurrentSession();
	}

	/** auto generated
	 * @es_generated
	 */
	public List getAll() {
		List values = null;
		Session session = getSession();
		Criteria allValues = session.createCriteria(Idiomas.class);
		values = allValues.list();
		return values;
	}

	/** auto generated
	 * @es_generated
	 */
	public Iterator iterateAll() {
		return getAll().iterator();
	}

	/** auto generated
	 * @es_generated
	 */
	public Idiomas getById(Integer id) {
		Idiomas value = null;
		Session session = getSession();
		value = (Idiomas) session.load(Idiomas.class, id);
		return value;
	}

	/** auto generated
	 * @es_generated
	 */
	public List findByCriteria(SearchCriteria criteria) {
		List values = null;
		Session session = getSession();
		Criteria crit = getHBCriteria(session, criteria);
		if (criteria.startFrom < criteria.maxResults && criteria.startFrom > -1) {
			crit.setFirstResult(criteria.startFrom);
			crit.setMaxResults(criteria.maxResults - criteria.startFrom);
		}
		values = crit.list();
		return values;
	}

	/** auto generated
	 * @es_generated
	 */
	private Criteria getHBCriteria(Session session, SearchCriteria criteria) {
		Criteria newCriteria = session.createCriteria(Idiomas.class);
		if (criteria.getId() != null) {
			newCriteria.add(Restrictions.eq("id", criteria.getId()));
		}
		if ((criteria.ascending != null) && (criteria.ascending.contains("id")))
			newCriteria.addOrder(Order.asc("id"));
		else if ((criteria.descending != null)
				&& (criteria.descending.contains("id")))
			newCriteria.addOrder(Order.desc("id"));
		if (criteria.getNome() != null) {
			newCriteria.add(Restrictions.eq("nome", criteria.getNome()));
		}
		if ((criteria.ascending != null)
				&& (criteria.ascending.contains("nome")))
			newCriteria.addOrder(Order.asc("nome"));
		else if ((criteria.descending != null)
				&& (criteria.descending.contains("nome")))
			newCriteria.addOrder(Order.desc("nome"));
		return newCriteria;
	}

	/** auto generated
	 * @es_generated
	 */
	public void insert(Idiomas value) {
		Session session = getSession();
		session.save(value);
	}

	/** auto generated
	 * @es_generated
	 */
	public void update(Idiomas value) {
		Session session = getSession();
		session.update(value);
	}

	/** auto generated
	 * @es_generated
	 */
	public Idiomas merge(Idiomas value) {
		Idiomas newValue = null;
		Session session = getSession();
		newValue = (Idiomas) session.merge(value);
		return newValue;
	}

	/** auto generated
	 * @es_generated
	 */
	public void delete(Idiomas value) {
		Session session = getSession();
		session.refresh(value, LockMode.UPGRADE);
		session.delete(value);
	}

	/** auto generated
	 * @es_generated
	 */
	public void delete(Integer id) {
		Idiomas value = getById(id);
		Session session = getSession();
		if (value != null) {
			session.refresh(value, LockMode.UPGRADE);
			session.delete(value);
		}
	}
}

IdiomaBean.java (Managed Bean)

public class IdiomaBean {
	private Idiomas idiomaCorrente = new Idiomas();

	public Idiomas getIdiomaCorrente() {
		return idiomaCorrente;
	}

	public void setIdiomaCorrente(Idiomas idiomaCorrente) {
		this.idiomaCorrente = idiomaCorrente;
	}
	
	public String inserirIdioma() {
		IdiomasDAO idioma = new IdiomasDAOImpl();
		idioma.insert(getIdiomaCorrente());
		return null;
	}
}

cadastrarIdioma.jsp

<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>

<html>
	<head>
		<title></title>
	</head>
	<body>
		<f:view>
			<h:form id="cadIdioma">
				<h:panelGrid columns="1">			
				<h:panelGroup>
					<h:outputLabel value="Idioma: " for="idioma" />
					<h:inputText id="idioma" value="#{idiomaBean.idiomaCorrente.nome}" />					
				</h:panelGroup>
				<br />
				&lt;h:commandButton action="#{idiomaBean.inserirIdioma}" value="cadastrar" /&gt;
				&lt;/h:panelGrid&gt;
			&lt;/h:form&gt;			
		&lt;/f:view&gt;
	&lt;/body&gt;	
&lt;/html&gt;

Bom, esses são os arquivos que to usando quando tento cadastrar um idioma, mas ao tentar cadastrar dá um erro que é o seguinte:

javax.servlet.ServletException: #{idiomaBean.inserirIdioma}: javax.faces.el.EvaluationException: java.lang.NullPointerException
javax.faces.webapp.FacesServlet.service(FacesServlet.java:209)

Eu estou postando isso porque estou bem perdido e não estou sabendo o que fazer (hehehee) se alguem puder me ajudar, espero ter sido claro.
ps.: Estou me baseando em um exemplo que está mais ou menos parecido e que funcionou perfeitamente.

…eu tbm sou iniciante, então pode ser que não seja somente isso…
mas vc criou uma classe IdiomaBean e não idiomaBean… de uma olhada no action do Button…

esse não é o erro nao, pq quando vc cria um managed bean vc define a forma como ele será chamado e eu coloquei idiomaBean… mas valeu =)
alguem?