`
OracleX
  • 浏览: 123564 次
  • 性别: Icon_minigender_1
  • 来自: 地球
社区版块
存档分类
最新评论

Hibernate学习之初步使用

阅读更多
package com.test;

import java.util.List;
import com.model.Tuser;
import net.sf.hibernate.HibernateException;
import net.sf.hibernate.Session;
import net.sf.hibernate.SessionFactory;
import net.sf.hibernate.Transaction;
import net.sf.hibernate.cfg.Configuration;
import junit.framework.Assert;
import junit.framework.TestCase;

public class HibernateTest extends TestCase {

	Session session = null;

	/**
	 * setUp方法在TestCase初始化的时候会自动调用 一般用于初始化公用资源 这个方法中用于初始化Hibernate Seesion
	 */
	protected void setUp() {
		try {
			/**
			 * 采用hiberante.properties或者hibernate.cfg.xml配置文件初始化代码的方法
			 * Configuration cfg = new Configuration();
			 * cfg.addClass(Tuser.class);
			 */

			/**
			 * 采用hibernate.cfg.xml配置文件 注意与上面初始化configuration时代差异:
			 * 1.Configuration的初始化方式
			 * 2.xml文件中已经定义了Mapping文件,因此无需再编码导入
			 */
			//-------------------------Configuration基础语义-----------------------------------------
			//Configuration类负责管理Hibernate配置信息。Hibernate运行时需要获取一些底层实现的基本信息,其中关键属性
			//数据库url、数据库用户名、密码、JDBC驱动类、dialect(适配器)
			//Configuration Hibernate会自动在当前的classpath中搜寻hibernate.cfg.xml文件并将其加载至内存中,作为后续操作的基础配置
			//Configuration类一般只有获取SessonFacotry时需要涉及,当SessionFactory实例创建之后,
			//由于配置信息已经由Hibernate绑定在返回的SessionFactory中,因此一般情况下无需再对Configuration进行操作
			//如果不希望使用默认的hibernate.cfg.xml文件作为配置文件,可以指定配置文件名
			//File file=new File("C:\\sample\\myhibernate.cfg.xml");
			//Configuration cofing=new Configuration().configure(file);
			Configuration config = new Configuration().configure();
			//--------------------------SessionFactory基础语义-----------------------------
			//SessionFactory负责创建session实例,可以通过Configuration实例构建SessionFactory
			//Configuration实例config会根据当前的数据库配置信息,构造SessionFactory实例并返回。
			//SessionFactory一旦构造完毕,即被赋予特定的配置信息!
			//也就是说,之后的config的任何改变将不会影响到已经创建的SessionFacotry实例(factory)
			//SessionFactory是线程安全,可由多个线程并发调用
			SessionFactory factory = config.buildSessionFactory();
			//--------------------------Session基础语义-----------------------------------
			//Session是Hibernate持久化操作的基础  session是非线程安全的
			//也就是说一个session实例只可同时有一个线程调用,同一个session实例的多线程并发调用将导致不可预知的错误
			session = factory.openSession();
		} catch (HibernateException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	/**
	 * 与setUP相对应,TestCase执行完毕时,会自动调用tearDown方法 一般用于资源释放
	 * 此方法中用于关闭在setUp方法中打开的Hibernate Session
	 */
	protected void tearDown() {
		try {
			session.close();
		} catch (HibernateException e) {
			e.printStackTrace();
		}
	}

	/**
	 * 对象持久化(Insert)方法 Junit中,以“test”作为前缀的方法为测试方法,将被Junit自动添加到测试计划中
	 */
	public void testInsert() {
		Transaction tran = null;
		try {
			tran = session.beginTransaction();
			Tuser user = new Tuser();
			user.setName("zhangsan");
			session.save(user);
			session.flush();   //把缓存中的数据刷新到数据库
			tran.commit();
			Assert.assertEquals(user.getId().intValue() > 0, true);
		} catch (HibernateException e) {
			e.printStackTrace();
			Assert.fail(e.getMessage());
			if (tran != null) {
				try {
					tran.rollback();
				} catch (HibernateException e1) {
					e1.printStackTrace();
				}
			}
		}
	}

	/**
	 * 对象读取(select)测试
	 */
	public void testSelect() {
		String hql = "from Tuser where name='zhangsan'";
		try {
			@SuppressWarnings("rawtypes")
			List userList = session.createQuery(hql).list();
			Tuser user = (Tuser) userList.get(0);
			Assert.assertEquals(user.getName(), "zhangsan");
		} catch (HibernateException e) {
			e.printStackTrace();
			Assert.fail(e.getMessage());
		}
	}
	
	public void testUserType(){
		try {
			Tuser user=(Tuser) session.load(Tuser.class, 5);
			List list=user.getEmail();
			list.add("saadsd@163.com");
			Transaction tx=session.beginTransaction();
			session.save(user);
			tx.commit();
		} catch (HibernateException e) {
			e.printStackTrace();
		}
	}
}

 

分享到:
评论

相关推荐

    Hibernate学习笔记特别详细

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

    struts+spring+hibernate练习用初步学习

    ssh练习用+struts+spring+hibernate练习用初步学习

    hibernate 3.3学习笔记

    通过以上课程的学习,你应该能够熟练地使用Hibernate 3.3进行数据库操作,包括对象关系映射、配置、事务管理和关系映射。在实践中不断深化理解,将使你在Java持久化领域更加得心应手。记住,理论知识结合实际项目...

    hibernate学习笔记-01helloword

    以上就是"hibernate学习笔记-01helloworld"涵盖的初步知识,这个简单的示例是进一步深入Hibernate学习的基础。通过这个起点,可以逐步学习到更复杂的持久化操作,如关联映射、级联操作、缓存策略等高级特性。

    学习hibernate第二天

    标题“学习hibernate第二天”表明我们正在探讨的是关于Hibernate框架的初步学习过程,特别是第二天的学习内容,这通常涉及到更深入的理论和技术细节。Hibernate是一个Java语言中的对象关系映射(ORM)框架,它允许...

    Hibernate学习笔记(一)代码

    在本篇【Hibernate学习笔记(一)】中,我们将探讨Java开发中的持久化框架——Hibernate。Hibernate是一个强大的ORM(对象关系映射)工具,它允许开发者以面向对象的方式来操作数据库,极大地简化了Java与数据库之间...

    Hibernate 进阶教程

    《Hibernate 进阶教程》是一本专为对Hibernate有初步了解并希望深入学习的开发者准备的手册。Hibernate作为Java领域中最流行的持久化框架之一,它极大地简化了数据库操作,使得开发者能够更专注于业务逻辑,而非繁琐...

    hibernate学习课件

    【hibernate学习课件】 Hibernate 是一个开源的Java平台上的对象关系映射(ORM)框架,它使得Java开发者能够方便地将业务对象与数据库进行交互。本课件旨在帮助学习者深入理解Hibernate的核心概念和技术。 1. **...

    hibernate2.1

    在"chapter1"这个子目录中,你可能找到关于Hibernate 2.1的初步教程或示例,这将帮助你了解如何配置项目、创建实体类、设置映射关系、执行基本的CRUD操作等。通过对这些内容的学习,你可以掌握Hibernate的基本用法,...

    hibernate in action 中文版书籍

    1. **Hibernate概述**:介绍Hibernate的基本概念,包括它的历史、目标和在Java应用中的地位,以及与JDBC的关系和对比,帮助读者建立对Hibernate的初步认识。 2. **安装与配置**:讲解如何在项目中集成Hibernate,...

    26. 尚硅谷_佟刚_Hibernate 课件及源代码

    3. "hibernate-1" - 这是源代码的第一部分,可能包含Hibernate的初步设置、基本的CRUD操作等入门内容,适合初学者上手。 4. "hibernate-4" - 可能涉及到Hibernate的第四部分,涵盖了一些高级主题,如HQL(Hibernate ...

    hibernate开发流程 入门

    通过以上步骤,你就成功地完成了使用Hibernate进行数据库操作的初步开发。在实际项目中,你可能需要进一步学习和掌握更多的Hibernate特性,如懒加载、级联操作、事务管理等,以便更高效、灵活地管理数据。同时,理解...

    Hibernate4的一些总结

    【标题】:“Hibernate4的...以上内容只是对Hibernate4框架的初步介绍,真正的精通还需要结合实际项目进行深入学习和实践。对于源码的探索,可以帮助开发者更深入地理解其内部工作原理,从而更好地利用这个强大的工具。

    Hibernate之第1解之-hibernate_demo_1

    【标题】"Hibernate之第1解之-hibernate_demo_1" 涉及的主要内容是对Hibernate框架的基础理解和应用,这是Java开发中一个重要的持久化工具。这篇博客可能详细介绍了如何搭建Hibernate开发环境,以及进行初步的数据...

    Hibernate3学习笔记(一)-hibernate概述和简单实例入门

    "Ishare_Hibernate" 这个文件名可能是包含一系列关于Hibernate学习资料的压缩包,可能包含笔记文档、示例代码、配置文件等,帮助读者深入学习和实践Hibernate3。 **详细知识点:** 1. **Hibernate概览**:解释什么...

    Hibernate初步配置

    **Hibernate初步配置** Hibernate 是一个开源的 Java 库,它为开发者提供了强大的对象关系映射(ORM)功能,简化了数据库操作。在Java应用程序中,使用Hibernate可以避免编写大量的SQL语句,使得代码更加简洁、可...

Global site tag (gtag.js) - Google Analytics