|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
到时我们不用学struts,不用学spring,不用学Hibernate,只要能把jsf学会了,完全可以替代所有的框架,包括AJAX,都知道AJAX并不是新技术,虽说我没深入学习jsf但我认为jsf应该已经能通过其它技术替代AJAX,实现无缝刷新。
在上个月开篇的精晓Grails文章中,先容了名为Grails的新Web框架。Grails分离了最新的实践,比方模子-视图-把持器的存眷点断绝和商定优于设置。经由过程将这些理论与个中内置的scaffolding功效分离,利用Grails只需花几分钟就可以创建并运转起一个Web站点。
这篇文章的重点是利用Grails能够完成简化的另外一范畴:利用Grail对象干系映照(GrailsObjectRelationalMapping,GORM)API举行耐久化。我将起首先容甚么是对象干系映照器(object-relationalmapper,ORM),和怎样创立一对多干系。然后将进修数据考证(确保使用程序不会呈现无用信息输出/无用信息输入(garbagein/garbageout)成绩)。然后将看到怎样利用GrailsORM的领域特定言语(domain-specificlanguage,DSL),利用DSL语句可以在幕后对一般的旧Groovy对象(plainoldGroovyobjects,POGO)的耐久化体例举行微调。最初,将看到可以轻松地切换到另外一个干系数据库。任何有JDBC驱动程序和Hibernae方言的数据库都受撑持。
ORM界说
干系数据库呈现于20世纪70年月末,可是软件开辟职员至今仍然在追求无效的办法来存进和掏出数据。现今软件的基本并非多半盛行数据库所利用的干系实际,而是基于面向对象的准绳。
为此发生了一整套称为ORM的程序,用来减缓在数据库和面向对象的代码之间往返转移数据的疾苦。Hibernate、TopLink和Java耐久性API(JavaPersistenceAPI,JPA)是处置这一成绩的三个盛行的JavaAPI(请参阅参考材料),不外它们都其实不完善。这个成绩云云耐久(不是存心一语双关,而是实情),以致于有了本人公用的术语对象干系阻抗掉谐(请参阅参考材料)。
GORM是在Hibernate上的一层薄薄的Groovy层。(我猜“Gibernate”不像“GORM”那样简单上口)。这意味着现有的一切Hibernate技能仍旧有效—比方,HBM映照文件和标注失掉周全撑持—但这篇文章的重点是GORM带来的风趣功效。
创立一对多干系
关于将POGO保留到数据库表所面对的应战,很简单被低估。实践上,假如只是将一个POGO映照到一个表,那末事情相称复杂—POGO的属性刚好映照到表列。可是当对象模子稍稍变庞大一点,比方有两个相互相干的POGO,那末事变将很快变得坚苦起来。
比方,请看上个月文章中入手下手的游览计划网站。明显,TripPOGO在使用程序中有主要的感化。请在文本编纂器中翻开grails-app/domain/Trip.groovy(如清单1所示):
清单1.Trip类
classTrip{
Stringname
Stringcity
DatestartDate
DateendDate
Stringpurpose
Stringnotes
}
清单1中的每一个属性都轻松大度地映照到Trip表中的对应字段。还记得在上一期的文章中说过,在Grail启动时,一切存储在grails-app/domain目次下的POGO城市主动创立对应的表。默许情形下,Grails利用内嵌的HSQLDB数据库,可是到本文停止时,就可以够利用本人喜好的其他恣意干系数据库。
路程中常常要包括航行,以是还应当创立一个Airline类(如清单2所示):
清单2.Airline类
classAirline{
Stringname
Stringurl
StringfrequentFlyer
Stringnotes
}
<p>
首先java功能强大的背后是其复杂性,就拿web来说,当今流行的框架有很多,什么struts,spring,jQuery等等,而这无疑增加了java的复杂性。 |
|