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,作为一款开源的Object-Relational Mapping(ORM)框架,为Java开发者提供了强大的数据库操作支持。它简化了数据库访问的复杂性,使得开发人员可以像操作对象一样操作...
ssh练习用+struts+spring+hibernate练习用初步学习
通过以上课程的学习,你应该能够熟练地使用Hibernate 3.3进行数据库操作,包括对象关系映射、配置、事务管理和关系映射。在实践中不断深化理解,将使你在Java持久化领域更加得心应手。记住,理论知识结合实际项目...
以上就是"hibernate学习笔记-01helloworld"涵盖的初步知识,这个简单的示例是进一步深入Hibernate学习的基础。通过这个起点,可以逐步学习到更复杂的持久化操作,如关联映射、级联操作、缓存策略等高级特性。
标题“学习hibernate第二天”表明我们正在探讨的是关于Hibernate框架的初步学习过程,特别是第二天的学习内容,这通常涉及到更深入的理论和技术细节。Hibernate是一个Java语言中的对象关系映射(ORM)框架,它允许...
《Hibernate学习笔记》 Hibernate,一个强大的开源对象关系映射(ORM)框架,极大地简化了Java应用程序对数据库的操作。在本文中,我们将深入探讨Hibernate的核心概念、主要接口、持久对象的生命周期以及查询机制,...
在本篇【Hibernate学习笔记(一)】中,我们将探讨Java开发中的持久化框架——Hibernate。Hibernate是一个强大的ORM(对象关系映射)工具,它允许开发者以面向对象的方式来操作数据库,极大地简化了Java与数据库之间...
《Hibernate 进阶教程》是一本专为对Hibernate有初步了解并希望深入学习的开发者准备的手册。Hibernate作为Java领域中最流行的持久化框架之一,它极大地简化了数据库操作,使得开发者能够更专注于业务逻辑,而非繁琐...
【hibernate学习课件】 Hibernate 是一个开源的Java平台上的对象关系映射(ORM)框架,它使得Java开发者能够方便地将业务对象与数据库进行交互。本课件旨在帮助学习者深入理解Hibernate的核心概念和技术。 1. **...
了解了基本概念后,我们转向query接口的初步学习。Hibernate的Query接口允许我们执行HQL查询,还可以使用参数化查询,避免SQL注入风险。此外,Criteria API也是另一种查询方式,提供了一种无须写HQL的编程式查询,...
在"chapter1"这个子目录中,你可能找到关于Hibernate 2.1的初步教程或示例,这将帮助你了解如何配置项目、创建实体类、设置映射关系、执行基本的CRUD操作等。通过对这些内容的学习,你可以掌握Hibernate的基本用法,...
1. **Hibernate概述**:介绍Hibernate的基本概念,包括它的历史、目标和在Java应用中的地位,以及与JDBC的关系和对比,帮助读者建立对Hibernate的初步认识。 2. **安装与配置**:讲解如何在项目中集成Hibernate,...
3. "hibernate-1" - 这是源代码的第一部分,可能包含Hibernate的初步设置、基本的CRUD操作等入门内容,适合初学者上手。 4. "hibernate-4" - 可能涉及到Hibernate的第四部分,涵盖了一些高级主题,如HQL(Hibernate ...
通过以上步骤,你就成功地完成了使用Hibernate进行数据库操作的初步开发。在实际项目中,你可能需要进一步学习和掌握更多的Hibernate特性,如懒加载、级联操作、事务管理等,以便更高效、灵活地管理数据。同时,理解...
【标题】:“Hibernate4的...以上内容只是对Hibernate4框架的初步介绍,真正的精通还需要结合实际项目进行深入学习和实践。对于源码的探索,可以帮助开发者更深入地理解其内部工作原理,从而更好地利用这个强大的工具。
【标题】"Hibernate之第1解之-hibernate_demo_1" 涉及的主要内容是对Hibernate框架的基础理解和应用,这是Java开发中一个重要的持久化工具。这篇博客可能详细介绍了如何搭建Hibernate开发环境,以及进行初步的数据...
"Ishare_Hibernate" 这个文件名可能是包含一系列关于Hibernate学习资料的压缩包,可能包含笔记文档、示例代码、配置文件等,帮助读者深入学习和实践Hibernate3。 **详细知识点:** 1. **Hibernate概览**:解释什么...
**Hibernate初步配置** Hibernate 是一个开源的 Java 库,它为开发者提供了强大的对象关系映射(ORM)功能,简化了数据库操作。在Java应用程序中,使用Hibernate可以避免编写大量的SQL语句,使得代码更加简洁、可...