Hibernate基础知识_Android, Python及开发编程讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Android, Python及开发编程讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 3630 | 回复: 0   主题: Hibernate基础知识        下一篇 
xiaojiang
注册用户
等级:少尉
经验:345
发帖:77
精华:0
注册:2011-8-31
状态:离线
发送短消息息给xiaojiang 加好友    发送短消息息给xiaojiang 发消息
发表于: IP:您无权察看 2011-9-1 10:14:44 | [全部帖] [楼主帖] 楼主

  Hibernate基础知识,谈到这里,首先最重要的是应该理解ORM,ORM是什么呢?3个单词的缩写,Object-Relation Mapping,既对象-关系映射的意思.这是一种模式,这种模式在单个组件中负责说有实例业务对象的持久化,封装了数据库访问的细节,这就是Hibernate的核心原理.ORC解决主要的问题就是对象-关系映射.因为项目的业务逻辑模型是面向对象的,而关系型数据模型是面向关系的,所以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:Interceptor的实现类负责响应持久化类的实例被加载,保存,删除,更新等事件.

      还有一个比较重要的接口Type映射类型接口,用于把对象中的属性,映射为数据库中的字段.Type接口提供了各种实现的类.他们代表了Hibernate的映射类型.
      1)PrimitiveType类:原始映射类型,映射了JAVA的基本类型.包括ByteType,ShortTyep,IntegerType,LongType,DoubleType,CharacterType,BooleanTyep
      2)DateType类:映射了JAVA的日期类型.
      3)BinaryType类:映射了Byte[]数字类型.
      这里,我们的应用程序不必自己创建Type实例,而是通过Hibernate这个类,访问它的静态Type实例.例如Hibernate.STRING的形式访问StringType实例.还可以实现UserType或者CompositeUserType这两个接口,来定义用户自己的映射类型.
      还有一类接口是可扩展接口,比如Hibernate的方言抽象类,指定缓存机制的Cache接口等等.这些因为我一直也没用到过所以就不在这里说明了.想了解它的朋友可���查阅相关的资料.



赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论