快速业务通道

Java学习杂谈(十二)--ORM - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-20
;foreignkey field-ref="id"/> </reference-descriptor> </class-descrptor>

2.iBATIS

iBATIS最大的特点就是允许用户自己定义SQL来组配Bean的属性。因为它的SQL语句是直接写入XML文件中去的,所以可以最大程度上利用到 SQL语法本身能控制的全部特性,同时也能允许你使用特定数据库服务器的额外特性,并不局限于类似SQL92这样的标准,它最大的缺点是不支持枚举类型的持久化,即把枚举类型的几个对象属性拼成与数据库一个字段例如VARCHAR对应的行为。这里也举一个Mapping文件的例子sqlMap.xml:

<sqlMap> <typeAlias type="com.ant.Test" alias="test"/>    <resultMap class="test" id="result"> <result property="testId" column="TestId"/> <result property="name" column="Name"/> <result property="date" column="Date"/> </resultMap>    <select id="getTestById" resultMap="result" parameterClass="int"> select * from Test where TestId=#value# </select>    <update id="updateTest" parameterClass="test"> Update Tests set Name=#name#,Date="date" where TestId=#testId# </update> </sqlMap>

3.Hibernate

Hibernate无疑是应用最广泛最受欢迎的持久型框架,它生成的SQL语句是非常优秀。虽然一度因为不能支持手工SQL而性能受到局限,但随着新一代 Hibernate    3.x推出,很多缺点都被改进,Hibernate也因此变得更加通用而时尚。同样先看一个Mapping文件的例子customer.hbm.xml来有一个大概印象:

<hibernate-mapping> <class name="com.ant.Customer" table="Customers"> <id name="customerId" column="CustomerId" type="int" unsaved-value="0"> <generator class="sequence"> <param name="sequence">  Customers_CustomerId_Seq  </param> </generator> </id>    <property name="firstName" column="FirstName"/> <property name="lastName" column="LastName"/>    <set name="addresses" outer-join="true"> <key column="Customer"/> <one-to-many class="com.ant.Address"/> </set>    …    </class>    </hibernate-mapping>

Hibernate有很多显著的特性,最突出的就是它有自己的查询语言叫做HQL,在HQL中select from的不是Table而是类名,一方面更加面向对象,另外一方面通过在hibernate.cfg.xml中配置Dialect为HQL可以使得整个后台与数据库脱离耦合,因为不管用那种数据库我都是基于HQL来查询,Hibernate框架负责帮我最终转换成特定数据库里的SQL语句。另外 Hibernate在Object-Caching这方面也做得相当出色,它同时管理两个级别的缓存,当数据被第一次取出后,真正使用的时候对象被放在一级缓存管理,这个时候任何改动都会影响到数据库;而空闲时候会把对象放在二级缓存管理,虽然这个时候与数据库字段能对应上但未绑定在一起,改动不会影响到数据库的记录,主要目的是为了在重复读取的时候更快的拿到数据而不用再次请求连接对象。其实关于这种缓存的设计建议大家研究一下Oracle的存储机制(原理是相通的

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号