1、toplink是什么:跟hibernate差不多的ORM框架,具体的描述可以看看别人的帖子:
http://www.594k.com/java/html/y2007m7/12527/
http://blog.csdn.net/rexwu/archive/2006/04/26/678450.aspx
2、怎么去搭建一个toplink实验平台,这是初学者最关心的,也是首先要做的事情。
3、Spring在自己的SAMPLE中就提供toplink的例子,虽然很简单,却可以为我们实现一个简单的S MVC+toplink的测试环境,何乐而不为,直接上SPRING网站下载一个例子吧:
http://www.springframework.org/download
在这里我们选择:spring-framework-2.0.7-with-dependencies.zip(这个包最完整,不但包括Spring的源代码、spring jar包、6个Sample,还有一大堆关键到要命的其他JAR包,省掉我们很多麻烦)。
除了Spring的包,我们还需要下载oracle toplink workbench,这是主角:
http://download.oracle.com/otn/nt/ias/11/toplink_11.1.1.0_070830_preview-2.zip
4、下载完毕后,以Spring目录下samples中的petclinic目录为基础建立一个Eclipse工程,名字为petclinic,记得web目录选择war,保留该目录下面所有的文件。好在Spring目录下的LIB目录下建立一个工程,名字为LIB,在petclinic中引入,这样可以直接引入LIB中的JAR包(将toplink workbench目录中的toplink.jar和xmlparserv2.jar拷贝到LIB/toplink中)。
我们选择MYSQL数据库,那么还需要将mysql-connector-java-3.2.0.jar拷贝到LIB的MYSQL目录(自己建立一个)中。
5、工程建好后,检查war目录中的web.xml,是不是被Eclipse改写了,如果是,那么替换成原来的。
6、接下来引入petclinic需要的jar包,不需要全部引入。
7、仔细阅读petclinic的readme.txt,发现它要求改写TOMCAT的配置,以及拷贝相关的jar:
The basic steps are:
- copy "spring-tomcat-weaver.jar" from Spring distribution to "TOMCAT_HOME/server/lib"
- if you're running on Tomcat 4.x or 5.x, modify "TOMCAT_HOME/conf/server.xml"
and add a new "<Context>" element for petclinic (see below)
- if you're running on Tomcat 5.x, you can also deploy the WAR including
"META-INF/context.xml" from this application's "war" directory
<Context path="/petclinic" docBase="/petclinic/location" ...>
<!-- please note that useSystemClassLoaderAsParent is available since Tomcat 5.5.20; remove it if previous versions are being used -->
<Loader loaderClass="org.springframework.instrument.classloading.tomcat.TomcatInstrumentableClassLoader" useSystemClassLoaderAsParent="false"/>
...
</Context>
没啥商量的,按照指示修改吧。
8、选择TOMAT作为WEB服务器,相信大家都会配置,就不多做描述。
9、打开web.xml,将context-param的param-value修改为/WEB-INF/applicationContext-toplink.xml。
10、执行在db目录下面的建表语句,成功后,修改WEB-INF下的jdbc.properties,内容如下:
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:9999/petclinic
jdbc.username=root
jdbc.password=root
其他的均可注释掉。
11、现在运行一下工程,如果报错,十有八九是JAR没有引入,检查一下。
12、启动成功,在IE中键入:http://localhost:8080/petclinic/,如果看到如下页面,恭喜,工程环境已经搭建成功:
13、现在来把toplink workbench跑起来。进入workbench的toplink/bin目录,修改setenv.cmd中的set DRIVER_CLASSPATH=D:/Work/Lib/jar/mysql-connector-java-3.2.0.jar(这是mysql驱动的目录)
set JAVA_HOME=C:/jdk1.5.0_02(JDK安装目录)
14、双击workbench.cmd,出现启动画面:
15、关于workbench怎么创建工程、JAVA对象以及生成mapping的XML文件是很简单的事,用用该软件就清楚了,现在说说几个关键的地方。假定我们建立的workbench工程名字为:petclinic。
- 自增长字段:mysql是没有sequence概念的,它有一个AUTO_INCREMENT可以实现该功能。但是如果想要在TOPLINK中实现AUTO_INCREMENT的工程,那么必须要在对象的描述信息中配置“使用序列”参数。选中“使用序列”,填写名称、表、字段,名称无所谓,只要不为空就行。点击导航器的petclinic根节点,配置“序列”选项为“本机序列”,也不知道为啥为本机序列,反正选择之后,保存包含AUTO_INCREMENT字段的对象时,就不用为AUTO_INCREMENT字段指定值,它会自动自增长,并且返回的对象会自动将该值填写上。
- 延迟加载:最开始在DEBUG时,没有意识到TOPLINK会有延迟加载机制,在获取一个一对多对象时,观察变量值发现只有该对象的值,没有他包含的其他对象(一对多)值,后来发现除非显示的调用其他对象引用,值才会出现,方才突然恍然大悟。