Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Připojení dvou aplikací do jedné mysql databáze

Objekt, který ukládám do DB (+ dědění od základního BASEOBJECT):

package org.donutek.domain;

import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.MappedSuperclass;
import javax.persistence.Transient;

@MappedSuperclass
public class BaseObject {

    private Long id;

    @Transient
    public boolean isNew() {
        return id == null;
    }

    @Id
    @GeneratedValue
    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
package org.donutek.domain;

import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.Table;

@Entity
@Table(name = "info_message")
public class info_message extends BaseObject implements Serializable {

    private String date, message;

    public info_message() {
    }

    public info_message(String date, String message) {
        this.date = date;
        this.message = message;
    }

    public String getDate() {
        return date;
    }

    public void setDate(String date) {
        this.date = date;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    @Override
    public String toString() {
        return "info_message{" + "date=" + date + ", message=" + message + '}';
    }

}

Konkrétní uložení:

  public void save_info_message(info_message info_message) {
        EntityManager em;

        em = emf.createEntityManager();
        info_messageDao.startTransaction(em);
        try {
            info_messageDao.save(info_message, em);
        } catch (Exception e) {
            info_messageDao.rollbackTransaction(em);
        }
        info_messageDao.commitTransaction(em);
        em.close();
    }
Kdy emf vytvářím při startu serveru takhle:

emf = Persistence.createEntityManagerFactory("neco");
Generické DAO (v interfacu jsou jen hlavičky metod):
package org.donutek.dao;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import org.donutek.domain.BaseObject;

public class GenericDaoJpa<T extends BaseObject> implements GenericDao<T> {

    protected EntityManagerFactory emf;
    private Class<T> persistedType;

    public GenericDaoJpa(EntityManagerFactory emf, Class<T> persistedType) {
        this.emf = emf;
        this.persistedType = persistedType;
    }

    @Override
    public T save(T value, EntityManager em) {
        if (value.isNew()) {
            em.persist(value);
            return value;
        } else {
            return em.merge(value);
        }
    }

    @Override
    public void remove(T toRemove, EntityManager em) {
        if (!toRemove.isNew()) {
            em.remove(toRemove);
        }
    }

    @Override
    public void startTransaction(EntityManager em) {
        em.getTransaction().begin();
    }

    @Override
    public void commitTransaction(EntityManager em) {
        em.getTransaction().commit();
    }

    @Override
    public void rollbackTransaction(EntityManager em) {
        em.getTransaction().rollback();
    }
}
Konkrétní DAO objektu se kterým pracuji dědí od generického:

package org.donutek.dao;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.NoResultException;
import javax.persistence.TypedQuery;
import org.donutek.domain.info_message;

public class info_messageDaoJpa extends GenericDaoJpa<info_message> implements info_messageDao {

    public info_messageDaoJpa(EntityManagerFactory emf) {
        super(emf, info_message.class);
    }

    @Override
    public info_message findLastMessage(EntityManager em) {
        TypedQuery<info_message> q = em.createQuery("SELECT t FROM info_message t ORDER BY t.id DESC", info_message.class);
        q.setMaxResults(1);
        try {
            return q.getSingleResult();
        } catch (NoResultException e) {
            return null;
        }
    }

}
Konkrétní výběr který posílám pak v REQUESTU je:
           EntityManager em;
        em = emf.createEntityManager();
        String date = daoRegister.getInfo_messageDao().findLastMessage(em).getDate(); //pristup do dao objektu
        em.close();
emf je pořád stejný objekt, který posílám tam kde je třeba.

Reakce na odpověď

1 Zadajte svou přezdívku:
2 Napište svou odpověď:
3 Pokud chcete dostat ban, zadejte libovolný text:

Zpět do poradny