1

In my project, I just generate the pojo and dao classes with the hibernate. But the dao classes generated by Hibernate are all in this style:

package com.ligadesportiva.data;

// Generated 14/03/2014 22:39:34 by Hibernate Tools 3.4.0.CR1

import java.util.List;
import javax.naming.InitialContext;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.LockMode;
import org.hibernate.SessionFactory;
import org.hibernate.criterion.Example;
import org.ligadesportiva.core.Jogador;

/**
 * Home object for domain model class Jogador.
 * @see com.ligadesportiva.data.Jogador
 * @author Hibernate Tools
 */
public class JogadorHome {

    private static final Log log = LogFactory.getLog(JogadorHome.class);

    private final SessionFactory sessionFactory = getSessionFactory();

    protected SessionFactory getSessionFactory() {
        try {
            return (SessionFactory) new InitialContext()
                    .lookup("SessionFactory");
        } catch (Exception e) {
            log.error("Could not locate SessionFactory in JNDI", e);
            throw new IllegalStateException(
                    "Could not locate SessionFactory in JNDI");
        }
    }

    public void persist(Jogador transientInstance) {
        log.debug("persisting Jogador instance");
        try {
            sessionFactory.getCurrentSession().persist(transientInstance);
            log.debug("persist successful");
        } catch (RuntimeException re) {
            log.error("persist failed", re);
            throw re;
        }
    }

    public void attachDirty(Jogador instance) {
        log.debug("attaching dirty Jogador instance");
        try {
            sessionFactory.getCurrentSession().saveOrUpdate(instance);
            log.debug("attach successful");
        } catch (RuntimeException re) {
            log.error("attach failed", re);
            throw re;
        }
    }

    public void attachClean(Jogador instance) {
        log.debug("attaching clean Jogador instance");
        try {
            sessionFactory.getCurrentSession().lock(instance, LockMode.NONE);
            log.debug("attach successful");
        } catch (RuntimeException re) {
            log.error("attach failed", re);
            throw re;
        }
    }

    public void delete(Jogador persistentInstance) {
        log.debug("deleting Jogador instance");
        try {
            sessionFactory.getCurrentSession().delete(persistentInstance);
            log.debug("delete successful");
        } catch (RuntimeException re) {
            log.error("delete failed", re);
            throw re;
        }
    }

    public Jogador merge(Jogador detachedInstance) {
        log.debug("merging Jogador instance");
        try {
            Jogador result = (Jogador) sessionFactory.getCurrentSession()
                    .merge(detachedInstance);
            log.debug("merge successful");
            return result;
        } catch (RuntimeException re) {
            log.error("merge failed", re);
            throw re;
        }
    }

    public Jogador findById(int id) {
        log.debug("getting Jogador instance with id: " + id);
        try {
            Jogador instance = (Jogador) sessionFactory.getCurrentSession()
                    .get("com.ligadesportiva.data.Jogador", id);
            if (instance == null) {
                log.debug("get successful, no instance found");
            } else {
                log.debug("get successful, instance found");
            }
            return instance;
        } catch (RuntimeException re) {
            log.error("get failed", re);
            throw re;
        }
    }

    public List findByExample(Jogador instance) {
        log.debug("finding Jogador instance by example");
        try {
            List results = sessionFactory.getCurrentSession()
                    .createCriteria("com.ligadesportiva.data.Jogador")
                    .add(Example.create(instance)).list();
            log.debug("find by example successful, result size: "
                    + results.size());
            return results;
        } catch (RuntimeException re) {
            log.error("find by example failed", re);
            throw re;
        }
    }
}

But I want data be saved/read from a postgresql database. Is there any code I should add to this project for make this dao classes interact with my DB?

2
  • 1
    I strongly recommend reading the Hibernate introductory documentation / tutorials. Commented Mar 15, 2014 at 2:41
  • are you facing any error ? Commented Mar 15, 2014 at 5:15

1 Answer 1

1

Just for the record, I am put here some considerations about this subject I learn there few days:

First all, besides the two sets of classes generated by Hibernate (DAO and POJO), I create one anotherm based in this example:

http://www.baeldung.com/hibernate-4-spring

where I configure some options and methods of the Hibernate and point to the file where I place the options for conect to the database (database.properties).

After, I made some changes in the generated classes:

1) In the POJO class, I added the annotation @Entity and @Table for the class (and the second annotation with de parameter value="?", where ? is the name of the table associated to this class). For the attributes, I add the annotation @Column for all of them and the annotation @Id for the attribute related to the primary key.

2) In the DAO classes, I added the annotation @Repository for the class, and the annotation @Transactional for all the methods. Because of this annotation, I may insert in my *-servlet.xml file the follow line:

<tx:annotation-driven transaction-manager="transactionManager"/>

and in the header, this options:

xmlns:tx="http://www.springframework.org/schema/tx"

and inside xsi:schemaLocation:

http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd.

Also, the atribute sessionFactory was annotated with @Autowired, the association was removed, and this methos was added:

protected Session getCurrentSession() {
    return sessionFactory.getCurrentSession();
}

For use of this class to handle the queries to database, I add them as atributes of the controller, always informing the annotation @Autowired.

Inside each method of the controller, I use the classes as this examples:

read data

Usuario novo = usuario.findById(this.getId_usuario());

save data

Sessao nova = new Sessao(novo, 0);
sessao.persist(nova);
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.