Hibernate工具,如何在没有Spring的情况下使用dao

时间:2014-07-15 13:41:14

标签: java hibernate model mapping dao

如果我使用Hibernate Tools插件生成实体/模型并使用DAO连接到mysql数据库,如何在不使用Spring的情况下实例化DAO并使用CRUD操作?

我的模特是:

@Entity @Table(name = "misurazione", catalog = "fitness")
public class Misurazione implements java.io.Serializable {

private static final long serialVersionUID = 1L;
// query name references

private Integer idMisurazione;
private Monitoraggio monitoraggio;
private String nomeMisurazione;
private float minValore;
private float maxValore;
private Set<Rilevazione> rilevaziones = new HashSet<Rilevazione>(0);
private Set<ComposizioneMisurazioneDispositivo> composizioneMisurazioneDispositivos = new HashSet<ComposizioneMisurazioneDispositivo>(
        0);
private Set<ComposizioneMisurazioneTipoMisurazione> composizioneMisurazioneTipoMisuraziones = new HashSet<ComposizioneMisurazioneTipoMisurazione>(
        0);
public static String REF = "Misurazione";

public static final String PROP_idMisurazione = "idMisurazione";
public static final String PROP_monitoraggio = "monitoraggio";
public static final String PROP_nomeMisurazione = "nomeMisurazione";
public static final String PROP_minValore = "minValore";
public static final String PROP_maxValore = "maxValore";
public static final String PROP_rilevaziones = "rilevaziones";
public static final String PROP_composizioneMisurazioneDispositivos = "composizioneMisurazioneDispositivos";
public static final String PROP_composizioneMisurazioneTipoMisuraziones = "composizioneMisurazioneTipoMisuraziones";

public Misurazione() {
}

public Misurazione(Monitoraggio monitoraggio, String nomeMisurazione,
        float minValore, float maxValore) {
    this.monitoraggio = monitoraggio;
    this.nomeMisurazione = nomeMisurazione;
    this.minValore = minValore;
    this.maxValore = maxValore;
}

public Misurazione(
        Monitoraggio monitoraggio,
        String nomeMisurazione,
        float minValore,
        float maxValore,
        Set<Rilevazione> rilevaziones,
        Set<ComposizioneMisurazioneDispositivo> composizioneMisurazioneDispositivos,
        Set<ComposizioneMisurazioneTipoMisurazione> composizioneMisurazioneTipoMisuraziones) {
    this.monitoraggio = monitoraggio;
    this.nomeMisurazione = nomeMisurazione;
    this.minValore = minValore;
    this.maxValore = maxValore;
    this.rilevaziones = rilevaziones;
    this.composizioneMisurazioneDispositivos = composizioneMisurazioneDispositivos;
    this.composizioneMisurazioneTipoMisuraziones = composizioneMisurazioneTipoMisuraziones;
}

@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "id_misurazione", unique = true, nullable = false)
public Integer getIdMisurazione() {
    return this.idMisurazione;
}

public void setIdMisurazione(Integer idMisurazione) {
    this.idMisurazione = idMisurazione;
}

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "id_monitoraggio", nullable = false)
public Monitoraggio getMonitoraggio() {
    return this.monitoraggio;
}

public void setMonitoraggio(Monitoraggio monitoraggio) {
    this.monitoraggio = monitoraggio;
}

@Column(name = "nome_misurazione", nullable = false, length = 15)
public String getNomeMisurazione() {
    return this.nomeMisurazione;
}

public void setNomeMisurazione(String nomeMisurazione) {
    this.nomeMisurazione = nomeMisurazione;
}

@Column(name = "min_valore", nullable = false, precision = 5)
public float getMinValore() {
    return this.minValore;
}

public void setMinValore(float minValore) {
    this.minValore = minValore;
}

@Column(name = "max_valore", nullable = false, precision = 5)
public float getMaxValore() {
    return this.maxValore;
}

public void setMaxValore(float maxValore) {
    this.maxValore = maxValore;
}

@OneToMany(fetch = FetchType.LAZY, mappedBy = "misurazione")
public Set<Rilevazione> getRilevaziones() {
    return this.rilevaziones;
}

public void setRilevaziones(Set<Rilevazione> rilevaziones) {
    this.rilevaziones = rilevaziones;
}

@OneToMany(fetch = FetchType.LAZY, mappedBy = "misurazione")
public Set<ComposizioneMisurazioneDispositivo> getComposizioneMisurazioneDispositivos() {
    return this.composizioneMisurazioneDispositivos;
}

public void setComposizioneMisurazioneDispositivos(
        Set<ComposizioneMisurazioneDispositivo> composizioneMisurazioneDispositivos) {
    this.composizioneMisurazioneDispositivos = composizioneMisurazioneDispositivos;
}

@OneToMany(fetch = FetchType.LAZY, mappedBy = "misurazione")
public Set<ComposizioneMisurazioneTipoMisurazione> getComposizioneMisurazioneTipoMisuraziones() {
    return this.composizioneMisurazioneTipoMisuraziones;
}

public void setComposizioneMisurazioneTipoMisuraziones(
        Set<ComposizioneMisurazioneTipoMisurazione> composizioneMisurazioneTipoMisuraziones) {
    this.composizioneMisurazioneTipoMisuraziones = composizioneMisurazioneTipoMisuraziones;
}

/**
 * toString
 * @return String
 */
public String toString() {
    StringBuffer buffer = new StringBuffer();

    buffer.append(getClass().getName()).append("@")
            .append(Integer.toHexString(hashCode())).append(" [");
    buffer.append("idMisurazione").append("='").append(getIdMisurazione())
            .append("' ");
    buffer.append("monitoraggio").append("='").append(getMonitoraggio())
            .append("' ");
    buffer.append("nomeMisurazione").append("='")
            .append(getNomeMisurazione()).append("' ");
    buffer.append("minValore").append("='").append(getMinValore())
            .append("' ");
    buffer.append("maxValore").append("='").append(getMaxValore())
            .append("' ");
    buffer.append("rilevaziones").append("='").append(getRilevaziones())
            .append("' ");
    buffer.append("composizioneMisurazioneDispositivos").append("='")
            .append(getComposizioneMisurazioneDispositivos()).append("' ");
    buffer.append("composizioneMisurazioneTipoMisuraziones").append("='")
            .append(getComposizioneMisurazioneTipoMisuraziones())
            .append("' ");
    buffer.append("]");

    return buffer.toString();
}

public boolean equals(Object other) {
    if ((this == other))
        return true;
    if ((other == null))
        return false;
    if (!(other instanceof Misurazione))
        return false;
    Misurazione castOther = (Misurazione) other;

    return false;
}

public int hashCode() {
    int result = 17;

    return result;
}

}

DAO IS:

 import it.neatec.hl7.db.DaoInterface;
 import java.io.Serializable;
 import java.util.Collection;
 import java.util.List;
 import org.apache.log4j.Logger;
 import org.hibernate.Criteria;
 import org.hibernate.Session;
 import org.hibernate.criterion.Criterion;
 import org.hibernate.criterion.DetachedCriteria;
 import org.hibernate.criterion.Projections;
 import org.springframework.orm.hibernate3.HibernateCallback;
 import org.springframework.orm.hibernate3.support.HibernateDaoSupport;


public class MisurazioneDao extends HibernateDaoSupport implements
    DaoInterface<Misurazione> {

private static final Logger logger = Logger.getLogger(MisurazioneDao.class);

public Session getCurrentSession() {
    try {
        return (Session) getHibernateTemplate().getSessionFactory()
                .getCurrentSession();
    } catch (Exception e) {
        logger.error("Could not locate SessionFactory in JNDI", e);
        throw new IllegalStateException(
                "Could not locate SessionFactory in JNDI");
    }
}

public Class getReferenceClass() {
    return Misurazione.class;
}

public void save(Misurazione istance) {
    logger.debug("Save Misurazione instance");
    try {
        getHibernateTemplate().save(istance);
        logger.debug("Save successful");
    } catch (RuntimeException re) {
        logger.error("Save failed", re);
        throw re;
    }
}

public void update(Misurazione istance) {
    logger.debug("Update Misurazione instance");
    try {
        getHibernateTemplate().update(istance);
        logger.debug("Update successful");
    } catch (RuntimeException re) {
        logger.error("Update failed", re);
        throw re;
    }
}

public void saveOrUpdate(Misurazione instance) {
    logger.debug("saveOrUpdate Misurazione instance");
    try {
        getHibernateTemplate().saveOrUpdate(instance);
        logger.debug("saveOrUpdate successful");
    } catch (RuntimeException re) {
        logger.error("saveOrUpdate failed", re);
        throw re;
    }
}

public void deleteAll(Collection<Misurazione> entities) {
    logger.debug("delete collection Misurazione entities");
    try {
        getHibernateTemplate().deleteAll(entities);
        logger.debug("delete successful");
    } catch (RuntimeException re) {
        logger.error("delete failed", re);
        throw re;
    }
}

public void delete(Misurazione instance) {
    logger.debug("deleting Misurazione instance");
    try {
        getHibernateTemplate().delete(instance);
        logger.debug("delete successful");
    } catch (RuntimeException re) {
        logger.error("delete failed", re);
        throw re;
    }
}

public Misurazione merge(Misurazione instance) {
    logger.debug("merging Misurazione instance");
    try {
        Misurazione result = (Misurazione) getHibernateTemplate().merge(
                instance);
        logger.debug("merge successful");
        return result;
    } catch (RuntimeException re) {
        logger.error("merge failed", re);
        throw re;
    }
}

public Misurazione findById(java.lang.Integer id) {
    logger.debug("getting Misurazione instance with id: " + id);
    try {
        Misurazione instance = (Misurazione) getHibernateTemplate().get(
                Misurazione.class, id);
        if (instance == null) {
            logger.debug("get successful, no instance found");
        } else {
            logger.debug("get successful, instance found");
        }
        return instance;
    } catch (RuntimeException re) {
        logger.error("get failed", re);
        throw re;
    }
}

public Misurazione findById(Serializable id) {
    logger.debug("getting Misurazione instance with id: " + id);
    try {
        Misurazione instance = (Misurazione) getHibernateTemplate().get(
                Misurazione.class, id);
        if (instance == null) {
            logger.debug("get successful, no instance found");
        } else {
            logger.debug("get successful, instance found");
        }
        return instance;
    } catch (RuntimeException re) {
        logger.error("get failed", re);
        throw re;
    }
}

public List<Misurazione> loadAll() {

    logger.debug("loadAll Misurazione instance ");
    try {

        List<Misurazione> results = (List<Misurazione>) getHibernateTemplate()
                .loadAll(Misurazione.class);
        logger.debug("loadAll successful, result size: " + results.size());
        return results;
    } catch (RuntimeException re) {
        logger.error("loadAll failed", re);
        throw re;
    }
}

public List<Misurazione> findByCriteria(Criterion... criterion) {

    logger.debug("finding Misurazione instance by Criteria");
    try {

        Criteria crit = getHibernateTemplate().getSessionFactory()
                .getCurrentSession().createCriteria(Misurazione.class);

        for (Criterion c : criterion) {
            crit.add(c);
        }

        List<Misurazione> results = (List<Misurazione>) crit.list();

        logger.debug("find by Criterion successful, result size: "
                + results.size());
        return results;
    } catch (RuntimeException re) {
        logger.error("find by Criterion failed", re);
        throw re;
    }
}

public List<Misurazione> findByCriteria(DetachedCriteria dc, int from,
        int size) {

    logger.debug("finding Misurazione instance by DetachedCriteria");
    try {
        List<Misurazione> results = (List<Misurazione>) getHibernateTemplate()
                .findByCriteria(dc, from, size);

        logger.debug("find by Criterion successful, result size: "
                + results.size());
        return results;
    } catch (RuntimeException re) {
        logger.error("find by DetachedCriteria failed", re);
        throw re;
    }
}

public Integer countByCriteria(final DetachedCriteria dc) {

    logger.debug("count Misurazione");
    try {
        Integer count = (Integer) getHibernateTemplate()
                .executeWithNativeSession(new HibernateCallback() {
                    public Object doInHibernate(Session session)
                            throws RuntimeException {
                        Criteria executableCriteria = dc
                                .getExecutableCriteria(session);
                        executableCriteria.setProjection(Projections
                                .rowCount());
                        for (Object result : executableCriteria.list()) {
                            if (result instanceof Integer) {
                                return (Integer) result;
                            } else if (result instanceof Long) {
                                return ((Long) result).intValue();
                            }
                        }
                        return -1;
                    }
                });

        return count.intValue();

    } catch (RuntimeException e) {
        logger.error(e.getMessage(), e);
        throw e;
    }
}

public List<Misurazione> findByExample(Misurazione instance) {

    logger.debug("finding Misurazione instance by example");
    try {

        List<Misurazione> results = (List<Misurazione>) getHibernateTemplate()
                .findByExample(instance);
        logger.debug("find by example successful, result size: "
                + results.size());
        return results;
    } catch (RuntimeException re) {
        logger.error("find by example failed", re);
        throw re;
    }
}
}

谢谢

1 个答案:

答案 0 :(得分:0)

我以这种方式解决了,使用不同的daohome.ftl重新生成(hibernate tools)dao,其中包括HiberneteUtil,用于所有CRUD操作中的启动会话。

在我使用ServiceFactory读取applicationContext.xml之后,我已经把整个已注释的Hibernate类列表放在