糖葫芦娃哈哈 2007-08-28
本文转引自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>