Duvida com Struts+Hibernate Annotations

Bom dia!
Estou começando a estudar Struts com Hibernate.Baixei os pacotes Hibernate Core e Annotations.Tentei fazer um exemplo que vi na internet e parei em um problema e estou com duvidas.
Segue os códigos:

Classe Produto

view plaincopy to clipboardprint?
@Entity
@Table(name = “produto”)
public class Produto extends ActionForm{
/**
*
*/
private static final long serialVersionUID = 1L;
@Column(name = “descricao”, nullable = true, length = 50)
private String descricao;
@Id @GeneratedValue
private Long id;

private Double preco;

private String nome;

public String getDescricao() {
return descricao;
}

public void setDescricao(String descricao) {
this.descricao = descricao;
}

public Long getId() {
return id;
}

public void setId(Long id) {
this.id = id;
}

public Double getPreco() {
return preco;
}

public void setPreco(Double preco) {
this.preco = preco;
}

public String getNome() {
return nome;
}

public void setNome(String nome) {
this.nome = nome;
}

}
@Entity
@Table(name = “produto”)
public class Produto extends ActionForm{
/**
*
*/
private static final long serialVersionUID = 1L;
@Column(name = “descricao”, nullable = true, length = 50)
private String descricao;
@Id @GeneratedValue
private Long id;

private Double preco;

private String nome;

public String getDescricao() {
return descricao;
}

public void setDescricao(String descricao) {
this.descricao = descricao;
}

public Long getId() {
return id;
}

public void setId(Long id) {
this.id = id;
}

public Double getPreco() {
return preco;
}

public void setPreco(Double preco) {
this.preco = preco;
}

public String getNome() {
return nome;
}

public void setNome(String nome) {
this.nome = nome;
}

}

hibernate.properties
view plaincopy to clipboardprint?
hibernate.dialect org.hibernate.dialect.MySQLDialect
hibernate.connection.driver_class com.mysql.jdbc.Driver
hibernate.connection.url jdbc:mysql://localhost/projeto
hibernate.connection.username root
hibernate.connection.password
hibernate.dialect org.hibernate.dialect.MySQLDialect
hibernate.connection.driver_class com.mysql.jdbc.Driver
hibernate.connection.url jdbc:mysql://localhost/projeto
hibernate.connection.username root
hibernate.connection.password

HibernateFactory
view plaincopy to clipboardprint?
public class HibernateFactory {
public static SessionFactory factory;

static{
AnnotationConfiguration cfg = new AnnotationConfiguration();
cfg.addAnnotatedClass(Produto.class);
factory = cfg.buildSessionFactory();
}

public Session getSession() {
return factory.openSession();

}
}
public class HibernateFactory {
public static SessionFactory factory;

static{
AnnotationConfiguration cfg = new AnnotationConfiguration();
cfg.addAnnotatedClass(Produto.class);
factory = cfg.buildSessionFactory();
}

public Session getSession() {
return factory.openSession();

}
}

Cadastro Action

view plaincopy to clipboardprint?
public class CadastroAction extends Action{
public ActionForward execute(ActionMapping mapping,
ActionForm form,
HttpServletRequest req,
HttpServletResponse res)throws Exception{

Session session = new HibernateFactory().getSession();
Produto produto = (Produto)form;
new ProdutoDao(session).salva(produto);
session.close();

return mapping.findForward(“sucesso”);
}

}
public class CadastroAction extends Action{
public ActionForward execute(ActionMapping mapping,
ActionForm form,
HttpServletRequest req,
HttpServletResponse res)throws Exception{

Session session = new HibernateFactory().getSession();
Produto produto = (Produto)form;
new ProdutoDao(session).salva(produto);
session.close();

return mapping.findForward(“sucesso”);
}

}

ProdutoDao

view plaincopy to clipboardprint?
public class ProdutoDao {
private Session session;

public ProdutoDao(Session session) throws Exception{
this.session = session;
}
public void salva (Produto produto){
this.session.save(produto);
}
public void remove (Produto produto){
this.session.delete(produto);
}
public Produto procura (Long id){
return (Produto) this.session.load(Produto.class, id);
}
public void atualiza (Produto produto){
this.session.update(produto);
}

}
public class ProdutoDao {
private Session session;

public ProdutoDao(Session session) throws Exception{
this.session = session;
}
public void salva (Produto produto){
this.session.save(produto);
}
public void remove (Produto produto){
this.session.delete(produto);
}
public Produto procura (Long id){
return (Produto) this.session.load(Produto.class, id);
}
public void atualiza (Produto produto){
this.session.update(produto);
}

}

Erro:

root cause
view plaincopy to clipboardprint?
org.hibernate.MappingException: Unknown entity: br.unig.teste.modelo.Produto
org.hibernate.impl.SessionFactoryImpl.getEntityPersister(SessionFactoryImpl.java:550)
org.hibernate.impl.SessionImpl.getEntityPersister(SessionImpl.java:133
org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:9
org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:187)
org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:33)
org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:172)
org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:27)
org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70)
org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:535)
org.hibernate.impl.SessionImpl.save(SessionImpl.java:523)
org.hibernate.impl.SessionImpl.save(SessionImpl.java:519)
br.unig.teste.dao.ProdutoDao.salva(ProdutoDao.java:14)
br.unig.teste.controle.CadastroAction.execute(CadastroAction.java:24)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:226)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:415)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.hibernate.MappingException: Unknown entity: br.unig.teste.modelo.Produto
org.hibernate.impl.SessionFactoryImpl.getEntityPersister(SessionFactoryImpl.java:550)
org.hibernate.impl.SessionImpl.getEntityPersister(SessionImpl.java:133
org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:9
org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:187)
org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:33)
org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:172)
org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:27)
org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70)
org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:535)
org.hibernate.impl.SessionImpl.save(SessionImpl.java:523)
org.hibernate.impl.SessionImpl.save(SessionImpl.java:519)
br.unig.teste.dao.ProdutoDao.salva(ProdutoDao.java:14)
br.unig.teste.controle.CadastroAction.execute(CadastroAction.java:24)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:226)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:415)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

root cause

org.apache.commons.logging.LogConfigurationException: org.apache.commons.logging.LogConfigurationException: org.apache.commons.logging.LogConfigurationException: Class org.apache.commons.logging.impl.Log4JLogger does not implement Log
org.apache.commons.logging.impl.LogFactoryImpl.newInstance(LogFactoryImpl.java:532)
org.apache.commons.logging.impl.LogFactoryImpl.getInstance(LogFactoryImpl.java:272)
org.apache.commons.logging.impl.LogFactoryImpl.getInstance(LogFactoryImpl.java:246)
org.apache.commons.logging.LogFactory.getLog(LogFactory.java:395)
org.hibernate.cfg.Configuration.(Configuration.java:126)
br.unig.teste.hibernate.HibernateFactory.(HibernateFactory.java:12)
br.unig.teste.controle.CadastroAction.execute(CadastroAction.java:23)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:226)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:415)
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

root cause

org.apache.commons.logging.LogConfigurationException: org.apache.commons.logging.LogConfigurationException: Class org.apache.commons.logging.impl.Log4JLogger does not implement Log
org.apache.commons.logging.impl.LogFactoryImpl.getLogConstructor(LogFactoryImpl.java:416)
org.apache.commons.logging.impl.LogFactoryImpl.newInstance(LogFactoryImpl.java:525)
org.apache.commons.logging.impl.LogFactoryImpl.getInstance(LogFactoryImpl.java:272)
org.apache.commons.logging.impl.LogFactoryImpl.getInstance(LogFactoryImpl.java:246)
org.apache.commons.logging.LogFactory.getLog(LogFactory.java:395)
org.hibernate.cfg.Configuration.(Configuration.java:126)
br.unig.teste.hibernate.HibernateFactory.(HibernateFactory.java:12)
br.unig.teste.controle.CadastroAction.execute(CadastroAction.java:23)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:226)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:415)
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

root cause

org.apache.commons.logging.LogConfigurationException: Class org.apache.commons.logging.impl.Log4JLogger does not implement Log
org.apache.commons.logging.impl.LogFactoryImpl.getLogConstructor(LogFactoryImpl.java:412)
org.apache.commons.logging.impl.LogFactoryImpl.newInstance(LogFactoryImpl.java:525)
org.apache.commons.logging.impl.LogFactoryImpl.getInstance(LogFactoryImpl.java:272)
org.apache.commons.logging.impl.LogFactoryImpl.getInstance(LogFactoryImpl.java:246)
org.apache.commons.logging.LogFactory.getLog(LogFactory.java:395)
org.hibernate.cfg.Configuration.(Configuration.java:126)
br.unig.teste.hibernate.HibernateFactory.(HibernateFactory.java:12)
br.unig.teste.controle.CadastroAction.execute(CadastroAction.java:23)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:226)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:415)
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

Sendo que, eu consigo gerar cadastrar por essa configuração, e tbm cadastrar, se o codigo for assim:

view plaincopy to clipboardprint?
public static void main(String [] args){

Session session = new HibernateFactory().getSession();
Produto p = new Produto();
p.setNome(“Arroz”);
p.setDescricao(“Branco”);
p.setPreco(1.00);
session.save§;
session.close;
public static void main(String [] args){

Session session = new HibernateFactory().getSession();
Produto p = new Produto();
p.setNome(“Arroz”);
p.setDescricao(“Branco”);
p.setPreco(1.00);
session.save§;
session.close;

Ajudem-me, pois terei que trabalhar com isso brevemente e preciso mto disso!!!
Obrigado!!!

De acordo com a exception:

Você não informou ao Hibernate que a classe Produto deverá ser utilizada. Essa configuração deve ser feita no arquivo hibernate.cfg.xml.