码迷,mamicode.com
首页 > Web开发 > 详细

hibernate---简介

时间:2016-06-09 15:55:34      阅读:208      评论:0      收藏:0      [点我收藏+]

标签:

Hibernate简介

Hibernate在开发中所处的位置

 技术分享

ORM映射

Object :面向对象领域的

Relational:关系数据库领域的

Mapping:映射

Object Relational

 

Hibernate:就是让程序员通过操作对象的方式来操作数据库中的表。

 

Hibernate的执行过程

技术分享

 

 

 

Hibernate中的常用接口和类

Configuration

作用:加载Hibernate的配置文件

配置方式

classpath中建立一个hibernate.properties的配置文件。

 技术分享

自由指定映射文件:

 技术分享

自由指定加载的实体类:

 技术分享

·Configuration接口:Configuration接口负责配置并启动Hibernate,创建SessionFactory对象。在Hibernate的启动的过程中,Configuration类的实例首先定位映射文档位置、读取配置,然后创建SessionFactory对象。

SessionFactory(重点)

Configuration通过加载配置文件创建该对象。

SessionFactory 对象中保存了当前的数据库配置信息和所有映射关系以及预定义的SQL语句。同时,SessionFactory还负责维护Hibernate的二级缓存

预定义SQL语句:(注意如果有多个映射文件,每个映射文件都会有这4条预定义SQL语句)

select * from students where id=? //根据主键查询

insert into students (name,age,birthday) values(?,?,?); //全字段插入

update students set name=?,age=?,birthday=? where id=? //根据主键全字段更新

delete from students where id=? //根据主键删除

一个SessionFactory实例对应一个数据库,应用从该对象中获得Session实例。

SessionFactory线程安全的,意味着它的一个实例可以被应用的多个线程共享。

SessionFactory重量级的,意味着不能随意创建或销毁它的实例。如果只访问一个数据库,只需要创建一个SessionFactory实例,且在应用初始化的时候完成。

SessionFactory需要一个较大的缓存,用来存放预定义的SQL语句及实体的映射信息。

另外可以配置一个缓存插件,这个插件被称之为Hibernate二级缓存(后续会详解二级缓存),被多线程所共享

 

·SessionFactory接口:SessionFactroy接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象。这里用到了工厂模式。需要注意的是SessionFactory并不是轻量级的,因为一般情况下,一个项目通常只需要一个SessionFactory就够,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory。

 

结论:一般应用使用一个SessionFactory,最好是应用启动时就完成初始化。

Session 非常重要。使用率非常高

不是线程安全的。应避免多个线程使用同一个Session实例。

Session是轻量级的,它的创建和销毁不会消耗太多的资源。应为每次客户请求分配独立的Session实例

Session有一个缓存,被称之为Hibernate的一级缓存。每个Session实例都有自己的缓存。

 

Session接口:Session接口负责执行被持久化对象的CRUD操作(CRUD的任务是完成与数据库的交流,包含了很多常见的SQL语句。)。但需要注意的是Session对象是非线程安全的。同时,Hibernate的session不同于JSP应用中的HttpSession。这里当使用session这个术语时,其实指的是Hibernate中的session,而以后会将HttpSesion对象称为用户session。

 

Transaction:事务管理

Hibernate应用通过它声明事务边界,有助于在不同的环境或容器中进行移植。

 技术分享

开启事务:Transaction tx = session.beginTransaction();//开启事务

tx.commit()事务提交 tx.rollback()事务回滚

 

·Transaction接口:Transaction接口负责事务相关的操作。它是可选的,开发人员也可以设计编写自己的底层事务处理代码。

 

·Query和Criteria接口:Query和Criteria接口负责执行各种数据库查询。它可以使用HQL语言或SQL语句两种表达方式。


 
  
 

 

JavaBean编写规范:

 

a、类一般是public

 

b、有默认的构造方法

 

c、字段都是私有的

 

d、提供公有的gettersetter方法

 

e、一般都实现java.io.Serializable接口

 

注意:hibernate采用的暴力反射

 

派生属性

 

概念:

 

实体类中的某些属性在数据库表中没有对应的字段,该属性的值是由数据库表中其他字段计算出来的。这样的属性叫做派生属性。

 

hibernate---简介

标签:

原文地址:http://www.cnblogs.com/fengru/p/5572370.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!