如果我使用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;
}
}
}
谢谢
答案 0 :(得分:0)
我以这种方式解决了,使用不同的daohome.ftl重新生成(hibernate tools)dao,其中包括HiberneteUtil,用于所有CRUD操作中的启动会话。
在我使用ServiceFactory读取applicationContext.xml之后,我已经把整个已注释的Hibernate类列表放在