`
mixer_a
  • 浏览: 363743 次
社区版块
存档分类
最新评论

Hibernate 总结

 
阅读更多

一、基础知识

①Hibernate是对象/关系映射(Object/Relation Mapping)的解决方案。

②Hibernate架构

POJO

hibernate.cfg.xml

*.hbm.xml

Hibernate应用

二、几个重要的类

Configuration(负责管理Hibernate的配置信息)

当创建SessionFactory时,Configuration实例可以指定使用哪一个映射文挡。应用程序通常只是创建一个Configuration实例,并通过它创建一个SessionFactory实例。

SessionFactory(负责创建Session实例)

它是线程安全的,可以被多线程调用以取得Session,而且构造SessionFactory很消耗资源,所以多数情况下一个应用中只初始化一个SessionFactory,为不同的线程提供Session

Session

SessionHibernate运作的中心,对象的生命周期、事务的管理、数据库的存取都与Session息息相关。Session不是线程安全的,多个执行线程共享一个Session,将会发生数据共享而发生混乱问题。为了解决此问题,可以采用ThreadLocal变量,使用它可以有效隔离执行所使用的数据,也就避开了Session的多线程之间的数据共享问题。

如何调用hibernate API

1、创建Configuration对象。(解析配置文件)

Configuration config = new Configuration();

2、通过Configuration创建Session Factory(线程安全的重量级组件)

Config = config.configure();//configure()方法会在CLASSPATH下寻找hibernate.cfg.xml

SessionFactory = config.buildSessionFactory();

3、通过SessionFactory创建Session会话对象。

Session session = sessionFactory.openSession();

4、通过Session取得事务对象。

Transaction transsession.beginTransaction();

5、通过session与数据库进行会话。

session.save(object o);//

session.delete(object o);//

session.update(object o);//

session.get (Class clazz, Serializable id);//根据Id查找对象

session.createQuery(String sql);//自己拼HQL语言查找对象返回一个Query对象。

6、提交操作,结束事务。

Trans.commit();

7、关闭Session

session.close();

注:第一步和第二步一般放在静态初始化代码块中执行。

三、Hibernate中自带IDgenerator的含义:

1identity:用于MySql数据库。特点:递增

<id name="id" column="id">

<generator class="identity"/>

</id>

注:对于MySql数据库使用递增序列时需要在建表时对主键指定为auto_increment属性。

2sequence:用于Oracle数据库

<id name="id" column="id">

<generator class="sequence">

<param name="sequence">序列名</param>

</generator>

</id>

3native:跨数据库时使用,由底层方言产生。

Default.sequencehibernate_sequence

<id name="id" column="id">

<generator class="native"/>

</id>

注:使用nativeHibernate默认会去查找Oracle中的hibernate_sequence序列。

如果Oracle中没有该序列,连Oracle数据库时会报错。

4hilo:通过高低位合成id,先建表hi_value,再建列next_value。必须要

有初始值。

<id name="id" column="id">

<generator class="hilo">

<param name="table">high_val</param>

<param name="column">nextval</param>

<param name="max_lo">5</param>

</generator>

</id>

5sequencehilo:同过高低位合成id,建一个sequence序列,不用建表。

<id name="id" column="id">

<generator class="hilo">

<param name="sequence">high_val_seq</param>

<param name="max_lo">5</param>

</generator>

</id>

6assigned:用户自定义id;

<id name="id" column="id">

<generator class="assigned"/>

</id>

7foreign:用于一对一关系共享主健时,两id值一样。

四、Hibernate类关系的处理:

1OnetoOne关系在数据库中如何体现,在JavaBean中如何体现,在Hibernate中如何映射onetoone关系。

1、数据库中:一个表的外健对应另一个表的主健,外健要加上Unique约束。或者是两个表共享一个主健。

2javaBean中:在JavaBean中增加一个属性,即另外一个对象的引用,可以单向也可以双向。

3、在hibernate中:

主健映射:都是onetoone要用foreign生成策略。

外健映射:主表中用onetoone,副表通过propertyrefmanytoone

create table car_pk (

id number(10,0) not null,

name varchar2(15),

serial varchar2(30),

manufacturer varchar2(50),

producedate date,

primary key (id)

);

create table engine_pk (

id number(10,0) not null,

model varchar2(20),

manufacturer varchar2(50),

producedate date,

primary key (id)

);

alter table engine_pk

add constraint fk_engine_car_pk

foreign key (id)

references car_pk(id);

One-to-OnePK主键映射(详见代码)

Tablecar_pk

Id

name

serial

manufacturer

producedate

Tableengine_pk

Id

model

manufacturer

producedate

特点:engine_pk表的Idcar_pk表共享主键。

One-to-OneFK外键映射(详见代码)

Tablecar_pk

Id

name

serial

manufacturer

producedate

Tableengine_fk

Id

carid

model

manufacturer

producedate

特点:engine_fk表多了carid外键字段来维护与car_fk表的关系。

建表语句如下:

create table engine_fk (

id number(10,0) not null,

model varchar2(20) not null,

manufacturer varchar2(50) not null,

producedate date,

carid number(10,0) unique,

primary key (id)

);

alter table engine_fk

add constraint fk_engine_car_fk

foreign key (carid)

references car_fk(id);



转自:http://blog.csdn.net/chenpy/article/details/1736474

分享到:
评论

相关推荐

    SSH之Hibernate总结

    SSH之Hibernate总结 SSH(Struts、Spring、Hibernate)是Java Web开发中常见的三大框架,而Hibernate作为ORM(对象关系映射)框架,是连接Java应用程序与数据库的关键组件。本总结将围绕Hibernate的核心概念、配置...

    Hibernate总结

    【Hibernate总结】 Hibernate是一个强大的Java持久化框架,它封装了JDBC,负责对象持久化,作为应用程序和数据库之间的中间层。映射关系是通过配置文件维护的,这使得Hibernate能够与不同的数据库系统灵活地交互。 ...

    hibernate总结练习源码

    本资源包含的"hibernate总结练习源码"提供了对Hibernate ORM框架实际应用的实例,有助于深入理解和掌握其核心概念与功能。 1. **对象关系映射(ORM)**:Hibernate 提供了一种机制,将数据库中的表映射为Java类,表...

    Hibernate总结(三)

    《Hibernate总结(三)》 在本篇关于Hibernate的总结中,我们将深入探讨这个流行的Java对象关系映射(ORM)框架的关键概念和技术细节。Hibernate作为一款强大的工具,它极大地简化了Java开发人员处理数据库操作的工作...

    hibernate 总结

    标题:hibernate总结 描述:此文档是个人在使用Hibernate框架进行数据持久化操作时的经验积累和技巧分享。文档全面覆盖了Hibernate的各种配置方法、数据映射技术、集合类映射、对象关系映射(ORM)基础以及与J2EE...

    hibernate总结

    ### Hibernate总结 #### 一、Hibernate简介 Hibernate是一种在Java环境下使用的对象关系映射(ORM)框架,它能够将Java类映射到数据库表,并管理Java应用中的对象关系与SQL数据库之间的转换。Hibernate的主要目标...

    学习HIbernate总结

    ### 学习Hibernate总结 #### 一、简介与配置 Hibernate是Java环境下一款优秀的对象关系映射(ORM)框架,它极大地简化了数据访问层(DAL)的编码工作,允许开发人员将主要精力集中在业务逻辑上而不是繁琐的SQL语句...

    jdbc_Hibernate总结

    1. 引入Hibernate所需的JAR文件,例如在Eclipse中创建Hibernate类库。 2. 创建配置文件`hibernate.cfg.xml`,其中包含数据库连接信息、日志格式等。 3. 设计实体类,对应数据库表中的记录,并提供对应的getter和...

    hibernate 总结 附 项目

    **总结项目实战** 在实际项目中,使用 Hibernate 可以简化数据库操作,提高开发效率。常见的应用场景包括用户管理、订单处理、商品分类等。项目实践中要注意合理设计实体关系,避免 N+1 查询问题,利用缓存优化性能...

    Hibernate总结——课程管理

    在Java开发中,Hibernate是一个非常重要的对象关系映射(ORM)框架,它简化了数据库操作,使得开发者可以使用面向对象的方式来处理数据。本教程将深入探讨如何使用Hibernate来实现一个简单的课程管理系统,涵盖多对...

    jdbc和hibernate总结

    总结来说,JDBC是基础的数据库访问技术,适合进行简单的数据库操作,而Hibernate则通过提供面向对象的接口,极大地简化了数据库操作,尤其适用于复杂的业务场景。两者结合使用,可以让开发者在享受面向对象编程便利...

    Hibernate4总结文档

    《Hibernate4总结文档》 Hibernate4作为一款强大的Java对象关系映射框架,简化了数据库操作,使得开发者可以更专注于业务逻辑而不是数据库层面的细节。本文将深入探讨Hibernate4的配置和使用,帮助开发者更好地理解...

    hibernate文档总结,技术汇总,PDF版的,hibernate简明参考文档

    总结来说,Hibernate是一个强大的ORM框架,它极大地简化了Java应用的数据库操作,提高了开发效率,并提供了高级特性如缓存、事务管理等。通过深入理解和熟练使用Hibernate,开发者可以构建更高效、更易于维护的...

Global site tag (gtag.js) - Google Analytics