`
myclover
  • 浏览: 195133 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Hibernate的CRUD操作实例

阅读更多
实体类User.java

package org.myclover.user;

import java.util.Date;

public class User {
private int userId;
private String userName;
private String userSex;
private String userEmail;
private Date userBirthday;

public int getUserId() {
  return userId;
}

public void setUserId(int userId) {
  this.userId = userId;
}

public String getUserName() {
  return userName;
}

public void setUserName(String userName) {
  this.userName = userName;
}

public String getUserSex() {
  return userSex;
}

public void setUserSex(String userSex) {
  this.userSex = userSex;
}

public String getUserEmail() {
  return userEmail;
}

public void setUserEmail(String userEmail) {
  this.userEmail = userEmail;
}

public Date getUserBirthday() {
  return userBirthday;
}

public void setUserBirthday(Date userBirthday) {
  this.userBirthday = userBirthday;
}
}


类映射文件User.hbm.xml

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="org.myclover.user">
<class name="User" table="t_user">
  <id name="userId" column="user_id">
   <generator class="native"></generator>
  </id>
  <!-- type属性中的类型首字母是小写的 -->
   <property name="userName" type="string" not-null="true" />
   <property name="userSex" type="string" />
   <property name="userEmail" type="string" />
   <property name="userBirthday" type="date" />
</class>
</hibernate-mapping>



CRUD的代码

package org.myclover.user.test;

import java.util.Date;
import java.util.Iterator;
import java.util.List;
import junit.framework.TestCase;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.myclover.user.User;
import org.myclover.util.HibernateUtils;

public class TestUser extends TestCase {
public void testSaveUser() {
  Session session = null;
  Transaction tran = null;
  User user = null;
  try {
   session = HibernateUtils.getSession();//创建session
   tran = session.beginTransaction();//开启事务
   user = new User();
   //Transient状态
   user.setUserName("孙燕姿");
   user.setUserSex("女");
   user.setUserEmail("syz@qq.com");
   user.setUserBirthday(new Date());
   session.save(user);
   //persistent状态,当属性发生改变的时候,hibernate会自动和数据库同步,最后的结果
   //是下面的结果
   //user.setUserName("燕 姿");//相当于update
   //session.update(user);//这个语句有没有效果都一样
   tran.commit();// 提交事务
  } catch (Exception e) {
   e.printStackTrace();
   tran.rollback();//回滚事务
  } finally {
   HibernateUtils.closeSession(session);//关闭session
  }
  //detached状态,hibernate和数据库不同步,数据不能被更改
  user.setUserName("李四");
}

public void testGetUser() {
  Session session = null;
  try {
   session = HibernateUtils.getSession();
   session.beginTransaction();
   //马上发出查询sql,加载User对象
   User user = (User) session.get(User.class, 3);//采用get加载数据,如果数据库中不存在相应的数据,返回null
   System.out.println("userId= " + user.getUserId());
   System.out.println("userName= " + user.getUserName());
   System.out.println("userSex= " + user.getUserSex());
   System.out.println("userEmail= " + user.getUserEmail());
   System.out.println("userBirthday= " + user.getUserBirthday());
   //persistent状态,当属性发生改变的时候,hibernate会自动和数据库同步
   //数据已经被更新,最终数据库里面的值是下面更改过的值
   //user.setUserName("蔡依林");
   session.getTransaction().commit();
  } catch (Exception e) {
   e.printStackTrace();
   session.getTransaction().rollback();
  } finally {
   HibernateUtils.closeSession(session);
  }
}

public void testLoadUser() {
  Session session = null;
  try {
   session = HibernateUtils.getSession();
   session.beginTransaction();
   //不会发出查询sql,因为load方法实现了lazy(懒加载或延迟加载)
   //延迟加载:只有真正使用这个对象的时候,才加载(发出sql语句)
   //hibernate延迟加载实现原理是代理方式
   User user = (User) session.load(User.class, 14);//采用load加载数据,如果数据库中没有相应的数据,那么抛出ObjectNotFoundException
   System.out.println("userId= " + user.getUserId());
   System.out.println("userName= " + user.getUserName());
   System.out.println("userSex= " + user.getUserSex());
   System.out.println("userEmail= " + user.getUserEmail());
   System.out.println("userBirthday= " + user.getUserBirthday());
   //persistent状态,当属性发生改变的时候,hibernate会自动和数据库同步
   //数据已经被更新,最终数据库里面的值是下面更改过的值
   //user.setUserName("陈慧琳");
   session.getTransaction().commit();
  } catch (Exception e) {
   e.printStackTrace();
   session.getTransaction().rollback();
  } finally {
   HibernateUtils.closeSession(session);
  }
}

public void testQueryAllUser() {
  Session session = null;
  try {
   session = HibernateUtils.getSession();
   session.beginTransaction();
   Query query = session.createQuery("from User");
   query.setFirstResult(0);//每页的第一条记录
   query.setMaxResults(4);// 每页显示的记录数目
   List userList = query.list();
   for (Iterator iterator = userList.iterator(); iterator.hasNext();) {
    User user = (User) iterator.next();
    System.out.println("userId= " + user.getUserId());
    System.out.println("userName= " + user.getUserName());
    System.out.println("userSex= " + user.getUserSex());
    System.out.println("userEmail= " + user.getUserEmail());
    System.out.println("userBirthday= " + user.getUserBirthday());
    System.out.println("=======================================");
   }
   session.getTransaction().commit();
  } catch (Exception e) {
   e.printStackTrace();
   session.getTransaction().rollback();
  } finally {
   HibernateUtils.closeSession(session);
  }
}

public void testUpdateUser() {
  Session session = null;
  try {
   session = HibernateUtils.getSession();
   session.beginTransaction();
   //手动构造的detached状态的对象
   User user = new User();
   user.setUserId(15);
   user.setUserName("方方");
   user.setUserEmail("ff@163.com");
   session.update(user);
   session.getTransaction().commit();
  } catch (Exception e) {
   e.printStackTrace();
   session.getTransaction().rollback();
  } finally {
   HibernateUtils.closeSession(session);
  }
}

public void testDeleteUser() {
  Session session = null;
  try {
   session = HibernateUtils.getSession();
   session.beginTransaction();
  /* //手动构造的detached状态的对象
   User user = new User();
   user.setUserName("王五");
   session.delete(user);*/
      User user = (User) session.load(User.class, 15);
   session.delete(user);
   session.getTransaction().commit();
  } catch (Exception e) {
   e.printStackTrace();
   session.getTransaction().rollback();
  } finally {
   HibernateUtils.closeSession(session);
  }
}

public void testDelUser() {
  Session session = null;
  try {
   session = HibernateUtils.getSession();
   session.beginTransaction();
   /*//手动构造的detached状态的对象
   User user = new User();
   user.setUserName("王五");
   session.delete(user);*/
   User user = (User) session.get(User.class, 14);
   session.delete(user);
   session.getTransaction().commit();
  } catch (Exception e) {
   e.printStackTrace();
   session.getTransaction().rollback();
  } finally {
   HibernateUtils.closeSession(session);
  }
}

}

分享到:
评论

相关推荐

    Strust2+Hibernate实现CRUD操作网页

    在这个"Struts2+Hibernate实现CRUD操作网页"项目中,我们能看到开发者如何结合这两个框架来创建一个能够进行创建(Create)、读取(Retrieve)、更新(Update)和删除(Delete)操作的Web应用程序。以下是这个项目中的关键...

    Struts2整合Spring Hibernate的CRUD实例

    在"Struts2整合Spring Hibernate的CRUD实例"中,我们将探讨如何将这三个框架无缝集成,实现对数据库的数据创建(Create)、读取(Read)、更新(Update)和删除(Delete)操作。下面将详细介绍这个实例中的关键知识...

    Hibernate基本增删改CRUD操作

    **Hibernate基本增删改CRUD操作** 在Java开发中,Hibernate是一个非常流行的持久化框架,它简化了数据库操作,使得开发者无需直接编写SQL语句,就能实现对象与关系数据库之间的映射。本教程将深入讲解如何使用...

    hibernate 简单CRUD操作

    在测试类中,你会看到如何实例化SessionFactory,打开Session,进行CRUD操作,最后关闭Session和SessionFactory。这些步骤遵循了Hibernate的事务管理原则,确保了数据库操作的完整性和一致性。 总结来说,Hibernate...

    SSH_CRUD整合实例

    SSH_CRUD整合实例是针对Java Web开发中的三大框架——Struts、Spring和Hibernate进行集成,实现数据的创建(Create)、读取(Read)、更新(Update)和删除(Delete)操作的一个经典案例。这个实例适用于初学者熟悉...

    Hibernate数据库操作实例.zip

    标题"Hibernate数据库操作实例.zip"表明这是一个关于使用Hibernate框架进行数据库操作的实际案例。Hibernate是一个流行的Java对象关系映射(ORM)工具,它允许开发人员使用面向对象的方式来处理数据库交互,而无需...

    一个完整的Spring MVC的CRUD操作实例

    在这个完整的Spring MVC CRUD操作实例中,我们将深入探讨如何使用Spring MVC实现创建(Create)、读取(Retrieve)、更新(Update)和删除(Delete)数据的基本功能。 首先,让我们从项目结构开始。一个典型的Spring MVC...

    struts2 spring 2.5 hibernate3整合 CRUD实例含分页

    struts2 spring 2.5 hibernate3整合 CRUD实例含分页 整合版本struts2 spring 2.5 hibernate3 简单的实现了一个用户的CRUD操作(列表展示有分页版本) 设计到了Validate效验,excel生成下载

    一个Hibernate的简单实例

    除了基本的CRUD操作,Hibernate还支持复杂的查询功能,如JOIN、GROUP BY、HAVING等,可以使用HQL(Hibernate Query Language)或者Criteria API实现。例如,查询所有用户名为"testUser"的用户: ```java String hql...

    Hibernate-CRUD:HibernateCRUD

    本项目"Hibernate-CRUD"显然是一个关于使用Hibernate进行基本数据操作(创建、读取、更新、删除,即CRUD)的学习资源。以下是关于Hibernate CRUD操作的详细知识点: 1. **Hibernate简介**: Hibernate是Java社区中...

    Hibernate+Spring+Struts2+ExtJS开发CRUD功能实例

    在IT行业中,构建Web应用程序是常见的任务,而“Hibernate+Spring+Struts2+ExtJS开发CRUD功能实例”提供了一个完整的解决方案,用于快速开发基于Java的Web应用,特别是涉及数据库操作的CRUD(创建、读取、更新、删除...

    JPA + Hibernate 3 CRUD操作历史审计日志的解决方案

    本文将深入探讨如何在使用JPA和Hibernate时实现CRUD操作的历史审计日志功能。 首先,我们需要理解JPA的实体(Entity)概念,它是与数据库表对应的Java类。为了记录CRUD操作的历史,我们可以在实体类上添加一些特殊...

    Struts2_Spring_Hibernate整合开发实例

    在整合中,Spring会创建SessionFactory,并在需要时为Action类注入Session对象,用于执行CRUD(创建、读取、更新、删除)操作。Hibernate的HQL(Hibernate Query Language)和Criteria API则提供了便捷的查询方式,...

    Hibernate+struts实例学习

    通过上述步骤,我们就完成了一个简单实例的Hibernate配置和映射过程,接下来可以进行具体的CRUD(创建、读取、更新、删除)操作。 #### 知识点小结 - 数据库设计与表创建是学习Hibernate与Struts实例的基础,需要...

    struts2 spring 2.5 hibernate3整合 CRUD实例

    整合版本struts2 spring 2.5 hibernate3 简单的实现了一个用户的CRUD操作 设计到了Validate效验,excel生成下载 不建议下载,这是我自己写的一个测试代码,为以后查资料用的

    Struts2和Hibernate3.0一个CRUD实例

    在“Struts2和Hibernate3.0一个CRUD实例”中,我们将探讨如何使用这两个框架来创建一个完整的创建(Create)、读取(Read)、更新(Update)和删除(Delete)功能的应用。这个实例通常会包含以下几个关键部分: 1. ...

    hibernate,hibernate实例源码

    4. Session操作:使用SessionFactory创建Session对象,通过Session执行CRUD(Create, Read, Update, Delete)操作。 5. 事务处理:在Session中开启和提交事务,确保数据一致性。 6. 查询数据:使用Session的...

    hibernate3实例包

    标题提及的是“hibernate3实例包”,这表明我们将讨论的是关于Hibernate 3的一个实例集合,Hibernate是一个开源的对象关系映射(ORM)框架,它允许Java开发者将数据库操作转换为对对象的操作,从而简化了Java应用...

Global site tag (gtag.js) - Google Analytics