一 常用方法
save
update
delete
get/load(查询单个记录)
二 测试代码
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.sql.Blob;
import java.util.Date;
import org.hibernate.Hibernate;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
//测试类
public class StudentsTest {
private SessionFactory sessionFactory;
private Session session;
private Transaction transaction;
@Before
public void init(){
// 创建配置对象
Configuration config = new Configuration().configure();
//config.addClass(Students.class);
// 创建服务注册对象
ServiceRegistry serviceRegistery = new ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry();
// 创建会话工厂对象
sessionFactory = config.buildSessionFactory(serviceRegistery);
// 创建会话对象
session = sessionFactory.openSession();
// 开启事务
transaction = session.beginTransaction();
}
@After
public void destory(){
// 提交事务
transaction.commit();
// 关闭会话
session.close();
// 关闭会话工厂
sessionFactory.close();
}
@Test
public void testSaveStudents(){
//Students s= new Students(1,"张三丰","男",new Date(),"武当山");
Students s= new Students();
s.setSname("张三丰");
s.setGender("男");
s.setBirthday(new Date());
//s.setAddress("武当山");
Address address = new Address("7232","125674323","湖北");
s.setAddress(address);
session.save(s);
}
@Test
public void testGetStudents()
{
Students s =(Students)session.get(Students.class,1);
System.out.println(s);
}
@Test
public void testLoadStudents()
{
Students s =(Students)session.load(Students.class,1);
System.out.println(s);
}
@Test
public void testUpdateStudents()
{
Students s =(Students)session.load(Students.class,1);
s.setGender("女");
session.update(s);
}
@Test
public void testDeleteStudents()
{
Students s =(Students)session.load(Students.class,1);
session.delete(s);
}
}
三 测试结果
1 get方法测试结果如下
Students [sid=1, sname=张三丰, gender=男, birthday=2017-10-02 09:36:35.0, address=Address@76fe8d1b]
2 load方法测试结果如下
Students [sid=1, sname=张三丰, gender=男, birthday=2017-10-02 09:36:35.0, address=Address@59e9c94]
3 update方法测试结果如下
4 delete方法测试结果如下
四 get与load的区别
1 测试1:是否立即发出SQL语句
1.1 测试代码:
@Test
public void testGetStudents()
{
Students s =(Students)session.get(Students.class,1);
//System.out.println(s);
}
@Test
public void testLoadStudents()
{
Students s =(Students)session.load(Students.class,1);
//System.out.println(s);
}
1.2 测试结果:
testGetStudents会在调试窗口输出下面语句
Hibernate:
select
students0_.SID as SID1_0_0_,
students0_.SNAME as SNAME2_0_0_,
students0_.GENDER as GENDER3_0_0_,
students0_.BIRTHDAY as BIRTHDAY4_0_0_,
students0_.PICTURE as PICTURE5_0_0_,
students0_.POSTCODE as POSTCODE6_0_0_,
students0_.PHOTO as PHOTO7_0_0_,
students0_.ADDRESS as ADDRESS8_0_0_
from
STUDENTS students0_
where
students0_.SID=?
testLoadStudents不会在调试窗口输出结果
1.3 测试说明:
testLoadStudents只有在用的时候才发出SQL语句,是一种懒加载。
2 测试2:get返回对象本身,load返回代理对象
2.1 测试代码:
@Test
public void testGetStudents()
{
Students s =(Students)session.get(Students.class,1);
System.out.println(s.getClass().getName());
//System.out.println(s);
}
@Test
public void testLoadStudents()
{
Students s =(Students)session.load(Students.class,1);
System.out.println(s.getClass().getName());
//System.out.println(s);
}
2.2 测试结果:
get返回结果:
Students
load返回结果:
Students_$$_javassist_0
3 测试3:查询结果为空时区别
3.1 测试代码:
@Test
public void testGetStudents()
{
Students s =(Students)session.get(Students.class,100);
//System.out.println(s.getClass().getName());
System.out.println(s);
}
@Test
public void testLoadStudents()
{
Students s =(Students)session.load(Students.class,100);
//System.out.println(s.getClass().getName());
System.out.println(s);
}
3.2 测试结果:
get测试结果:
null
load测试结果:
抛出异常
相关推荐
**Hibernate基本增删改CRUD操作** 在Java开发中,Hibernate是一个非常流行的持久化框架,它简化了数据库操作,使得开发者无需直接编写SQL语句,就能实现对象与关系数据库之间的映射。本教程将深入讲解如何使用...
【标题】"Hibernate单表基本操作实例"是一个关于如何使用Hibernate框架进行数据库操作的实践教程。Hibernate是一个流行的Java ORM(对象关系映射)框架,它允许开发者以面向对象的方式处理数据库,而无需直接编写SQL...
在测试类中,你会看到如何实例化SessionFactory,打开Session,进行CRUD操作,最后关闭Session和SessionFactory。这些步骤遵循了Hibernate的事务管理原则,确保了数据库操作的完整性和一致性。 总结来说,Hibernate...
在这个"Struts2+Hibernate实现CRUD操作网页"项目中,我们能看到开发者如何结合这两个框架来创建一个能够进行创建(Create)、读取(Retrieve)、更新(Update)和删除(Delete)操作的Web应用程序。以下是这个项目中的关键...
对于某个数据库的单独一个表的增删改查...需要配合mysql数据库,由于只有一个表,只需要按照java文件里面的建一个database叫chinasoft,再添一个表就可以看到实例的操作效果了,非常简单,但是功能齐全,适合新手学习。
综上所述,"Crud订单表操作"涵盖了数据库基础操作、业务逻辑实现、数据安全与性能优化等多个方面,是理解并实践数据库CRUD操作的重要实例。通过学习和分析这个压缩包中的内容,开发者可以提升在实际项目中的数据库...
在"Struts2整合Spring Hibernate的CRUD实例"中,我们将探讨如何将这三个框架无缝集成,实现对数据库的数据创建(Create)、读取(Read)、更新(Update)和删除(Delete)操作。下面将详细介绍这个实例中的关键知识...
【标题解析】 "Hibernate初之单表映射学习例子" 这个标题表明我们将探讨的是...通过这个“Hibernate初之单表映射学习例子”,初学者可以掌握Hibernate的基本操作,为进一步深入学习和使用Hibernate打下坚实的基础。
标题"hibernate入门一:单表操作(单对象操作)"表明这篇文章主要介绍的是Hibernate框架的基础使用,特别是针对数据库单表的简单操作,如增删改查,以及如何处理单个数据库对象。描述部分为空,但通常这样的教程会...
struts2 spring 2.5 hibernate3整合 CRUD实例含分页 整合版本struts2 spring 2.5 hibernate3 简单的实现了一个用户的CRUD操作(列表展示有分页版本) 设计到了Validate效验,excel生成下载
**hibernate入门实例操作步骤** Hibernate是一款强大的Java对象关系映射(ORM)框架,它极大地简化了数据库操作,使得开发者可以使用Java对象的方式处理数据库事务。本篇将详细介绍Hibernate入门实例的操作步骤,...
当执行CRUD操作时,Hibernate Envers会在后台自动记录这些操作,并将信息保存到相应的审计表中。为了查询历史记录,我们可以使用Envers提供的`AuditReader`接口: ```java import org.hibernate.envers.query....
在这个实例中,我们将深入理解如何使用 Hibernate 对单表进行基本的操作,包括创建、读取、更新和删除(CRUD)记录。 ### 单一主键 在 Hibernate 中,每个实体类通常都有一个主键,用于唯一标识数据库中的记录。...
1. **Hibernate框架**: Hibernate是Java中的一个开源ORM(对象关系映射)框架,它简化了数据库操作,通过将Java对象与数据库表映射,使得开发者可以避免编写大量的SQL语句。 2. **Oracle数据库**: Oracle是企业级的...
Service层利用Hibernate的Session接口来与数据库进行交互,执行CRUD操作。完成处理后,Service层将结果返回给Controller,Controller再将这些数据传递给View进行渲染,最终返回给客户端。 具体到文件"hitest",这...
这个"eclipse项目Hibernate实例"提供了一个实践平台,让你能够亲手操作,加深对Hibernate的理解,并提升Java数据库编程技能。通过学习和研究这个项目,你将能够熟练地在Eclipse环境下运用Hibernate进行开发,为实际...
在“Struts2和Hibernate3.0一个CRUD实例”中,我们将探讨如何使用这两个框架来创建一个完整的创建(Create)、读取(Read)、更新(Update)和删除(Delete)功能的应用。这个实例通常会包含以下几个关键部分: 1. ...
标题“hibernate实例连oracle”表明我们正在讨论如何使用Hibernate框架来连接并操作Oracle数据库。Hibernate是一个流行的Java对象关系映射(ORM)工具,它允许开发者使用面向对象的编程方式来处理数据库交互,而无需...