`

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是一个开源的ORM(Object Relational Mapping,对象关系映射)框架,用于Java应用与关系型数据库之间的交互。它通过使用描述对象和数据库之间映射的元...

    hibernate基本知识点

    ### Hibernate基本知识点详解 #### Hibernate简介 Hibernate是一个开源的对象关系映射(ORM)框架,它为Java应用程序提供了简化的方式去处理数据库操作。通过提供一种面向对象的方法来与关系型数据库进行交互,...

    hibernate基本jar包(数据库是Oracle)

    在“hibernate基本jar包(数据库是Oracle)”中,我们可以推断出这是针对使用Oracle数据库的Hibernate项目所需的基础库集合。这个压缩包很可能是包含了一系列用于搭建Hibernate环境并连接Oracle数据库的JAR文件。以下...

    hibernate主要知识点

    Hibernate 知识点涵盖了许多方面,从基本的 ORM 理念到具体的开发流程、对象限制、工具类使用,再到核心接口的理解。学习 Hibernate,不仅需要理解其工作原理,还要熟练掌握如何配置和使用,以实现高效的数据访问和...

    hibernate hql基本操作

    ### Hibernate HQL 基本操作详解 #### 一、HQL简介 HQL,即Hibernate Query Language,是Hibernate...以上是对给定文件中的“hibernate HQL基本操作”的详细解析,希望能够帮助读者更好地理解和掌握HQL的相关知识点。

    Hibernate Hibernate5 讲义 PDF

    Hibernate是一个开源的对象关系映射(ORM)框架,它封装了JDBC(Java Database ...该讲义涵盖了Hibernate的基本技术、配置方法以及如何开发一个Hibernate程序等重要知识点,为学习者提供了一个实践ORM框架的良好起点。

    Hibernate关键知识点大全

    【Hibernate关键知识点详解】 Hibernate是一款强大的Java持久化框架,它为开发者提供了在关系数据库与对象模型之间进行映射的能力,从而简化了数据访问层的开发。在这个知识点大全中,我们将深入探讨Hibernate的...

    16Hibernate基本API

    ### Hibernate基本API Hibernate是一种流行的Java持久化框架,它为Java应用程序提供了强大的数据持久化能力,特别是对于那些需要频繁与数据库交互的大型企业级应用。Hibernate通过其基本API,使得开发者能够以面向...

    hibernate基本jar包

    这个“hibernate基本jar包”包含了运行Hibernate应用程序所需的核心库,是学习和开发SSH(Struts、Spring、Hibernate)框架的基础。 SSH框架是Java Web开发中的一个经典组合,其中Hibernate负责数据持久化。以下是...

    Beginning Hibernate: For Hibernate 5

    - **新手入门**: 适合初学者快速掌握 Hibernate 的基本原理和使用方法。 #### Hibernate 5 新特性 - **改进的性能**: Hibernate 5 在性能方面进行了优化,包括更高效的缓存管理和查询执行。 - **支持 Java 8**: ...

    StrutsSpringHibernate基本知识

    StrutsSpringHibernate是Java开发中的三个重要框架,它们在构建企业级Web应用中扮演着核心角色。Struts是一个基于MVC设计模式的框架,Spring是一个全面的后端框架,包括依赖注入、AOP、数据库事务管理等,而...

    hibernate实战 英文版

    ### Hibernate实战知识点解析 #### 一、书籍简介与评价概览 《Hibernate实战》是一部...通过本书的学习,不仅可以快速掌握Hibernate的基本用法,还能深入了解其背后的原理和最佳实践,从而更好地应用于实际项目中。

    hibernate一些培训资料

    Hibernate基本概念** - **对象关系映射(ORM)**: ORM 是一种技术,它在对象模型和关系数据库之间建立桥梁,使得开发人员可以使用面向对象的方式操作数据库。 - **实体(Entity)**: 在Hibernate中,实体通常对应于...

    hibernate基本架构

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

    hibernate3必要jar包

    以下是一些关于Hibernate3及其核心组件的知识点: 1. **Hibernate3简介**:Hibernate3是Hibernate项目的第三个主要版本,它提供了一种对象关系映射(ORM)解决方案,允许开发人员使用面向对象的编程模型来处理关系...

    hibernate和MySQL的jar

    下面我们将深入探讨Hibernate和MySQL结合使用时的一些关键知识点: 1. **Hibernate ORM**: Hibernate是一个持久层框架,它将Java对象转换为数据库记录,反之亦然。通过提供对象关系映射(ORM)服务,Hibernate消除...

    Hibernate 中文api 等学习资料

    5. **Hibernate Getting Started Guide.pdf**:这可能是Hibernate的入门指南,为初学者提供快速上手的步骤和示例,包括环境搭建、基本配置和简单操作。 **学习Hibernate的关键知识点** 1. **实体管理**:理解...

    hibernate使用参考文档

    本文档提供了 Hibernate 的基本使用步骤,从引入 JAR 包到编写测试代码。通过阅读本文档,读者可以快速掌握 Hibernate 的使用。 知识点总结 * Hibernate 配置文件的作用 * Hibernate 实体类与配置文件的关系 * ...

    Hibernate3的依赖包

    7. **类型转换和用户类型**:Hibernate支持基本数据类型的自动转换,同时也允许自定义复杂类型的映射。 8. **关联映射**:Hibernate支持一对一、一对多、多对一、多对多等各种关联关系的映射,方便地处理复杂的...

    [PDF]Hibernate4(基本开发,入门,配置,CRUD)

    根据给定文件的信息,我们可以将知识点分为以下几个方面进行详细的阐述: ...以上是根据给定文件中提及的知识点进行的详细展开,希望这些内容能够帮助你更好地理解和掌握 Hibernate 4 的基本开发知识。

Global site tag (gtag.js) - Google Analytics