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());
}
}
分享到:
相关推荐
在J2EE应用程序开发中,使用Struts、DAO(数据访问对象)模式和Hibernate框架的组合是一种常见的做法,尤其在构建MVC(模型-视图-控制器)架构的应用程序时。这个实例提供了一个完整的模板,展示了如何将这些技术...
总的来说,这个练习项目提供了一个基础的示例,帮助初学者理解如何将JSF、Seam和Hibernate这三个强大的技术结合起来,构建一个简单的数据管理应用。通过实践,学习者可以深入理解这些技术的工作原理以及它们在实际...
总的来说,"DAO 入门实例"结合Hibernate,为初学者提供了一个了解和实践数据库操作的好平台。通过学习和运行"Hibernate.demo",你可以掌握如何使用DAO模式与Hibernate进行数据库交互,进一步提升你的Java开发能力。
【Hibernate入门案例源码】是针对初学者设计的一份教程,旨在帮助理解并掌握Java持久化框架Hibernate的基础应用。Hibernate是一个强大的ORM(对象关系映射)框架,它简化了数据库与Java对象之间的交互,使开发者可以...
这个压缩包提供了一个简单的入门项目,帮助初学者理解如何使用Hibernate框架。通过这个例子,我们可以深入学习Hibernate的核心功能和配置。 【描述】中提到的关键知识点包括: 1. **Hibernate框架**:Hibernate是...
通过研究这个项目,开发者可以学习到如何配置Hibernate,如何创建和使用实体类,如何编写DAO,以及如何在Web环境中整合这些组件。同时,也可以了解如何设计和实现一个简单的留言板应用,这对于提升Java Web开发技能...
本教程将带领初学者深入理解Hibernate的第一个项目,帮助你快速入门并掌握其核心概念。 1. Hibernate概述: Hibernate是一个开源的Java库,它提供了一种在Java应用中持久化数据的方式,使得开发者无需编写大量的...
这个例子特别适合初学者,旨在帮助他们快速理解和入门Hibernate框架。 **标签关键词:“hibernate”**:Hibernate是一个流行的Java ORM(对象关系映射)框架,它允许开发者使用面向对象的方式来操作数据库,避免了...
5. 整合Hibernate和Spring:通过Spring的Hibernate支持,可以将SessionFactory注入到Service或DAO中,简化数据库操作。 在提供的文件列表中,"个人简历.doc"可能是开发者自己的个人信息文档,与SSH实例本身关系不大...
【hibernate简介】 Hibernate是一个开源的...这个项目为初学者提供了实战经验,让他们更好地理解和运用Hibernate框架。通过此项目,开发者不仅可以熟悉Hibernate的基本操作,还能学习如何构建一个简单的Web应用程序。
3. **DAO(Data Access Object)**:DAO 类是与数据库交互的接口,它们使用 Hibernate 提供的方法执行CRUD(创建、读取、更新和删除)操作。 4. **Service**:业务逻辑层,通常由 Spring 管理,调用 DAO 来完成具体...
这个"springmvc spring hibernate整合Demo"旨在帮助初学者理解如何将这三个框架协同工作,实现一个完整的CRUD(创建、读取、更新、删除)应用。 Spring MVC 是 Spring 框架的一部分,专门用于构建Web应用程序。它...
本案例主要涉及的是Spring与Hibernate的整合,以及如何利用它们来向数据库添加数据,这是一典型的初学者入门教程。下面将详细解释这两个框架整合的关键步骤以及如何进行数据库操作。 1. **环境配置**:首先,你需要...
Struts2、Spring3.0和Hibernate3.3是经典的Java Web开发框架组合,它们各自在应用程序的不同层面提供了强大的功能。这个练习项目旨在帮助初学者理解这三个框架如何协同工作,实现一个基本的登录注册系统。 Struts2...
这些代码将展示如何在Spring中注入Hibernate的SessionFactory,创建DAO,以及如何在Service层调用DAO方法来执行CRUD(Create, Read, Update, Delete)操作。 "教程"表明这些示例不仅是为了展示如何工作,还可能包含...
通过这个项目,初学者能够了解并掌握如何在实际应用中运用Hibernate进行数据库交互。 **一、Hibernate概述** Hibernate是一个开源的对象关系映射(ORM)框架,它允许开发者用Java对象来操作数据库,而无需直接编写...
通过这个项目,初学者可以学习到如何配置Hibernate,创建实体类,编写映射文件,以及如何在DAO中使用Session进行CRUD操作。理解并实践这些基本步骤,将为深入学习Hibernate和其他ORM框架打下坚实基础。
这个实例适合初学者,因为它涵盖了从基础到高级的Spring MVC和Hibernate集成知识。通过注解方式和配置文件结合,你可以更好地理解和掌握这两个框架的协同工作方式,从而提升开发效率和代码质量。实践中,你还可以...
这个简单的整合实例可能只实现了基本的查询功能,为初学者提供了一个快速了解如何在实际项目中集成 Spring MVC 和 Hibernate 的起点。实际项目中,还需要考虑事务管理、错误处理、性能优化等方面的内容。
【描述】"本项目在eclipse下开发,使用java Hibernate模型编程,是很好的学习资料"表明这个项目是基于Eclipse IDE创建的,适合初学者或进阶者学习Hibernate框架。通过这个项目,你可以了解如何在Eclipse中配置...