`
penghao122
  • 浏览: 363947 次
  • 性别: Icon_minigender_1
  • 来自: 广东珠海
社区版块
存档分类
最新评论

hibernate 全面学习【hibernate session学习】

阅读更多
测试对象的生命周期:

Junit简介:
  * 编写类XXXXTest,需要继承TestCase
  * 编写单元测试方法,测试方法必须以test开头,测试方法不能含有参数和返回值,如:
    public void testHello() {
  * 最好单独建立source目录存放测试类

  理解通过session接口进行CRUD的基本操作方法。    
 
  get和load的区别?
 
  Transient对象具有的特征:
  * 不处于session缓存中,不被任何一个session实例关联
  * 在数据库中没有相应的记录
 
  persistent对象具有的特征:
  * 位于一个Session的缓存中,持久对象总是和一个session实例关联
  * 持久对象和数据库中的记录对应
  * 持久对象的变化会自动同步到数据库
 
  detached对象具有的特征:
  * 不再位于session的缓存中,不被session关联
  * detached对象是由persistent对象转变过来的,因此数据库中会存在一条记录与之对应
 
    
        
   

package com.bjsxt.hibernate;

import java.util.Date;

import org.hibernate.Session;

import junit.framework.TestCase;

public class SessionTest extends TestCase {
	
	
	public void testSaveData() {
		Session session = null;
		
		//Transient对象
		User user = new User();
		try {
			//得到session
			session = HibernateUtils.getSession();
			
			//开启事务
			session.beginTransaction();
			
			user.setName("张三");
			user.setPassword("123");
			user.setCreateTime(new Date());
			user.setExpireTime(new Date());
			
			//persistent对象
			session.save(user);
			
			//persistent状态的对象的属性发生的改变,Hibernate会自动和数据库同步
			user.setName("李四1");
				
			session.getTransaction().commit();
			
		}catch(Exception e) {
			e.printStackTrace();
			session.getTransaction().rollback();
		}finally {
			HibernateUtils.closeSession(session);
		}
		
		//detached对象
		user.setName("王五1");
		try {
			session = HibernateUtils.getSession();
			session.beginTransaction();
			//persistent对象
			session.update(user);
			
			session.getTransaction().commit();
		}catch(Exception e) {
			e.printStackTrace();
			session.getTransaction().rollback();
		}finally {
			HibernateUtils.closeSession(session);
		}
	}
	
	public void testReadByGetMethod() {
		Session session = null;
		try {
			session = HibernateUtils.getSession();
			session.beginTransaction();
			
			//get会马上发出sql进行执行查询
			User user = (User)session.get(User.class, "4028808114163acb0114163b35ac0001");
			System.out.println("user name=" + user.getName());
			
			//此时为persistent对象,所以可以自动同步到数据库中
			user.setName("王二");
			session.getTransaction().commit();
		}catch(Exception e) {
			e.printStackTrace();
			session.getTransaction().rollback();
		}
		finally {
			HibernateUtils.closeSession(session);
		}
	}
	
	public void testReadByLoadMethod() {
		Session session = null;
		try {
			session = HibernateUtils.getSession();
			session.beginTransaction();
			
			//load方法实现了Lazy(延迟加载或懒加载),所以不会马上发出sql
			//只有真正使用时才会发出sql,Lazy是hibernate的重要特性
			User user = (User)session.load(User.class, "4028808114163acb0114163b35ac0001");
			
			System.out.println("user name=" + user.getName());
			
			System.out.println("password=" + user.getPassword());
			
			//此时为persistent对象,所以可以自动同步到数据库中
			user.setName("王三");
			session.getTransaction().commit();
		}catch(Exception e) {
			e.printStackTrace();
			session.getTransaction().rollback();
		}
		finally {
			HibernateUtils.closeSession(session);
		}		
	}
	
	public void testUpdate() {
		Session session = null;
		try {
			session = HibernateUtils.getSession();
			session.beginTransaction();
			
			//此时为Transient对象
			User user = new User();
			user.setId("4028808114163acb0114163b35ac0001");
			user.setName("abc");
			session.update(user);
			
			//此时为persistent对象
			
			session.getTransaction().commit();
		}catch(Exception e) {
			e.printStackTrace();
			session.getTransaction().rollback();
		}
		finally {
			HibernateUtils.closeSession(session);
		}	
		
	}
	
	public void testDelete() {
		Session session = null;
		try {
			session = HibernateUtils.getSession();
			session.beginTransaction();
			
			//此时为Transient对象
			User user = new User();
			user.setId("4028808114163acb0114163b35ac0001");
			session.delete(user);
			session.getTransaction().commit();
			
			
		}catch(Exception e) {
			e.printStackTrace();
			session.getTransaction().rollback();
		}
		finally {
			HibernateUtils.closeSession(session);
		}	
		
		//此时为Transient对象
	}
	
}
分享到:
评论

相关推荐

    hibernate和session学习

    【hibernate与Session详解】 Hibernate 是一个强大的Java对象关系映射(ORM)框架,它为开发者提供了在Java应用程序中操作数据库...学习并熟练掌握Hibernate和Session,对于提升Java开发的效率和质量有着重要的作用。

    Hibernate-nosession

    然而,在某些特定场景下,我们可能并不需要频繁地打开和关闭Session,这时“Hibernate-nosession”就显得尤为重要。本文将深入探讨Hibernate-nosession的概念、应用场景以及如何在实际代码中实现。 首先,理解什么...

    hibernate学习资料大全

    以上只是压缩包中部分可能包含的知识点,实际学习资料可能包括教程文档、示例代码、实战项目等,通过深入学习和实践,开发者可以全面掌握Hibernate的精髓,并将其应用到实际开发中,提高开发效率,降低维护成本。...

    org.hibernate.HibernateException: No Hibernate Session bound to thread

    Hibernate Session 绑定线程解决方案 在 Java web 开发中, Hibernate 是一个非常流行的 ORM(Object-Relational Mapping)框架,用于将 Java 对象映射到关系数据库中。然而,在使用 Hibernate 进行数据库操作时,...

    Hibernate(session管理)

    本文将深入探讨Hibernate中的核心概念——Session管理。 首先,理解Session在Hibernate中的角色至关重要。Session是Hibernate的主要工作单元,它是应用程序与数据库之间的桥梁。它负责保存、检索和更新Java对象,...

    Hibernate Session释放模式

    在Java的持久化框架Hibernate中,Session对象是与数据库交互的核心组件,它负责管理对象的持久状态。在处理大量数据或者长时间运行的事务时,合理地管理Session的生命周期至关重要,这就涉及到了Hibernate的Session...

    重写hibernate的session简单增删改查

    在Java的持久化框架中,Hibernate是一个非常流行的ORM(对象关系...总的来说,通过这个实践教程,初学者可以深入理解Hibernate的Session工作原理,学习如何自定义Session以适应项目需求,同时掌握基本的数据库操作。

    Hibernate 中文api 等学习资料

    **标题与描述解析** 标题"Hibernate 中文api 等学习资料"暗示了这是一组针对...通过阅读和学习这些资料,开发者可以全面掌握Hibernate框架,并将其应用于实际项目中,提升Java应用的数据访问层开发效率和质量。

    hibernate session生命周期示例

    本示例将深入探讨Hibernate Session的生命周期及其使用,帮助你更好地理解和运用这个强大的工具。 Hibernate Session是Hibernate的核心接口,它是与数据库交互的主要接口。Session对象负责管理实体对象的状态,包括...

    Hibernate学习笔记整理

    Hibernate学习笔记整理 以下是 Hibernate 框架的详细知识点: Hibernate 介绍 Hibernate 是一个 ORM(Object-Relational Mapping)框架,用于将 Java 对象映射到数据库表中。它提供了一个简洁的方式来访问和操作...

    Hibernate学习.pdf

    ### Hibernate学习知识点详解 #### 1. Hibernate简介与安装配置 **标题:** Hibernate学习 **描述:** Hibernate 学习 Hibernate学习.pdf **标签:** Hibernate 学习 Hibernate学习.pdf **知识点详解:** ####...

    hibernate--3.Hibernate数据持久化(通过 Session 操纵对象)

    本篇文章主要关注如何通过Hibernate的Session接口来操纵对象,实现数据的持久化。 首先,我们需要理解Session在Hibernate中的角色。Session是Hibernate的核心接口之一,它负责对象的持久化操作,比如保存、更新、...

    hibernate中session对象的状态详解

    hibernate中session对象的状态详解

    Hibernate学习文档集合

    综上所述,这三份文档全面覆盖了Hibernate的基础到进阶内容,无论是初学者还是经验丰富的开发者,都能从中获益匪浅。通过深入学习和实践,开发者可以熟练掌握Hibernate,提升项目开发效率,减少数据库操作的复杂性,...

    hibernate全套学习课件ppt

    【hibernate全套学习课件ppt】是一套全面讲解Hibernate技术的PPT教程,源自国内知名的计算机教育机构——新华电脑教育集团。Hibernate是Java开发领域中一个极为重要的对象关系映射(ORM)框架,它极大地简化了数据库...

    Hibernate_session_factory_配置.docx

    在Java的持久层框架Hibernate中,SessionFactory是核心组件之一,它是线程安全的,负责创建Session对象,每个Session对应于数据库的一次会话。配置SessionFactory主要是通过Hibernate的配置文件(通常为hibernate....

    Hibernate学习笔记特别详细

    《Hibernate学习笔记特别详细》 Hibernate,作为一款开源的Object-Relational Mapping(ORM)框架,为Java开发者提供了强大的数据库操作支持。它简化了数据库访问的复杂性,使得开发人员可以像操作对象一样操作...

    hibernate入门学习笔记+源码

    **hibernate入门学习笔记+源码** **一、Hibernate简介** Hibernate是一个开源的对象关系映射(ORM)框架,它简化了Java应用与数据库之间的交互。通过提供对象化的数据访问方式,Hibernate消除了传统JDBC代码中的...

    hibernate学习总结文档

    **Hibernate 框架概述** Hibernate 是一个开源的对象关系映射(ORM)框架,它为 Java 开发者提供了一种在 Java 应用程序中管理关系...通过实践和深入学习,你可以更好地利用 Hibernate 实现高效、可靠的数据库应用。

Global site tag (gtag.js) - Google Analytics