mewuhua
mewuhua
2009-10-11 13:18

Hibrernate中的Dao

  • hibernate

个位大虾 看看小弟写的 使用Hibernate有没有什么问题 或是需要规范的 谢谢。

先声明个Session

private static Session session;

这个是获得数据库中某个表的所有数据

public List getByAll(String hql){
try{
session = HibernateSessionFactory.getSession();
Query query = session.createQuery(hql);
List list = query.list();
return list;
}catch(Exception e){
e.printStackTrace();
}
return null;
}

这个是获得数据库中单个列的数据

public Object getById(Object o,int id) {
session = HibernateSessionFactory.getSession();
Object obj;
try{
obj = session.get(o.getClass(),new Integer(id));
}catch(Exception e){
obj = new Object();
e.printStackTrace();
}finally{

    }
    return obj;
}

这个是存入数据库中的方法

public void saveExecuteQuery(Object o) {
session = HibernateSessionFactory.getSession();
Transaction tx = session.beginTransaction();
try{
session.save(o);
tx.commit();
}catch(Exception e){
tx.rollback();
e.printStackTrace();
}finally{

    }
}

这个是修改数据库中某个列的值
public void updateExcuteUpdate(String hql) {
session = HibernateSessionFactory.getSession();
Transaction tx = session.beginTransaction();
try{
Query query = session.createQuery(hql);
query.executeUpdate();
tx.commit();
}catch(Exception e){
tx.rollback();
e.printStackTrace();
}finally{

    }

}

删除某条数据
public void deleteExcuteUpdate(String hql) {
session = HibernateSessionFactory.getSession();
Query query = session.createQuery(hql);
Transaction tx = session.beginTransaction();
try{
query.executeUpdate();
tx.commit();
}catch(Exception e){
e.printStackTrace();
tx.rollback();
}finally{

    }

}

手动关闭Session
public void closeSession(){
session.close();
}
[b]问题补充:[/b]
哦,我已经跑起来了。我给了10分吖
还逮也给说说如何改进。
[b]问题补充:[/b]
我对于静态的理解不是很透彻
在这里我写的private static Session session;
开始的时候写的是 private Session session。 但想想了 怕出错
就用static。能不能给我详解一下 为什么不用static 我想的就是用个单列
最好是一个用户一个session 不必每次都实例化一个session
最好能给举例说明一下好处。
[b]问题补充:[/b]
呵呵,我昨天买了本设计模式方面的书,正在努力的研究中... ...

[b]问题补充:[/b]
再弱弱的问一句
session这个时候应该用什么关闭
是session.colse还是HibernateSessionFactory.closeSession()
我准备在所有的方法的
try{
..
..
代码中
..
..
}catch(Exception e){
HibernateSessionFactory.closeSession()
e.printStackTrace();
}

有没有问题

还是这两种关闭的不同

  • 点赞
  • 回答
  • 收藏
  • 复制链接分享

13条回答

为你推荐