`
cakin24
  • 浏览: 1396146 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

[Hibernate单表操作] 单表操作CRUD实例

阅读更多
一 常用方法
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测试结果:

 

抛出异常
  • 大小: 22.5 KB
  • 大小: 21.2 KB
  • 大小: 116.2 KB
  • 大小: 53.4 KB
2
0
分享到:
评论

相关推荐

    Hibernate基本增删改CRUD操作

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

    hibernate单表基本操作实例

    【标题】"Hibernate单表基本操作实例"是一个关于如何使用Hibernate框架进行数据库操作的实践教程。Hibernate是一个流行的Java ORM(对象关系映射)框架,它允许开发者以面向对象的方式处理数据库,而无需直接编写SQL...

    hibernate 简单CRUD操作

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

    Strust2+Hibernate实现CRUD操作网页

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

    Hibernate_单表CRUD 对于单独一个表的增删改查

    对于某个数据库的单独一个表的增删改查...需要配合mysql数据库,由于只有一个表,只需要按照java文件里面的建一个database叫chinasoft,再添一个表就可以看到实例的操作效果了,非常简单,但是功能齐全,适合新手学习。

    Crud订单表操作

    综上所述,"Crud订单表操作"涵盖了数据库基础操作、业务逻辑实现、数据安全与性能优化等多个方面,是理解并实践数据库CRUD操作的重要实例。通过学习和分析这个压缩包中的内容,开发者可以提升在实际项目中的数据库...

    Struts2整合Spring Hibernate的CRUD实例

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

    Hibernate初之单表映射学习例子

    【标题解析】 "Hibernate初之单表映射学习例子" 这个标题表明我们将探讨的是...通过这个“Hibernate初之单表映射学习例子”,初学者可以掌握Hibernate的基本操作,为进一步深入学习和使用Hibernate打下坚实的基础。

    hibernate入门一:单表操作(单对象操作)

    标题"hibernate入门一:单表操作(单对象操作)"表明这篇文章主要介绍的是Hibernate框架的基础使用,特别是针对数据库单表的简单操作,如增删改查,以及如何处理单个数据库对象。描述部分为空,但通常这样的教程会...

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

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

    hibernate入门实例操作步骤

    **hibernate入门实例操作步骤** Hibernate是一款强大的Java对象关系映射(ORM)框架,它极大地简化了数据库操作,使得开发者可以使用Java对象的方式处理数据库事务。本篇将详细介绍Hibernate入门实例的操作步骤,...

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

    当执行CRUD操作时,Hibernate Envers会在后台自动记录这些操作,并将信息保存到相应的审计表中。为了查询历史记录,我们可以使用Envers提供的`AuditReader`接口: ```java import org.hibernate.envers.query....

    Hibernate单表操作实例解析

    在这个实例中,我们将深入理解如何使用 Hibernate 对单表进行基本的操作,包括创建、读取、更新和删除(CRUD)记录。 ### 单一主键 在 Hibernate 中,每个实体类通常都有一个主键,用于唯一标识数据库中的记录。...

    Hibernate实例 oracel数据库

    1. **Hibernate框架**: Hibernate是Java中的一个开源ORM(对象关系映射)框架,它简化了数据库操作,通过将Java对象与数据库表映射,使得开发者可以避免编写大量的SQL语句。 2. **Oracle数据库**: Oracle是企业级的...

    SpringMVC+hibernate实例

    Service层利用Hibernate的Session接口来与数据库进行交互,执行CRUD操作。完成处理后,Service层将结果返回给Controller,Controller再将这些数据传递给View进行渲染,最终返回给客户端。 具体到文件"hitest",这...

    eclipse项目Hibernate实例

    这个"eclipse项目Hibernate实例"提供了一个实践平台,让你能够亲手操作,加深对Hibernate的理解,并提升Java数据库编程技能。通过学习和研究这个项目,你将能够熟练地在Eclipse环境下运用Hibernate进行开发,为实际...

    Struts2和Hibernate3.0一个CRUD实例

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

    hibernate实例连oracle

    标题“hibernate实例连oracle”表明我们正在讨论如何使用Hibernate框架来连接并操作Oracle数据库。Hibernate是一个流行的Java对象关系映射(ORM)工具,它允许开发者使用面向对象的编程方式来处理数据库交互,而无需...

Global site tag (gtag.js) - Google Analytics