`

Hibernate的一些基本知识

阅读更多

一、Hibernate开发流程三种模式:

1。 由Domain Object (领域对象)—>Mapping(映射文件)—>DB (映射文件)(官方推荐的开发流程)

我的第一个hibernate实例就是按这种模式来开发的。

2。 由DB开始,用工具生成Mapping和Domain Object(这种开发模式较多)

3。 由映射文件开始。

在具体开发时,可以根据需要选择适合的开发模式。

 

二。 Domain  Object(POJO)类的一些限制

1。 默认的构造方法(即无参构造方法)必须有.(因为hibernate在创建实体对象时用到了java反射机制)(The no-argument constructor is a requirement for all persistent classes;Hibernate has to create objects for you, using Java Reflection.)

2。 标识符Id(主键)可选

3。 非final的,对hibernate懒加载有影响(可选).(因为一个类有final修饰时就不能再被继承,而懒加载的一些特性需要继承实体类来实现).

标准的POJO类如下:(来自Hibernate Reference)

package org.hibernate.tutorial.domain;
import java.util.Date;
public class Event {
private Long id;
private String title;
private Date date;
//无参构造方法
public Event() {}
public Long getId() {
return id;
}
private void setId(Long id) {
this.id = id;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
}

 三、*.hbm.xml配置文件作用说明

   *.hbm.xml配置文件就是用于说明实体对象与哪个数据库表中的记录相对应,以及实体对象中的各个属性分别对应表中的哪一列。不同性质的属性(例如主键和普通属性)用不同的标签来映射。如果实体对象中的某个属性不需要存储在数据库中,那么在*.hbm.xml配置文件就不需要配置这个属性。

四、HibernateUtil工具类

我经常使用的一个HibernateUtil工具类代码如下所示:

public final class HibernateUtil {
	private static SessionFactory sessionFactory;
	private static ThreadLocal session = new ThreadLocal();

 //防止外部创建新的HibernateUtil对象。其实是实现单例模式。
	private HibernateUtil() {
	}
   //让此段代码只在java虚拟机加载此类时执行一次。因为这是一段相当耗时的操作。
 static {
		//读取hibernate.cfg.xml配置文件,如果你的配置文件不使用默认的hibernate.cfg.xml时,
		//只需在cfg.configure("fileName")就可以了。fileName为你指定的hibernate配置文件的文件名。
              // configure()方法的原代码如下 :
          /**
	 * Use the mappings and properties specified in an application
	 * resource named <tt>hibernate.cfg.xml</tt>.
	 */
	 //public Configuration configure() throws HibernateException {
		//configure( "/hibernate.cfg.xml" );
		//return this;
	//}
 Configuration cfg = new Configuration();
		cfg.configure();
		sessionFactory = cfg.buildSessionFactory();
	}

	public static Session getThreadLocalSession() {
		Session s = (Session) session.get();
		if (s == null) {
			s = getSession();
			session.set(s);
		}
		return s;
	}

	public static void closeSession() {
		Session s = (Session) session.get();
		if (s != null) {
			s.close();
			session.set(null);
		}
	}

	public static SessionFactory getSessionFactory() {
		return sessionFactory;
	}

	public static Session getSession() {
		return sessionFactory.openSession();
	}

//增加对象
	public static void add(Object entity) {
		Session s = null;
		Transaction tx = null;
		try {
			s = HibernateUtil.getSession();
			tx = s.beginTransaction();
			s.save(entity);
			tx.commit();
		} catch(HibernateException e){
                        if(tx != null)
                                 tx.rollback();
                          throw e;
                }finally {
			if (s != null)
				s.close();
		}
	}

//更新对象
 public static void update(Object entity) {
		Session s = null;
		Transaction tx = null;
		try {
			s = HibernateUtil.getSession();
			tx = s.beginTransaction();
			s.update(entity);
			tx.commit();
		} catch(HibernateException e){
                        if(tx != null)
                                 tx.rollback();
                          throw e;
                }finally {
			if (s != null)
				s.close();
		}
	}

//删除对象
 public static void delete(Object entity) {
		Session s = null;
		Transaction tx = null;
		try {
			s = HibernateUtil.getSession();
			tx = s.beginTransaction();
			s.delete(entity);
			tx.commit();
		} catch(HibernateException e){
                        if(tx != null)
                                 tx.rollback();
                          throw e;
                }finally {
			if (s != null)
				s.close();
		}
	}

//获取对象
 public static Object get(Class clazz, Serializable id) {
		Session s = null;
		try {
			s = HibernateUtil.getSession();
			Object obj = s.get(clazz, id);
			return obj;
		} finally {
			if (s != null)
				s.close();
		}
	}
}
分享到:
评论

相关推荐

    hibernate基本知识点

    hibernate基本知识点,里面有关于hibernate的配置说明,hibernate的讲解

    StrutsSpringHibernate基本知识

    StrutsSpringHibernate基本知识,清楚易懂

    hibernate基本架构

    文档阐述了hibernate基本架构的使用,可以作为hibernate学习的基础知识

    hibernate4知识点及配置说明

    hibernate4基本知识点,常见问题解决方案,基本配置注意事项

    最新版本的Struts2+Spring4+Hibernate4框架整合

    同时使用了Struts2、Spring4、Hibernate4、log4j、slf4j、junit4、ehcache等库或框架,搭建一个最基本的项目原型。 三、 三大框架最新版本下载:截止2014-10-01 Struts2.3.6:发布于2014-05-03,目前的最新版本。...

    Struts+Spring+Hibernate开发实例 (SSH整合)

    本文并不想介绍Struts,Spring,Hibernate的原理系统架构等,本文地目的是通过一...以及那些已经了解Struts,Spring,Hibernate的基本概念,但是还没有亲身在较复杂的项目中体验Struts+Spring+Hibernate的开发人员。

    Hibernate介绍ppt

    介绍很全的 Hibernate PPT,基本上知识点涉及很全

    Hibernate3开发.pdf

    系统学习Hibernate3的开发知识,循序渐进 第一章:Hibernate入门 包括:是什么、ORMapping原理、能干什么、有什么、怎么做(做什么) ... 包括:分增删改查的操作说明Hibernate基本的实现原理 第八章:最佳实践

    Hibernate实战(第2版 中文高清版)

    第一部分 从Hibernate和EJB 3.0开始  第1章 理解对象/关系持久化   1.1 什么是持久化   1.1.1 关系数据库   1.1.2 理解SQL   1.1.3 在Java中使用SQL  ...附录A SQL基础知识  附录B 映射快速参考

    Struts,Hibernate,Spring集成开发宝典.pdf

    《Struts Hibernate Spring集成开发宝典》以Struts,Hibernate,Spring为核心详细地讲解了这三个组件的基础知识和基本使用方法,并通过一系列集成开发实例讲解了这三个组件在J2EE项目中的应用。《Struts Hibernate ...

    spring4.1.6+hibernate4.3.9+struts2.3.20整合

    一、 项目名称:ssh 项目原型:Struts2.3.20 + Spring4.1.6 + Hibernate4.3.9 ...同时使用了Struts2、Spring4、Hibernate4、log4j、slf4j、junit4、ehcache等库或框架,搭建一个最基本的项目原型。

    Struts+Spring+Hibernate之选课系统

    一 介绍 本文并不想介绍Struts,Spring,Hibernate的原理系统架构等,本文的目的...以及那些已经了解Struts,Spring,Hibernate的基本概念,但是还没有亲身在较复杂的项目中体验Struts+Spring+Hibernate的开发人员。

    疯狂Ajax讲义:Prototype/jQuery+DWR+Spring+Hibernate整合开发(part01)

    《疯狂Ajax讲义:Prototype/jQuery+DWR+Spring+Hibernate整合开发》是《基于J2EE的Ajax...第9章以后的内容则需要掌握Spring、Hibernate等Java EE知识,建议先认真阅读疯狂Java体系的《轻量级Java EE企业应用实战》一书。

    Hibernate3的帮助文档

    自己也是刚接触hibernate 蛮适合新手 而且含盖了hibernate的基本的知识....

    hibernate应用开发完全手册源码(5-16)

    Hibernate的环境搭建及使用Hibernate时必须掌握的基本技术等基础知识;在Hibernate中映射关联关系、事务应用、检索策略、映射值类型集合等高级应用;小型网站或应用程序的开发思路、方法和过程;基于Struts+...

    Struts+hibernate含金量很高的例子

    从此,你就会用hibernate进行基本操作了。并且程序中不再有sql语句,实现了很好的封装. 里面还有个文档: 讲解hibernate基础的 1. 什么是hibernate? 2. hibernate的知识内容 3. 什么是对象持久化?对象持久化有...

    struts2 spring hibernate框架技术与项目实战 光盘源码

    详细讲解了S2SH框架技术的基本知识和使用方法,从Eclipse开发平台、JSP、Servlet等基础知识讲起,由浅入深,重点介绍了当前流行的三个轻量级开源框架:Struts2、Spring和Hibemate.

    网上订餐系统(struts+spring+hibernate).rar

    本人严格执行需求分析,概要设计,详细设计与编码以及系统设计等设计步骤来完成该系统,并且在系统开发过程中结合理论知识与开发技术,完成了网上订餐系统平台的构建,实现预期的网上订餐的基本功能。

    Struts Hibernate Spring集成开发宝典 源码

    《Struts Hibernate Spring集成开发宝典》以Struts,Hibernate,Spring为核心详细地讲解了这三个组件的基础知识和基本使用方法,并通过一系列集成开发实例讲解了这三个组件在J2EE项目中的应用。《Struts Hibernate ...

    Hibernate_JPA

    关于Hibernate的基本知识,有关关联映射,二级缓存,一对多,多对一,HQL查询等等.

Global site tag (gtag.js) - Google Analytics