`
elite20130514
  • 浏览: 47896 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

初识hibernate

阅读更多

    今日公司项目开发需要整合hibernate,之前用的是mybatis,啥都别说,学呗,下边是我学习hibernate api后整理的代码,代码比较简单,有不足的地方请指正!这只是一个入门的例子。。。

项目目录:

所用的jar包(每个jar具体的作用这里就不列出来了,可以参http://nopainnogain.iteye.com/blog/761630):

     具体的项目代码请查看附件,这里贴出测试代码,便于讨论问题,注:初学者,代码乱请见谅!

package com.hibernate.demo.test;
import org.hibernate.Session;
import java.util.List;

import java.util.Date;

import com.hibernate.demo.po.Event;
import com.hibernate.demo.util.HibernateUtil;

public class EventManager {
	
	Session session = null;
	public EventManager(){
		session = HibernateUtil.getSessionFactory().getCurrentSession();
	}
	
	public  void testInsert(EventManager mgr){
		mgr.createAndStoreEvent("My Event", new Date());
	}
	@SuppressWarnings("rawtypes")
	public  void testList(EventManager mgr){
		if(true){
		List events = mgr.listEvents();
            for (int i = 0; i < events.size(); i++) {
                Event theEvent = (Event) events.get(i);
                System.out.println("Event: " + theEvent.getTitle() +
                                   " Time: " + theEvent.getDate());
            }
       }
	}
	/**
	 * ---测试load,观察返回的obj---
	 * 如果注释输出obj,则控制台没有输出sql语句(前提hibernate.cfg.xml设置show_sql=true),
	 * 原来,hibernate 使用延迟加载的策略,(默认hibernate.cfg.xml class节点的lazy属性为true),只要对应的对象没有
	 * 被使用,hibernate 瞒天过海告诉你我有这个对象(通过cglib,返回动态构建的一个代理类),其实并没有做任何事情,只有真正想获取对象 的时候,
	 * hibernate才开始做事(访问数据库)。好处:提高性能,只有真正用到的时候才访问数据库,减少内存消耗
	 * 
	 * 如果hibernate 无法取到这个对象,报ObjectNotFoundEcception异常
	 * 
	 * @author apprenctice 
	 */
	public  void testLoad(){
		session.beginTransaction();
		Object obj = session.load(Event.class,new Long(1));
		System.out.println(obj);
//		session.getTransaction().commit();  此处注释掉,commit后自动关闭session
	}
	/**
	 * ---测试get,观察返回的obj---
	 * 如果你运行了这个程序,你会发现,用load输出的obj和get输出的公用同一块内存空间,what's wrong?
	 * 不是说get每次都会访问数据库吗?原来,我在load的时候,(hibernate缓存机制)session里已经有了obj这个对象
	 * 聪明的hibernate还会去数据库取吗?session帮了我们大忙,提高了性能。如果session中有,则直接返回这个对象(其实是个代理)
	 * 
	 * 如果hibernate 无法取到这个对象,返回null
	 * 
	 * @author apprenctice 
	 * 
	 */
	public void testGet(){
		session.beginTransaction();
		Object obj = session.get(Event.class, new Long(1));
		System.out.println(obj);
		session.getTransaction().commit();
	}
	
    public static void main(String[] args) {
    	EventManager mgr = new EventManager();
//      mgr.testInsert(mgr);	//将event保存入数据库,此处需注释hibernate.cfg.xml中的 hbm2ddl.auto
    							//否则,每次显示关闭sessionfactory时都会还原数据库	
//    	mgr.testList(mgr);		//列出所有events	
    	mgr.testLoad();			//测试load
    	mgr.testGet();			//测试get
        HibernateUtil.getSessionFactory().close();
    }

    private void createAndStoreEvent(String title, Date theDate) {
        session.beginTransaction();
        Event theEvent = new Event();
        theEvent.setTitle(title);
        theEvent.setDate(theDate);
        session.save(theEvent);
        session.getTransaction().commit();
    }
    @SuppressWarnings("rawtypes")
    private List listEvents() {
        session.beginTransaction();
        List result = session.createQuery("from Event").list();
        session.getTransaction().commit();
        return result;
    }
}

测试结果:

Hibernate: select event0_.EVENT_ID as EVENT1_0_0_, event0_.EVENT_DATE as EVENT2_0_0_, event0_.EVENT_TITLE as EVENT3_0_0_ from EVENTS event0_ where event0_.EVENT_ID=?

com.hibernate.demo.po.Event@1b33a0e

com.hibernate.demo.po.Event@1b33a0e

代码见附件hibernate3,欢迎初学者与我交流,一同进步!!!同时也欢迎专家多多指教!!!

 

 

  • 大小: 22.5 KB
  • 大小: 30.1 KB
分享到:
评论

相关推荐

    Hibernate(3.6)之初识

    这篇文章将带你初识Hibernate 3.6,了解其基本概念、配置以及如何进行简单的数据操作。 1. **对象关系映射(ORM)**:ORM 是一种编程技术,用于将关系数据库的数据映射到面向对象的模型中。通过ORM,开发人员可以...

    hibernate权威整理文档!

    二、初识Hibernate 1. Hibernate环境搭建 要开始使用Hibernate,首先需要下载Hibernate的开发包(如3.6.10版本)以及相关的依赖库,包括Slf4j和Log4j。将必要的jar包添加到项目构建路径中,包括Hibernate核心库、...

    beginning hibernate 源代码

    《初识Hibernate源码》是针对Java开发人员深入理解Hibernate框架的一款学习资源。Hibernate作为一款强大的对象关系映射(ORM)框架,它极大地简化了数据库操作,使得开发者能够以面向对象的方式处理数据。源码分析有...

    hibernatetools-Update-4.1.1.zip

    《Hibernate Tools 4.1.1:提升数据库与对象映射的效率》 Hibernate Tools是...无论你是初识Hibernate的新手还是经验丰富的老手,这个工具都能为你的开发工作带来实质性的帮助,降低项目复杂度,提升开发速度。

    Beginning Hibernate For Hibernate 5 (4th Edition) + Source Code

    《初识Hibernate:针对Hibernate 5的指南》(第四版)是专为深入理解Hibernate ORM框架而编写的一本详尽教程。这本书不仅提供了全面的理论知识,还包含了配套的源代码,使得读者能够通过实践更好地掌握Hibernate的...

    深入浅出Hibernate

    总之,《深入浅出Hibernate》是一本全面而深入的Hibernate教程,它将带领读者从初识Hibernate到精通使用,是Java开发者的宝贵学习资料。通过阅读本书,你将能够熟练掌握Hibernate框架,提升数据库操作的效率,更好地...

    beginning.hibernate.from.novice.to.professional

    《初识Hibernate:从新手到专业》是一本深入浅出介绍Hibernate框架的书籍,适合对Java编程有一定基础但对Hibernate不熟悉的读者。Hibernate是Java领域中广泛应用的对象关系映射(ORM)框架,它极大地简化了数据库...

    hibernate 详解

    - "hibernate_day02_pm.zip"可能包含了初识Hibernate的基础知识,如环境搭建、基本操作等。 - "hibernate_day03_pm.zip"可能涉及到SessionFactory和Session的使用,以及实体类的创建。 - "hibernate_day04_pm.zip...

    HIBERNATE - 符合Java习惯的关系数据库持久化.doc

    总体而言,《Hibernate - 符合Java习惯的关系数据库持久化》为Java后端开发人员提供了一套全面的指南,涵盖了从初识Hibernate到高级特性的所有关键点,对于希望掌握和使用Hibernate进行数据库操作的开发者来说,是一...

    hibernate开发文档

    1. **初识Hibernate**:这部分介绍Hibernate的基本概念,包括它在Java应用程序中的作用,以及如何通过配置文件(如hibernate.cfg.xml)来设置数据源和连接参数。文档可能还涉及了SessionFactory和Session的创建与...

    hibernate参考手册

    一、引言与初识Hibernate 1. **引言**:本手册旨在提供Hibernate框架的全面指南,适合初学者和有经验的开发者使用。Hibernate是一个开源的对象关系映射(ORM)框架,用于Java应用程序与数据库交互。 2. **第一部分...

    Hibernate之API初识及增删改查实现案例hibernate003

    **标题:“Hibernate之API初识及增删改查实现案例hibernate003”** 在Java开发中,Hibernate是一个非常流行的持久化框架,它简化了数据库操作,提供了对象关系映射(ORM)功能,使得开发者可以使用面向对象的方式来...

    BeginningHibernate_英文版

    《初识Hibernate:深入浅出的Java ORM框架指南》 Hibernate是Java开发中广泛使用的对象关系映射(ORM)框架,它为Java开发者提供了一种高效、便捷的方式来管理数据库操作,将复杂的SQL语句和数据库交互转化为面向...

    Java_Web程序设计教程_范立峰第8章习题答案

    本章节主要介绍了初识Hibernate框架的相关知识点。 1. Hibernate框架简介 Hibernate是一个对象关系映射(ORM)框架,它允许Java开发者使用面向对象的方式来操作数据库。它通过XML配置文件或注解将Java类与数据库表...

    hibernate第一个hibernate

    《Hibernate入门:初识与实践》 在Java开发领域,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。本教程将带领初学者深入理解Hibernate的第一个项目,帮助你快速入门并掌握其核心概念。...

    hibernate-examples:简单的Hibernate示例

    **初识Hibernate示例** 在`hibernate-examples-master`这个项目中,可以看到一系列关于Hibernate基础操作的示例。这些示例可能包括了实体类的定义、配置文件的设置、以及如何在Java代码中进行CRUD操作的演示。通过...

Global site tag (gtag.js) - Google Analytics