日期:2014-05-19  浏览次数:20778 次

关于dao中处理异常的问题
我的程序用了hibernate框架,在写dao中的每一个方法中都要用到hibernate,而每一次用到hibernate的时候都要捕获异常,例如:
Java code

public static void save(User user) {
    Session session = null;
    Transaction transaction = null;
    try {
        session = HibernateUtils.getSession();
        transaction = session.beginTransaction();

        session.save(user);

        transaction.commit();
    } catch (Exception e) {
        e.printStackTrace();
        if (transaction != null) {
            transaction.rollback();
        }
    } finally {
        HibernateUtils.closeSession(session);
    }
}

public static User get(String id) {
    if (id == null || id.length() == 0) {
        return null;
    }
    Session session = null;
    Transaction transaction = null;
    User user = null;
    try {
        session = HibernateUtils.getSession();
        transaction = session.beginTransaction();

        user = (User) session.get(User.class, id);

        transaction.commit();
    } catch (Exception e) {
        e.printStackTrace();
        if (transaction != null) {
            transaction.rollback();
        }
    } finally {
        HibernateUtils.closeSession(session);
    }
    return user;
}



不知道能不能处理一下,不要每次都写这些异常捕获的句子,而又能处理这些异常?

------解决方案--------------------
不用表态方法, 写个模板的设计模式 的类, 
把 这些异常处理放到某个方法中,

可以看下 spring 的 与数据库打交道的 template 类
------解决方案--------------------
楼主写的这些程序 都还是学习阶段的一些测试程序 ,单单都是为学习hibernate这个框架的程序
如果你不写这些异常可以 就使用throws关键字把他抛给hibernate处理 
如果你学习了spring以后 spring整合了hibernate框架以后 dao层的代码就没必要这么麻烦了
直接用spring给你提供的模板就行了
比如 添加一个用户
public void addUser(User user){
 getHibernateTemplate().save(User);
}
就OK了 !就这么简单