Jason Rudolph 关于Groovy的新教程:Grails + EJB Step by Step 导入实体

本文转引自http://www.infoq.com/cn/articles/grails-ejb-tutorial

作者JasonRudolph译者胡键

这是grails很好的一个入门教程,对比JAVA应用可以省略大量的代码

下面操作的第三步:

步骤3——导入实体Bean

Grails预装了HSQLDB,但因为我们使用的是MySQL,我们需要一些快捷的步骤,来告诉Grails如何与我们的数据库进行交流。首先,从http://www.mysql.com/products/connector/j/下载MySQL的Java驱动。我选择的是当前可用于产品阶段的产品,在本文撰写的时候,它的版本是3.1.13。

打开zip文件,将其中的mysql-connector-java-3.1.13-bin.jar解压到你的Grails应用的lib目录——本例中,是ejb3_grails/lib。(注意:JAR文件确切的名字会跟据你下载驱动的版本不同而变化)。

现在,我们准备告诉Grails在哪儿找到我们的数据库。用你喜爱的编辑器打开ApplicationDataSource.groovy,按以下内容修改。你可以在ejb3_grails/grails-app/conf/中找到这个文件。(注意:你需要改变用户名和口令以适应你MySQL帐号。)

import 
org.codehaus.groovy.grails.orm.hibernate.cfg.GrailsAnnotationConfiguration
class ApplicationDataSource {
   def configClass = GrailsAnnotationConfiguration.class
   boolean pooling = true
   //String dbCreate = "create-drop"
   // one of 'create', 'create-drop','update'
   String url = "jdbc:mysql://localhost/ejb3example"
   String driverClassName = "com.mysql.jdbc.Driver"
   String username = "ejb3example"
   String password = "ejb3example"
}

除了指明链接设置,我们还需要定义configClass成员,以允许Grails支持在实体Bean中使用标注。

最后,我们需要给dbCreate设置加上注释。这个设置允许Grails在运行时使用你的领域对象同步更新数据库模式。尽管它是个强大的选项,但是在这个例子中我们并不需要。通过把这个设置注释掉,我们指示Grails保持模式的原样。

接下来,我们需要将实体Bean——EmployeeBean和ComputerBean——复制到我们的Grails工程。Grails会在src/java目录中查找Java类。请确保创建与这些类的包相匹配的、完整的目录结构。

jMac:~/dev/ejb3_grails/src/java/com/jasonrudolph/ejb3example/entity jason$ lsComputerBean.java       EmployeeBean.java

在很长时间内,你将需要确保这些文件与这些类的正式副本保持同步(它们在你的JEE工程源码树中)。使用构建脚本,你可以很容易地做到这点。即,在构建时,将这些文件从JEE工程中复制到Grails工程中。

Grails允许我们与任何Java类工作,但是我们需要让Grails给予这些特殊的Java类(也就是我们的实体Bean)特别的对待。我们要让Grails将这些类认为是我们的领域类,并提供Grails领域类所拥有的ORM和动态方法的全部好处。要做到这些,我们需要在应用的hibernate目录增加如下的hibernate.cfg.xml文件,注册这些类。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE 
   hibernate-configuration
   PUBLIC	
	"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
	"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
      <mapping package="com.jasonrudolph.ejb3example.entity" />
      <mapping class="com.jasonrudolph.ejb3example.entity.EmployeeBean" />
      <mapping class="com.jasonrudolph.ejb3example.entity.ComputerBean" />
    </session-factory>
</hibernate-configuration>

相关推荐