Witam mam pytanie czy taki mechanizm jest poprawny ? a mianowicie chodzi mi o klasy dao ktore przekazywane sa w taki sposob jak ponizej do servletów i żądań.
package Dao;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityTransaction;
import encje.Temat;
import encje.Uzytkownik;
public class TematyDAO {
private EntityManager em;
public TematyDAO(EntityManager em){
this.em = em;
}
public List<Temat> pobierzTematy(){
List<Temat> tematy = this.em.createQuery("SELECT t from Temat t").getResultList();
return tematy;
}
public List pobierzIloscTematowWKategori(String id){
List tematy = this.em.createQuery("SELECT count(t) from Temat t where t.kategoria ="+id).getResultList();
return tematy;
}
public List<Temat> pobierzPoKategori(String id){
List<Temat> tematy = this.em.createQuery("SELECT t from Temat t where t.kategoria ="+id).getResultList();
return tematy;
}
public Temat pobierzTemat(int id){
this.em.clear();
return this.em.find(Temat.class, id);
}
public boolean dodajTemat(Temat t){
EntityTransaction et = em.getTransaction();
try{
et.begin();
em.persist(t);
et.commit();
return true;
}catch(Exception e){
e.printStackTrace();
et.rollback();
return false;
}
}
}
----------------------------------------------------------------------
package DB;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
@WebListener
public class DBConfig implements ServletContextListener {
private static EntityManagerFactory emf;
@Override
public void contextDestroyed(ServletContextEvent arg0){
if(emf != null && emf.isOpen()){
emf.close();
}
}
@Override
public void contextInitialized(ServletContextEvent arg0){
emf = Persistence.createEntityManagerFactory("mojabaza");
}
public static EntityManager createEntityManager(){
if(emf != null)
return emf.createEntityManager();
else
return null;
}
}
---------------------------------------------------------------------------------------
package DB;
import javax.persistence.EntityManager;
import javax.servlet.ServletRequest;
import javax.servlet.ServletRequestEvent;
import javax.servlet.ServletRequestListener;
import javax.servlet.annotation.WebListener;
import Dao.KategoriaDAO;
import Dao.TematyDAO;
import Dao.UzytkownicyDAO;
import Dao.WpisyDAO;
/**
* Application Lifecycle Listener implementation class InicjatorDB
*
*/
@WebListener
public class InicjatorDB implements ServletRequestListener {
public void requestDestroyed(ServletRequestEvent arg0) {
// TODO Auto-generated method stub
}
public void requestInitialized(ServletRequestEvent arg0) {
EntityManager em = DBConfig.createEntityManager();
UzytkownicyDAO uzytkownicyDAO = new UzytkownicyDAO(em);
TematyDAO tematyDAO = new TematyDAO(em);
WpisyDAO wpisyDAO = new WpisyDAO(em);
KategoriaDAO kategoriaDAO = new KategoriaDAO(em);
ServletRequest req = arg0.getServletRequest();
req.setAttribute("wpisyDAO", wpisyDAO);
req.setAttribute("tematyDAO", tematyDAO);
req.setAttribute("uzytkownicyDAO", uzytkownicyDAO);
req.setAttribute("kategoriaDAO", kategoriaDAO);
}
}
------------------------------------------------------------------------------------------------------------------------------------
package servlety;
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import Dao.KategoriaDAO;
import Dao.TematyDAO;
import encje.Kategoria;
import encje.Temat;
@WebServlet("/index")
public class IndexSerwlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
TematyDAO dao = (TematyDAO) request.getAttribute("tematyDAO");
List<Temat> tematy = dao.pobierzTematy();
request.setAttribute("tematy", tematy);
KategoriaDAO dao1 = (KategoriaDAO) request.getAttribute("kategoriaDAO");
List<Kategoria> kategorie = dao1.pobierzKategorie();
request.setAttribute("kategorie", kategorie);
String id = "1";
List t = dao.pobierzIloscTematowWKategori(id);
System.out.print(id);
System.out.print(t);
request.getRequestDispatcher("/WEB-INF/widok/index.jsp").forward(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
pokazuje akurat jeden z serwletów bo reszta jest na tej samej zasadzie