<!-- --><!-- --> <!-- -->
S2DAO 中例子程序使用的 HSQL ,默认是内存表,增删改操作后,只能使用 select 所有数据,打印所有数据来看效果,但是结果并不清楚。
花了不少时间进行调查,最终找到了 S2DAO 中例子程序连接 MySQL 数据库的方法。
需要修改三个文件:
1.修改 s2DAO\s2-dao\src\main\resources\dbms.properties ,
将 =org.seasar.dao.dbms.Standard 改成 = org.seasar.dao.dbms.MySQL
即将指定数据库从 HSQL 改成 MySQL
-》S2DAO例子程序的默认标准配置是内存数据库HSQL。(20090519追加)
2.s2DAO\s2-dao\src\test\resources\j2ee.dicon ,注释掉 hsqldb 部分的配置部分(默认设置),打开 MySQL 的配置部分并进行设置:
<component name="xaDataSource" class="org.seasar.extension.dbcp.impl.XADataSourceImpl"> <property name="driverClassName"> "com.mysql.jdbc.Driver" </property> <property name="URL"> "jdbc:mysql://localhost:3306/test" </property> <property name="user">"root"</property> <property name="password">"mysql"</property> </component>
3.s2DAO/s2-dao-examples/src/main/resources/examples/dao/EmployeeDepartmentDao.dicon 配置文件中,添加 <include path="j2ee.dicon"/>
核心配置如下(一个 dicon 配置文件中可以配置多个 DAO ):
<components> <include path="dao.dicon"/> <include path="j2ee.dicon"/> <component class="examples.dao.EmployeeDao"> <aspect>dao.interceptor</aspect> </component> <component class="examples.dao.DepartmentDao"> <aspect>dao.interceptor</aspect> </component> </components>
将 MySQL 的数据库驱动 jar 包加到项目的 buildpath 中来。
最后,就可以在 EmployeeDepartmentDaoClient 文件中进行测试,对雇员表和部门表同时进行操作,增删改查都可以了,即能对传统意义上的数据库进行相应操作。
因为项目要使用 SQL Server 数据库,又如法炮制,连接了 SQL Server 数据库,搞定。
接下来,有两个问题:
1 是数据库增删改操作的事务处理问题(现在无论我是否在 EmployeeDepartmentDao.dicon 中配置 Exception 项(根据官网在自动异常处理那一段的说明和示例),在发生 SQL 异常时,都会抛出未捕获异常,没有实现事务管理,比如回滚等 );
有同事认为应该是在 Intra-mart 的 jta-10.dicon 文件中进行配置,但是还没试验出来。
2 是和 Intra-mart 的联合问题,怎样将两者有机结合起来,我们还没调查清楚。
这两个问题下周要继续调查。