您的位置:首页 > 其它

Hibernate总结——基础知识

2013-03-29 09:12 295 查看
作者:李东龙

说道Hibernate基础知识,首先要对ORM进行一下深入的理解。

ORM是什么呢?Object-RelationMapping(即对象-关系映射)。

是一种模式,这种模式在单个组件中负责有实例业务对象的持久化,封装了数据库访问的细节,也就是在上篇博文中写到的O-R的操作,这就是Hibernate的核心原理。当然这只是数据持久化的一种方式。

ORM解决主要的问题就是对象-关系映射。因为项目的业务逻辑模型是面向对象的,而关系型数据模型是面向关系的。

所以Hibernate把一个持久化的类和数据库中的一张表对应;类的每一个属性,对应这表里的一个字段;类的每一个实例对应这个表的一条记录。这样就把一个对象和一个关系型数据表映射在了一起,这就是ORM模式。

在Hibernate开发的文档里,把Hibernate定义成了一种对JDBC做了轻量级封装的对象-关系映射工具。所谓轻量级封装就是指没有完全的把JDBC封装,我们的程序还可以绕过Hibernate层直接访问数据库。下面是Hbernate的几个接口,其中前5个是核心接口,和3个是回调接口。

1)Configuration:配置Hibernate,启动Hibernate,创建SessionFactory工厂对象。

2)SessionFactory:初始化Hibernate,创建Session对象。它是线程安全的,就是说可以多个线程共同操作这个对象,而且是重量级的,在缓存中存储的大量的SQL语句和映射元素数据。所以这个对象我们不能轻易的创建和销毁,一个数据库创建一个SessionFactor工厂对象。

3)Session:负责保存、修改、删除、查询和加载对象。Sessin不是线程安全的,所以我们要避免多个线程共享一个Session,这个Session是轻量级的,就是说创建和销毁这个Session不需要消耗太多的系统资源.

4)Transaction:事务管理。

5)Query:执行数据库查询。Query接口包装了一个HQL语句和SQL语句很相似,但是HQL语句是面向对象的,它引用类名和属性名,而不是表明和字段名。还有一个接口Criteria完全封装了基于字符串形式的查询语句,比Query接口更加面向对象,擅长动态的查询。

6)Lifecycle:持久化类实现的接口,让它的实例能响应被加载、保存、删除的事件。

7)Validatable:让持久化类的实例保存之前进行数据的验证,不过这个不推荐使用,因为数据验证是业务逻辑层的事情,而且这种方式强迫持久化类必须实现Hibernate的特定接口,会影响持久化类的可移植性,因此不推荐使用。

8) Interceptor:的实现类负责响应持久化类的实例被加载,保存,删除,更新等事件。



还有一个比较重要的接口Type映射类型接口,用于把对象中的属性,映射为数据库中的字段.Type接口提供了各种实现的类.他们代表了Hibernate的映射类型.

1)PrimitiveType类:原始映射类型,映射了J***A的基本类型。包括ByteType,ShortTyep,IntegerType,LongType,DoubleType,CharacterType,BooleanTyep。

2)DateType类:映射了J***A的日期类型。

3)BinaryType类:映射了Byte[]数字类型。

这里,我们的应用程序不必自己创建Type实例,而是通过Hibernate这个类,访问它的静态Type实例。例如Hibernate.STRING的形式访问StringType实例。还可以实现UserType或者CompositeUserType这两个接口,来定义用户自己的映射类型。

还有一类接口是可扩展接口,比如Hibernate的方言抽象类,指定缓存机制的Cache接口等等。这些因为我一直也没用到过所以就不在这里说明了。想了解它的朋友可以查阅相关的资料。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: