Hibernate dao初学体会

package com.yiyao.dao.impl;

import java.io.Serializable;
import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.Transaction;

import com.yiyao.HibernateSessionFactory;
import com.yiyao.dao.BaseDao;

public class BaseDaoImpl implements BaseDao{
 /**
  注意:1、 下面getObject时,用load是不行了,会出现错误session 已经close (session.load(clazz,id)),而是要用get.
  2、应用HibernateSessionFactory.closeSession();来代替session.close();因为dao中的一个方法直接用session.close()后,
      运行dao中的另一个方法时,会出现Not able to obtain connection或session is closed的错误.
  */
 
 
 // 根据id返回某个持久化类
 public Object getObject(Class clazz, Serializable id) {
  //注意:下面用load是不行了,会出现错误session 已经close (session.load(clazz,id))
     Session session = HibernateSessionFactory.currentSession();
        Object obj = session.get(clazz,id);// get直接返回实体类,load返回是代理类
     //注意:要用HibernateSessionFactory.closeSession()代替session.close(),不然会出现Not able to obtain connection或session is closed等错误.
        HibernateSessionFactory.closeSession(); 
  return obj;
 }

 //返回全部物品
 public List getObjects(Class clazz) {
  Session session = HibernateSessionFactory.currentSession();
  Criteria criterial = session.createCriteria(clazz);
  List list = criterial.list();
        HibernateSessionFactory.closeSession(); 
  return list;
 }

 //删除某个持久化类 
 public void removeObject(Class clazz, Serializable id) {
  Session session = HibernateSessionFactory.currentSession();
  Transaction tx = session.beginTransaction();
  Object obj = session.load(clazz,id); //这里load和get都可以!
     session.delete(obj);     
  tx.commit();
     HibernateSessionFactory.closeSession(); 
  System.out.println("删除成功!");
  
 }
 
   // 保存持久化类
 public void savaObject(Object obj) {
  Session session = HibernateSessionFactory.currentSession();
  Transaction tx = session.beginTransaction();
  session.save(obj);
  tx.commit();
  //注意要用HibernateSessionFactory.closeSession()代替session.close(),不然会出现Not able to obtain connection或session is closed等错误.
        HibernateSessionFactory.closeSession(); 
  
 }

 
}
 

下面是另一个具体的类,  上面的类相当于HiberanteDaoSupport类:

package com.yiyao.dao.impl;

import java.util.ArrayList;
import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.Session;

import com.yiyao.HibernateSessionFactory;
import com.yiyao.dao.UserDao;
import com.yiyao.model.Userinfo;

public class UserDaoImpl extends BaseDaoImpl implements UserDao{

 public void deleteUser(int id) {
  this.removeObject(Userinfo.class,id);
  
 }

 public void deleteUser(Userinfo user) {
  this.removeObject(Userinfo.class,user.getId());
 }

 public List getAllUsers() {  
  return getObjects(Userinfo.class);
 }

 public Userinfo getUser(int id) {
  return (Userinfo)getObject(Userinfo.class,id);
 }

 public void saveUser(Userinfo user) {
  savaObject(user);
  
 }
 
 //返回分页记录
 public List getUsersList(int pageNo,int pageSize){
 
  Session session = HibernateSessionFactory.currentSession();
  Criteria criteria = session.createCriteria(Userinfo.class);
  criteria.setMaxResults(pageSize);
  //criteria.setFirstResult((pageNo-1)*pageSize+1);//它是从1开始的
  criteria.setFirstResult((pageNo-1)*pageSize);  //它是从0开始的,所以要减1
  List list = criteria.list();
  return list;
 }

 
 
 
 public static void main(String[] arg){
 
  UserDaoImpl userDao = null;
  userDao = new UserDaoImpl();
  Userinfo  user = userDao.getUser(3);
  System.out.println(user.getUsername());
  System.out.println(user.getUserpwd());
  
 }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值