Hibernate资料

[color=green]1. hibernate是什么,为什么使用hibernate,java反射机制,如何使用hibernate[/color]

持久化
   持久化(Persistence),即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。
持久化的主要应用是将内存中的数据存储在关系型的数据库中,当然也可以存储在磁盘文件中、XML数据文件中等等。   
持久化是将程序数据在持久状态和瞬时状态间转换的机制。   
JDBC就是一种持久化机制。文件IO也是一种持久化机制。   
将鲜肉冷藏,吃的时候再解冻的方法也是。   
将水果做成罐头的方法也是。   
将人的脏器迅速冷冻,运输,然后解冻给人移植的技术也是。
理解
  我们可以这样理解:   
在一定周期内保持不变就是持久化,持久化是针对时间来说的.   
数据库中的数据就是持久化了的数据,只要你不去删除或修改.   
Session会话中Session对象变量也是不变的,是Session容器中持久化   
对象持久化的方式有很多种,根据周期不同有,page,Session,Application,   
对象序列化机制对于需要将对象的状态保存到文件中,
而后能够通过读入对象状态来重新构造对象,恢复程序状态,   
对象序列化的过程是对象持久化的方法之一,把对象保存到文件中.

关键字: po/pojo/bo/dto/vo


---------------------------------------------------------

PO :persistent object持久对象

1 .有时也被称为Data对象,对应数据库中的entity,可以简单认为一个PO对应数据库中的一条记录。

2 .在hibernate持久化框架中与insert/delet操作密切相关。

3 .PO中不应该包含任何对数据库的操作。

POJO :plain ordinary java object 无规则简单java对象

一个中间对象,可以转化为PO、DTO、VO。

1 .POJO持久化之后==〉PO

(在运行期,由Hibernate中的cglib动态把POJO转换为PO,PO相对于POJO会增加一些用来管理数据库entity状态的属性和方法。PO对于programmer来说完全透明,由于是运行期生成PO,所以可以支持增量编译,增量调试。)

2 .POJO传输过程中==〉DTO

3 .POJO用作表示层==〉VO

PO 和VO都应该属于它。

BO :business object 业务对象

封装业务逻辑为一个对象(可以包括多个PO,通常需要将BO转化成PO,才能进行数据的持久化,反之,从DB中得到的PO,需要转化成BO才能在业务层使用)。

关于BO主要有三种概念

1 、只包含业务对象的属性;

2 、只包含业务方法;

3 、两者都包含。

在实际使用中,认为哪一种概念正确并不重要,关键是实际应用中适合自己项目的需要。

VO :value object值对象 / view object表现层对象

1 .主要对应页面显示(web页面/swt、swing界面)的数据对象。

2 .可以和表对应,也可以不,这根据业务的需要。


DTO (TO) :Data Transfer Object数据传输对象

1 .用在需要跨进程或远程传输时,它不应该包含业务逻辑。

2 .比如一张表有100个字段,那么对应的PO就有100个属性(大多数情况下,DTO 内的数据来自多个表)。但view层只需显示10个字段,没有必要把整个PO对象传递到client,这时我们就可以用只有这10个属性的DTO来传输数据到client,这样也不会暴露server端表结构。到达客户端以后,如果用这个对象来对应界面显示,那此时它的身份就转为VO。


DAO :data access object数据访问对象

1 .主要用来封装对DB的访问(CRUD操作)。

2 .通过接收Business层的数据,把POJO持久化为PO。


OO设计思想与当前关系数据库的不匹配

HIBERNATE优点:
1.更加面向对象化(直接操作对象来存储数据)
2.可移植性增强了(相对于不同的数据库)
3.透明持久化(pojo:最纯粹的java对象)--没有侵入性 (轻量级框架)
4.提高生产力(不用写SQL语句)
HIBERNATE使用
适合:
1.针对单个对象的增删改(非批量);
2.对象之间有很清晰的关系。
不适合:
1.具体性操作,批量的对对象修改。
2.对象之间关系错综复杂。
3.使用数据库的特定功能的时候。

ORM(M==Map)包括对象间的映射关系和缓存机制等
好处:无侵入性 易于测试

新建项目:
1.导包 (HIBERNATE包和JDBC驱动包)
2.配置文件(hibernate.cfg.xml),为了便于调试 最好加入log4j配置文件
3.创建实体类
4.定义实体类的映射文件(User.hbm.xml,一般和实体类放在一起)
5.将User.hbm.xml文件加入到hibernate.cfg.xml文件中。
6.hbm2ddl工具类将实体类生成表
Configuration cfg = new Configuration().configure();
--注意:不加.configure();默认读取hibernate.propertis文件
SchemaExport export = new SchemaExport(cfg);
export.create(true,true);
7.生成客户端。



junit单元测试
1.导包.
2.测试类继承TestCase类(注意命名)
3.测试类里的方法以test开头,public权限,void返回值
4.运行 test Junit

1.什么是ORM
ORM的全称是Object Relational Mapped,即对象关系映射。它的实现思想就是将关系数据库中表的数据映射成为对象。

2.什么是Hibernate
对于Hibernate的称呼有很多,比如工具、技术、框架以及解决方案等,这些都可以,重要的是大家要知道它的作用。在这里我习惯性称它为框架,它是一种能实现ORM的框架。能实现ORM这个功能的框架有很多,Hibernate可以说是这些框架中最流行、最受开发者关注的,甚至连JBoss公司也把它吸收进来,利用它在自己的项目中实现ORM功能。

3.ORM的实现原理
现在在Java领域大家对Hibernate的讨论很多,比如它的优缺点、如何应用、错误如何解决以及把它和Struts/Spring等框架相结合作为整个系统的解决方案。在这里我想和大家探讨一些更深层次的话题,那就是Hibernate是如何实现ORM的功能?如果让我们自己开发一款实现ORM功能的框架需要怎么做?其实这些问题就是围绕着一个词,那就是“映射”,如果我们知道如何实现这种映射那么我们也能够开发出自己的一款ORM框架。会使用Hibernate的开发人员都知道,在使用它实现ORM功能的时候,主要的文件有:映射类(*.java)、映射文件(*.hbm.xml)以及数据库配置文件(*.properties或*.cfg.xml),它们各自的作用如下。
⑴映射类:它的作用是描述数据库表的结构,表中的字段在类中被描述成属性,将来就可以实现把表中的记录映射成为该类的对象。
⑵映射文件:它的作用是指定数据库表和映射类之间的关系,包括映射类和数据库表的对应关系、表字段和类属性类型的对应关系以及表字段和类属性名称的对应关系等。
⑶数据库配置文件:它的作用是指定与数据库连接时需要的连接信息,比如连接哪中数据库、登录用户名、登录密码以及连接字符串等。
在这三种主要的文件中,映射类为普通Java源文件、映射文件为XML格式、数据库配置文件为Properties格式或者是XML格式。想理解“映射”首先我们需要知道如何解析这三种文件,即解析XML格式文件、解析Properties格式文件和解析Java类文件。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值