Hibernate dao初学体会

本文介绍了一个使用Hibernate框架实现的增删改查(CRUD)操作示例。通过具体代码展示了如何在Java应用程序中与数据库交互,包括获取单个对象、获取所有对象列表、删除对象和保存对象的具体实现。

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());

}

}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值