[jboss-user] [JBoss Seam] - Seam + Hibernate + MVC

MelampO do-not-reply at jboss.com
Thu Nov 16 06:54:27 EST 2006


Hi.

First of all, sorry for my english :D

I am newby using seam and I am trying to develope a web application with a MVC layer model (I have no choose, I didn't design the application).

I am some confused about what annotations a need for each layer and I can't find any example that implements this model. Anyone can help me?:

Entity:

  | @Entity
  | @Name("libro")
  | @Scope(CONVERSATION)
  | @Table(name = "libros")
  | public class Libro implements Serializable {
  | 
  | 	private static final long serialVersionUID = -1252025299985845136L;
  | 
  | 	private String isbn;
  | 
  | 	private String titulo;
  | 
  | 	private String autor;
  | 
  | 	@Id
  | 	@Column(name = "isbn")
  | 	public String getIsbn() {
  | 		return isbn;
  | 	}
  | 
  | 	public void setIsbn(String isbn) {
  | 		this.isbn = isbn;
  | 	}
  | 
  | 	@NotNull
  | 	@Column(name = "titulo")
  | 	public String getTitulo() {
  | 		return titulo;
  | 	}
  | 
  | 	public void setTitulo(String titulo) {
  | 		this.titulo = titulo;
  | 	}
  | 
  | 	@NotNull
  | 	@Column(name = "autor")
  | 	public String getAutor() {
  | 		return autor;
  | 	}
  | 
  | 	public void setAutor(String autor) {
  | 		this.autor = autor;
  | 	}
  | }
  | 

Service Interface:

  | @Local
  | public interface LibroManager {
  | 	...
  | 	public void add();
  | 	...
  | }
  | 

Service Implementation:

  | @Stateful
  | @Name("libroManager")
  | @Scope(CONVERSATION)
  | public class LibroManagerAction implements LibroManager, Serializable {
  | 
  | 	private static final long serialVersionUID = 4607492839166551543L;
  | 
  | 	@In(required = false)
  | 	@Out(required = false)
  | 	private Libro libro;
  | 
  | 	private LibroDAOhbn libroDAO = new LibroDAOhbn();
  | 
  | 	...
  | 	public void add() {
  | 		libroDAO.Create(libro);
  | 	}
  | 	...
  | }
  | 

Dao Interface:

  | @Local
  | public interface LibroDAO {
  | 	public void Create(Libro libro);
  | 
  | }
  | 

Dao Implementation:

  | @Stateless
  | @Name("libroDAO")
  | 
  | public class LibroDAOhbn implements LibroDAO {
  | 
  | 	@PersistenceContext
  | 	private EntityManager em;
  | 
  | 	public void Create(Libro libro) {
  | 		System.out.println("Registrando " + libro.getTitulo());
  | 
  | 		try {
  | 			em.persist(libro);
  | 		} catch (Exception e) {
  | 			System.out.println(e.getMessage());
  | 		}
  | 	}
  | 
  | }
  | 

Ok, when the Create(libro) method is called, I only get an exception: NULL. I think that this is caused because I lost the EntityManager or Entity context, but I don't know how to mend it.

I try to inject the libroDAOhbn in the service class with:

  | @In (create=true)
  | private LibroDAOhbn libroDAO = new LibroDAOhbn();
  | 

but I get an error everytime I call any service's method. I think that it must to have an easy solution, but I can't find it :). Some suggestions?

If I don't use a DAO layer and I do all the implementation in the service/controller , I have no problems. This runs perfectly:

  | @Stateful
  | @Name("libroManager")
  | @Scope(CONVERSATION)
  | public class LibroManagerAction implements LibroManager, Serializable {
  | 
  | 	private static final long serialVersionUID = 4607492839166551543L;
  | 
  | 	@In(required = false)
  | 	@Out(required = false)
  | 	private Libro libro;
  | 
  | 	private LibroDAOhbn libroDAO = new LibroDAOhbn();
  | 
  | 	...
  |         public void add() {
  | 
  |        try { 
  | 	 em.persist(libro);
  | 	
  | 	 FacesMessages.instance().add( "Insertado correctamente: " + libro.getTitulo()); 
  | 	
  | 	} catch (Exception e) {
  | 		System.out.println("Exception: " + e.getMessage()); 
  | 	}
  |         ....
  |   }
  | 
but I need the DAO's :(

Thank's for all.

PS: Sorry for my englis again.

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3986482#3986482

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3986482



More information about the jboss-user mailing list