实体类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);
}
}
}
分享到:
相关推荐
在这个"Struts2+Hibernate实现CRUD操作网页"项目中,我们能看到开发者如何结合这两个框架来创建一个能够进行创建(Create)、读取(Retrieve)、更新(Update)和删除(Delete)操作的Web应用程序。以下是这个项目中的关键...
在"Struts2整合Spring Hibernate的CRUD实例"中,我们将探讨如何将这三个框架无缝集成,实现对数据库的数据创建(Create)、读取(Read)、更新(Update)和删除(Delete)操作。下面将详细介绍这个实例中的关键知识...
**Hibernate基本增删改CRUD操作** 在Java开发中,Hibernate是一个非常流行的持久化框架,它简化了数据库操作,使得开发者无需直接编写SQL语句,就能实现对象与关系数据库之间的映射。本教程将深入讲解如何使用...
在测试类中,你会看到如何实例化SessionFactory,打开Session,进行CRUD操作,最后关闭Session和SessionFactory。这些步骤遵循了Hibernate的事务管理原则,确保了数据库操作的完整性和一致性。 总结来说,Hibernate...
SSH_CRUD整合实例是针对Java Web开发中的三大框架——Struts、Spring和Hibernate进行集成,实现数据的创建(Create)、读取(Read)、更新(Update)和删除(Delete)操作的一个经典案例。这个实例适用于初学者熟悉...
标题"Hibernate数据库操作实例.zip"表明这是一个关于使用Hibernate框架进行数据库操作的实际案例。Hibernate是一个流行的Java对象关系映射(ORM)工具,它允许开发人员使用面向对象的方式来处理数据库交互,而无需...
在这个完整的Spring MVC CRUD操作实例中,我们将深入探讨如何使用Spring MVC实现创建(Create)、读取(Retrieve)、更新(Update)和删除(Delete)数据的基本功能。 首先,让我们从项目结构开始。一个典型的Spring MVC...
struts2 spring 2.5 hibernate3整合 CRUD实例含分页 整合版本struts2 spring 2.5 hibernate3 简单的实现了一个用户的CRUD操作(列表展示有分页版本) 设计到了Validate效验,excel生成下载
除了基本的CRUD操作,Hibernate还支持复杂的查询功能,如JOIN、GROUP BY、HAVING等,可以使用HQL(Hibernate Query Language)或者Criteria API实现。例如,查询所有用户名为"testUser"的用户: ```java String hql...
本项目"Hibernate-CRUD"显然是一个关于使用Hibernate进行基本数据操作(创建、读取、更新、删除,即CRUD)的学习资源。以下是关于Hibernate CRUD操作的详细知识点: 1. **Hibernate简介**: Hibernate是Java社区中...
在IT行业中,构建Web应用程序是常见的任务,而“Hibernate+Spring+Struts2+ExtJS开发CRUD功能实例”提供了一个完整的解决方案,用于快速开发基于Java的Web应用,特别是涉及数据库操作的CRUD(创建、读取、更新、删除...
本文将深入探讨如何在使用JPA和Hibernate时实现CRUD操作的历史审计日志功能。 首先,我们需要理解JPA的实体(Entity)概念,它是与数据库表对应的Java类。为了记录CRUD操作的历史,我们可以在实体类上添加一些特殊...
在整合中,Spring会创建SessionFactory,并在需要时为Action类注入Session对象,用于执行CRUD(创建、读取、更新、删除)操作。Hibernate的HQL(Hibernate Query Language)和Criteria API则提供了便捷的查询方式,...
通过上述步骤,我们就完成了一个简单实例的Hibernate配置和映射过程,接下来可以进行具体的CRUD(创建、读取、更新、删除)操作。 #### 知识点小结 - 数据库设计与表创建是学习Hibernate与Struts实例的基础,需要...
整合版本struts2 spring 2.5 hibernate3 简单的实现了一个用户的CRUD操作 设计到了Validate效验,excel生成下载 不建议下载,这是我自己写的一个测试代码,为以后查资料用的
在“Struts2和Hibernate3.0一个CRUD实例”中,我们将探讨如何使用这两个框架来创建一个完整的创建(Create)、读取(Read)、更新(Update)和删除(Delete)功能的应用。这个实例通常会包含以下几个关键部分: 1. ...
4. Session操作:使用SessionFactory创建Session对象,通过Session执行CRUD(Create, Read, Update, Delete)操作。 5. 事务处理:在Session中开启和提交事务,确保数据一致性。 6. 查询数据:使用Session的...
标题提及的是“hibernate3实例包”,这表明我们将讨论的是关于Hibernate 3的一个实例集合,Hibernate是一个开源的对象关系映射(ORM)框架,它允许Java开发者将数据库操作转换为对对象的操作,从而简化了Java应用...