Pokaże Ci jak to u mnie wygląda. Znalazłem to rozwiązanie w pewnym tutorialu.
Klasa DAO :
abstract class DAO<T> implements Serializable {
private static final long serialVersionUID = 1L;
private static final EntityManagerFactory emf = Persistence
.createEntityManagerFactory("test");
private EntityManager em;
private Class<T> entityClass;
public void beginTransaction() {
em = emf.createEntityManager();
em.getTransaction().begin();
}
public void commit() {
em.getTransaction().commit();
}
public void rollback() {
em.getTransaction().rollback();
}
public void closeTransaction() {
em.close();
}
public void commitAndCloseTransaction() {
commit();
closeTransaction();
}
public void flush() {
em.flush();
}
public void joinTransaction() {
em = emf.createEntityManager();
em.joinTransaction();
}
public DAO(Class<T> entityClass) {
this.entityClass = entityClass;
}
public void save(T entity) {
em.persist(entity);
}
public void delete(T entity) {
T entityToBeRemoved = em.merge(entity);
em.remove(entityToBeRemoved);
}
public T update(T entity) {
return em.merge(entity);
}
public T find(int entityID) {
return em.find(entityClass, entityID);
}
public T findReferenceOnly(int entityID) {
return em.getReference(entityClass, entityID);
}
public EntityManager getEm() {
return em;
}
}
Klasa UzytkownikDAO - dziedziczy po abstarkcyjnej klasie:
public class UzytkownikDAO extends DAO<Uzytkownik> {
private static final long serialVersionUID = 1L;
public UzytkownikDAO() {
super(Uzytkownik.class);
// TODO Auto-generated constructor stub
}
}
Klasa Bean :
@ManagedBean(name = "uzytkownikBean")
@ViewScoped
public class UzytkownikBean implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
private Uzytkownik uzytkownik;
private UzytkownikDAO dao = new UzytkownikDAO();
private DataModel<Uzytkownik> modelUzytkownicy;
private int indeksUsuniecia;
public Uzytkownik getUzytkownik() {
return uzytkownik;
}
public void setUzytkownik(Uzytkownik uzytkownik) {
this.uzytkownik = uzytkownik;
}
public DataModel<Uzytkownik> getModelUzytkownicy() {
return modelUzytkownicy;
}
public void setModelUzytkownicy(ArrayDataModel<Uzytkownik> modelUzytkownicy) {
this.modelUzytkownicy = modelUzytkownicy;
}
public int getIndeksUsuniecia() {
return indeksUsuniecia;
}
public void setIndeksUsuniecia(int indeksUsuniecia) {
this.indeksUsuniecia = indeksUsuniecia;
}
@PostConstruct
public void init() {
uzytkownik = new Uzytkownik();
}
public void dodaj() {
dao.beginTransaction();
dao.save(uzytkownik);
dao.commitAndCloseTransaction();
}
public void usun()
{
dao.beginTransaction();
Uzytkownik find = dao.getEm().find(Uzytkownik.class,indeksUsuniecia);
dao.delete(find);
dao.commitAndCloseTransaction();
}
private void pobierzUzytkownikow() {
dao.beginTransaction();
List<Uzytkownik> resultList = dao.getEm()
.createNamedQuery("Uzytkownik.znajdzWszystkich", Uzytkownik.class)
.getResultList();
for (Uzytkownik uzytkownik : resultList) {
System.out.println(uzytkownik.toString());
}
dao.commitAndCloseTransaction();
modelUzytkownicy = new ArrayDataModel<Uzytkownik>();
modelUzytkownicy.setWrappedData(resultList);
}
}
Klasa Uzytkownik:
@Entity
@NamedQuery(name="Uzytkownik.znajdzWszystkich", query="SELECT u FROM Uzytkownik u")
public class Uzytkownik implements Serializable
{
/**
*
*/
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue
private long id;
private String imie;
private String nazwisko;
private String plec;
private String adresEmail;
private String login;
private String haslo;
public String getNazwisko() {
return nazwisko;
}
public void setNazwisko(String nazwisko) {
this.nazwisko = nazwisko;
}
public String getPlec() {
return plec;
}
public void setPlec(String plec) {
this.plec = plec;
}
public String getAdresEmail() {
return adresEmail;
}
public void setAdresEmail(String adresEmail) {
this.adresEmail = adresEmail;
}
public String getLogin() {
return login;
}
public void setLogin(String login) {
this.login = login;
}
public String getHaslo() {
return haslo;
}
public void setHaslo(String haslo) {
this.haslo = haslo;
}
public String getImie() {
return imie;
}
public void setImie(String imie) {
this.imie = imie;
}
@Override
public String toString() {
return "Uzytkownik [id=" + id + ", imie=" + imie + ", nazwisko="
+ nazwisko + ", plec=" + plec + ", adresEmail=" + adresEmail
+ ", login=" + login + ", haslo=" + haslo + "]";
}
}