You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@struts.apache.org by pirzada rashid <pi...@gmail.com> on 2012/09/14 21:16:39 UTC

DAOImpl for hibernate got few general and specific questions

Hi,

I have CustomerDAOImpl where I am doing CRUD. Few questions.

*Q1 -* Should I declare Session at class level or each method level OR
declare at class level and initialize at each method level?

*Q2 -* When fetching data like in listCustomer, Should I
session.beginTransaction(); and than commit it? . I think on fetch,
transaction shouldn't apply but if I am not atleast
session.beginTransaction(); gives error saying need active transaction.

*Q3 -* I have read that session is expensive and should not close it till
application is running. Where should I close and open it if not using
Spring etc?

*Q4 -* I get *WARNING* Note:
C:\Struts2_HelloWorld\src\com\myapp\dao\CustomerDAOImpl.java uses unchecked
or unsafe operations. Why is that and how to fix this?

*if you answer most of my problems will be clear. Thanks*

*CustomerDAOImpl.java*

package com.myapp.dao;

import com.myapp.model.Customer;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;

import java.util.List;

public class CustomerDAOImpl implements CustomerDAO {

    Session session = HibernateUtil.getFactory().getCurrentSession();
    Transaction tx = null;

    //add the customer
    public void addCustomer(Customer customer) {
        tx = session.beginTransaction();
        try {
            session.save(customer);
            tx.commit();
        } catch (HibernateException e) {
            if (tx != null) tx.rollback();
            e.printStackTrace();
        }
    }

    //return all the customers in list
    public List<Customer> listCustomer() {
        tx = session.beginTransaction();
        return session.createQuery("from Customer").list();
    }
}

*HibernateUtil.java*

package com.myapp.dao;

import org.hibernate.HibernateException;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;

public class HibernateUtil {

    private static SessionFactory factory = getSessionFactory();
    private static ServiceRegistry serviceRegistry;

    private static synchronized SessionFactory getSessionFactory()
throws HibernateException {
        Configuration configuration = new Configuration().configure();
        serviceRegistry = new
ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry();
        return configuration.buildSessionFactory(serviceRegistry);
    }

    public static SessionFactory getFactory() {
        return factory;
    }


}