Grails+EJB Domain Models
当前位置:以往代写 > JAVA 教程 >Grails+EJB Domain Models
2019-06-14

Grails+EJB Domain Models

Grails+EJB Domain Models

Ruby on Rail尽量不绝吸引软件工程规模的留意,但企业级的开拓室仍然对其很不信任.为什么?“基于剧本语言的框架莫非也能切合企业级应用么?!” 对付RoR,最主要的论据就是他们缺乏企业级处事(譬喻漫衍式事务,动静等)。对许多业务来说,没有这些处事的平台是基础不予思量的。 Grail就是一个快速的企业级快速应用开拓东西。它基于Groovy语言,可以无缝的集成Java的处事,同时也提供了剧本语言的庞大便利。

为了显示它的企业集成本领,Grails可以快速利便的构建一个web应用措施,后端利用EJB3实体beans。可是,不只仅如此,Grails让你可以对实体bean实现动态节制,而不需要你修改EJB的源代码。Grails Object Relational Mapping (GORM)是基于Hibernate 3的(最终也会支持Java Persistence API),而且利用Groovy’s Meta Object Protocol (MOP)来添加各类手工动态要领给实际上静态的实体bean。这些要领不只可以给Grails和Groovy挪用;Java代码也可以挪用。这样我们就同时拥有了JEE/EJB3的企业级本领和RAD web应用开拓的便利。

Rails的代码生成绩不消说了,RoR做到的,它都能做到,下面看看他的扩充代码

import com.jasonrudolph.ejb3example.entity.EmployeeBean

添加一个web事件
和RoR对比,Grail对工具关联的处理惩罚十分机动
def showComputersByEmployee = {
render(view:’list’, model:[ computerBeanList:
ComputerBean.findAllByEmployeeBean(EmployeeBean.get(params.id)) ])
}

生存web提交
def update = {
def computerBean = ComputerBean.get( params.id )
if(computerBean) {
if (computerBean.employeeBean) {
computerBean.employeeBean.computers.remove(computerBean)
}

computerBean.properties = params

def employeeBean = EmployeeBean.get(params.employeeId)
employeeBean.computers.add(computerBean)
computerBean.employeeBean = employeeBean

if(computerBean.save()) {
redirect(action:show,id:computerBean.id)
}
else {
render(view:’edit’,model:[computerBean:computerBean])
}
}
else {
flash.message = "ComputerBean not found with id ${params.id}"
redirect(action:edit,id:params.id)
}
}

验证法则
这是Grails的另一个特色
constraints = {
networkId(length:6..8,blank:false,unique:true)
firstName(maxLength:20,blank:false)
lastName(maxLength:20,blank:false)
startDate(nullable:false)
}

查谋事件
def showSearchResults = {
render(view:’list’, model:[ employeeBeanList:
EmployeeBean.findAllByLastNameLike("%" + params.lastName + "%") ])
}

高级查找
def showSearchResults = {
def criteria = EmployeeBean.createCriteria()

def results = criteria {
or {
ilike("networkId", "%" + params.networkId + "%")
and {
eq("firstName", params.firstName)
eq("lastName", params.lastName)
}
}
}

render(view:’list’, model:[ employeeBeanList: results.adaptee ])
}

    关键字:

在线提交作业