日系框架之seasar2(S2JDBC) -----使用HSQLDB

来源:互联网 发布:多乐士儿童漆 知乎 编辑:程序博客网 时间:2024/04/20 20:28

 接上例:http://blog.csdn.net/kunshan_shenbin/archive/2008/08/22/2813977.aspx

 

src目录下追加data文件夹,并新建2个文件:

test.properties

  1. #HSQL Database Engine
  2. #Sat Nov 03 19:49:53 JST 2007
  3. hsqldb.script_format=0
  4. runtime.gc_interval=0
  5. sql.enforce_strict_size=false
  6. hsqldb.cache_size_scale=8
  7. readonly=false
  8. hsqldb.nio_data_file=true
  9. hsqldb.cache_scale=14
  10. version=1.8.0
  11. hsqldb.default_table_type=memory
  12. hsqldb.cache_file_scale=1
  13. hsqldb.log_size=200
  14. modified=yes
  15. hsqldb.cache_version=1.7.0
  16. hsqldb.original_version=1.8.0
  17. hsqldb.compatible_version=1.8.0

test.script

  1. CREATE SCHEMA PUBLIC AUTHORIZATION DBA
  2. CREATE USER SA PASSWORD ""
  3. GRANT DBA TO SA
  4. SET WRITE_DELAY 20
  5. SET SCHEMA PUBLIC
  6. create table department (id integer generated by default as identity, name varchar(255) not null,version integer not null)
  7. create table address (id integer generated by default as identity, name varchar(255) not null, version integer not null)
  8. create table employee (id integer generated by default as identity,name varchar(255) not null,job_type integer not null,salary integer,department_id integer,address_id integer,version integer not null,constraint fk_department FOREIGN KEY(DEPARTMENT_ID) REFERENCES DEPARTMENT(ID),constraint fk_address FOREIGN KEY(ADDRESS_ID) REFERENCES ADDRESS(ID))
  9. INSERT INTO DEPARTMENT VALUES(1,'ACCOUNTING',1)
  10. INSERT INTO DEPARTMENT VALUES(2,'RESEARCH',1)
  11. INSERT INTO DEPARTMENT VALUES(3,'SALES',1)
  12. INSERT INTO DEPARTMENT VALUES(4,'OPERATIONS',1)
  13. INSERT INTO ADDRESS VALUES(1,'STREET 1',1)
  14. INSERT INTO ADDRESS VALUES(2,'STREET 2',1)
  15. INSERT INTO ADDRESS VALUES(3,'STREET 3',1)
  16. INSERT INTO ADDRESS VALUES(4,'STREET 4',1)
  17. INSERT INTO ADDRESS VALUES(5,'STREET 5',1)
  18. INSERT INTO ADDRESS VALUES(6,'STREET 6',1)
  19. INSERT INTO ADDRESS VALUES(7,'STREET 7',1)
  20. INSERT INTO ADDRESS VALUES(8,'STREET 8',1)
  21. INSERT INTO ADDRESS VALUES(9,'STREET 9',1)
  22. INSERT INTO ADDRESS VALUES(10,'STREET 10',1)
  23. INSERT INTO ADDRESS VALUES(11,'STREET 11',1)
  24. INSERT INTO ADDRESS VALUES(12,'STREET 12',1)
  25. INSERT INTO ADDRESS VALUES(13,'STREET 13',1)
  26. INSERT INTO ADDRESS VALUES(14,'STREET 14',1)
  27. INSERT INTO EMPLOYEE VALUES(1,'ALLEN',1,1600,3,1,1)
  28. INSERT INTO EMPLOYEE VALUES(2,'WARD',1,1250,3,2,1)
  29. INSERT INTO EMPLOYEE VALUES(3,'JONES',2,2975,2,3,1)
  30. INSERT INTO EMPLOYEE VALUES(4,'MARTIN',1,1250,3,4,1)
  31. INSERT INTO EMPLOYEE VALUES(5,'BLAKE',2,2850,3,5,1)
  32. INSERT INTO EMPLOYEE VALUES(6,'CLARK',2,2450,1,6,1)
  33. INSERT INTO EMPLOYEE VALUES(7,'SCOTT',3,3000,2,7,1)
  34. INSERT INTO EMPLOYEE VALUES(8,'KING',4,5000,1,8,1)
  35. INSERT INTO EMPLOYEE VALUES(9,'TURNER',1,1500,3,9,1)
  36. INSERT INTO EMPLOYEE VALUES(10,'ADAMS',0,1100,2,10,1)
  37. INSERT INTO EMPLOYEE VALUES(11,'JAMES',0,950,3,11,1)
  38. INSERT INTO EMPLOYEE VALUES(12,'FORD',3,3000,2,12,1)
  39. INSERT INTO EMPLOYEE VALUES(13,'MILLER',0,1300,1,13,1)
  40. INSERT INTO EMPLOYEE VALUES(14,'SMITH',0,800,2,14,1)

更改配置文件:

jdbc.dicon

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE components PUBLIC "-//SEASAR2.1//DTD S2Container//EN"
  3.     "http://www.seasar.org/dtd/components21.dtd">
  4. <components namespace="jdbc">
  5.     <include path="jta.dicon"/>
  6.     <!-- for MYSQLDB -->
  7. <!--    
  8.     <component name="xaDataSource"
  9.         class="org.seasar.extension.dbcp.impl.XADataSourceImpl">
  10.         <property name="driverClassName">
  11.             "com.mysql.jdbc.Driver"
  12.         </property>
  13.         <property name="URL">
  14.             "jdbc:mysql://localhost:3306/seasar2"
  15.         </property>
  16.         <property name="user">"root"</property>
  17.         <property name="password">"root"</property>
  18.     </component>
  19. -->
  20.     <!-- for HSQLDB -->
  21.     <component name="xaDataSource"
  22.         class="org.seasar.extension.dbcp.impl.XADataSourceImpl">
  23.         <property name="driverClassName">
  24.             "org.hsqldb.jdbcDriver"
  25.         </property>
  26.         <property name="URL">
  27.             "jdbc:hsqldb:file:"
  28.                 + @org.seasar.framework.util.ResourceUtil@getBuildDir(@com.s2jdbc.entity.Employee@class).getCanonicalPath()
  29.                 + "/data/test"
  30.         </property>
  31.         <property name="user">"sa"</property>
  32.         <property name="password">""</property>
  33.     </component>
  34.         
  35.     <!-- for H2 -->
  36.     <!--
  37.     <component name="xaDataSource"
  38.         class="org.seasar.extension.dbcp.impl.XADataSourceImpl">
  39.         <property name="driverClassName">
  40.             "org.h2.Driver"
  41.         </property>
  42.         <property name="URL">
  43.             "jdbc:h2:file:"
  44.                 + @org.seasar.framework.util.ResourceUtil@getBuildDir(@examples.entity.JdbcManagerTest@class).getCanonicalPath()
  45.                 + "/data/demo;DB_CLOSE_ON_EXIT=FALSE"
  46.         </property>
  47.         <property name="user">"sa"</property>
  48.         <property name="password"></property>
  49.     </component>
  50.     -->
  51.     <!-- for Oracle -->
  52.     <!--
  53.     <component name="xaDataSource"
  54.         class="org.seasar.extension.dbcp.impl.XADataSourceImpl">
  55.         <property name="driverClassName">
  56.             "oracle.jdbc.driver.OracleDriver"
  57.         </property>
  58.         <property name="URL">
  59.             "jdbc:oracle:thin:@xxx:1521:xxx"
  60.         </property>
  61.         <property name="user">"xxx"</property>
  62.         <property name="password">"xxx"</property>
  63.     </component>
  64.     -->
  65.     <!-- for PostgreSQL -->
  66.     <!--
  67.     <component name="xaDataSource"
  68.         class="org.seasar.extension.dbcp.impl.XADataSourceImpl">
  69.         <property name="driverClassName">
  70.             "org.postgresql.Driver"
  71.         </property>
  72.         <property name="URL">
  73.           "jdbc:postgresql://localhost/TEST"
  74.         </property>
  75.         <property name="user">"xxxx"</property>
  76.         <property name="password">"xxxx"</property>
  77.     </component>
  78.     -->
  79.     <!-- MySQL
  80.     - MySQL4.0以下でマルチバイト文字を扱う場合には,URL指定の後に,
  81.         以下の接続パラメータを追加で指定してください.
  82.         useUnicode=true
  83.         characterEncoding=[MySQLのエンコーディングに対応した
  84.         Javaのエンコーディング名]
  85.         例:"jdbc:mysql://localhost:3306/test?useUnicode=true" +
  86.         "&characterEncoding=Windows-31J"
  87.         
  88.     - MySQL5.0以降で,エンコーディングがeucjpmsの列を扱う場合には,
  89.         URL指定の後に,以下の接続パラメータを追加で指定してください.
  90.         characterEncoding=UTF-8またはWindows-31J
  91.         characterSetResults=UTF-8またはWindows-31J
  92.         例:"jdbc:mysql://localhost:3306/test?characterEncoding=UTF-8" +
  93.         "&characterSetResults=UTF-8"
  94.         この指定をしない場合,Java側でUCS-2⇔EUC_JP_Solarisの変換が
  95.         行なわれるため,ユーザー定義外字などの一部の文字が化けます.
  96.         この指定をすることで,MySQL側でeucjpms⇔ucs2⇔utf8(cp932)の
  97.         変換が行なわれ,Java側でUCS-2⇔UTF-8(Windows-31J)の変換が
  98.         行なわれるようになります.この結果,文字化けを防げます.
  99.         なおJIS X 0212(補助漢字)を使用する場合は,Windows-31Jではなく
  100.         UTF-8を指定する必要があります.
  101.         
  102.     - 上記以外の場合は,my.cnfでdefault-character-setの設定を適切に
  103.         (cp932やutf8など.デフォルトのlatin1は不可)行なっていれば,
  104.         文字化けは防げます.
  105.     <component name="xaDataSource"
  106.         class="org.seasar.extension.dbcp.impl.XADataSourceImpl">
  107.         <property name="driverClassName">
  108.             "com.mysql.jdbc.Driver"
  109.         </property>
  110.         <property name="URL">
  111.             "jdbc:mysql://localhost:3306/test"
  112.         </property>
  113.         <property name="user">"xxx"</property>
  114.         <property name="password">"xxx"</property>
  115.     </component>
  116.     -->
  117.     <!-- for SQLServer -->
  118.     <!--
  119.     <component name="xaDataSource"
  120.         class="org.seasar.extension.dbcp.impl.XADataSourceImpl">
  121.         <property name="driverClassName">
  122.             "net.sourceforge.jtds.jdbc.Driver"
  123.         </property>
  124.         <property name="URL">
  125.             "jdbc:jtds:sqlserver://localhost/TEST;instance=SQLEXPRESS"
  126.         </property>
  127.         <property name="user">"xxxx"</property>
  128.         <property name="password">"xxxx"</property>
  129.     </component>
  130.     -->
  131.     <component name="connectionPool"
  132.         class="org.seasar.extension.dbcp.impl.ConnectionPoolImpl">
  133.         <property name="timeout">600</property>
  134.         <property name="maxPoolSize">10</property>
  135.         <property name="allowLocalTx">true</property>
  136.         <destroyMethod name="close"/>
  137.     </component>
  138.     <component name="DataSource"
  139.         class="org.seasar.extension.dbcp.impl.DataSourceImpl"
  140.     />
  141.     <!-- from JNDI -->
  142.     <!--
  143.     <component name="DataSource"
  144.         class="javax.sql.DataSource">
  145.         @org.seasar.extension.j2ee.JndiResourceLocator@lookup("java:comp/env/jdbc/DataSource")
  146.     </component>
  147.     -->
  148.     <!--
  149.     <component name="dataSource"
  150.         class="org.seasar.extension.datasource.impl.SelectableDataSourceProxy"/>
  151.     -->
  152. </components>

s2jdbc.dicon(更改dialect)

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
  3.     "http://www.seasar.org/dtd/components24.dtd">
  4. <components>
  5.     <include path="jdbc.dicon"/>
  6.     <include path="s2jdbc-internal.dicon"/>
  7.     <component name="jdbcManager" class="org.seasar.extension.jdbc.manager.JdbcManagerImpl">
  8.         <property name="maxRows">0</property>
  9.         <property name="fetchSize">0</property>
  10.         <property name="queryTimeout">0</property>
  11.         <property name="dialect">hsqlDialect</property>
  12.         
  13.         <!--
  14.         <property name="dialect">db2390Dialect</property>
  15.         <property name="dialect">db2400Dialect</property>
  16.         <property name="dialect">db2Dialect</property>
  17.         <property name="dialect">derbyDialect</property>
  18.         <property name="dialect">firebirdDialect</property>
  19.         <property name="dialect">h2Dialect</property>
  20.         <property name="dialect">hsqlDialect</property>
  21.         <property name="dialect">interbaseDialect</property>
  22.         <property name="dialect">maxdbDialect</property>
  23.         <property name="dialect">mssql2005Dialect</property>
  24.         <property name="dialect">mssqlDialect</property>
  25.         <property name="dialect">mysqlDialect</property>
  26.         <property name="dialect">oracleDialect</property>
  27.         <property name="dialect">postgreDialect</property>
  28.         <property name="dialect">standardDialect</property>
  29.         <property name="dialect">sybaseDialect</property>
  30.         -->
  31.     </component>
  32. </components>

确保工程中已经加载hsqldb的jdbc驱动。

完毕。

原创粉丝点击