RDBなしのとき...DBFluteは?

概要

そのときのDBFluteの役割

RDBにアクセスしないアプリで LastaFlute を使う時は、DBFluteは以下のような扱いになります。

Runtime
LastaFluteやMailFluteがライブラリとして使う
FreeGen
LastaFluteでふんだんに使っているのでガンガン使う
JDBC
DocのためにJDBCが必要、ただしちょっと一工夫必要 (後述)
Doc
PropertiesHTMLを生成するために使う

なので、DBFlute Runtime も DBFlute Client も DBFlute Engine も一通り必要であることには変わりません。

ただ、JDBC, Docタスクを叩くためにちょっとだけ一工夫が必要です。

叩くDBFluteタスク

JDBC(21), Doc(22), FreeGen(12) を叩きます。

e.g. jdbc, doc, freegen @Command
...$ manage.sh 21,22,12

FreeGen はディベロッパーがよく叩きますが、JDBC, Doc は叩くタイミングがありません。 普段はクラスの自動生成のタイミングで自然と叩かれますが、それがないので明示的に誰かが思いついて叩かないといけません。 思いつきましょう。

Docタスクのための一工夫

RDBがない状態でDocタスクを叩くために、ちょっと一工夫が必要です。

basicInfoMap.dfprop

database を H2 database にします。(ダミースキーマのために)

e.g. set h2 to database @basicInfoMap.dfprop
    ; database = h2

databaseInfoMap.dfprop

インメモリのダミースキーマ (dummydb) を定義します。

e.g. set h2 to database settings @databaseInfoMap.dfprop
    ; driver   = org.h2.Driver
    ; url      = jdbc:h2:mem:dummydb
    ; schema   = 
    ; user     = dummydb
    ; password = dummydb

additionalTableMap.dfprop

ダミーテーブルをひとつだけ additionalTable として定義します。

additionalTableMap.dfprop を作成して...

e.g. make additionalTableMap.dfprop in dfprop @Directory
dfprop
 |-additionalTableMap.dfprop
 |-basicInfoMap.dfprop
 |-databaseInfoMap.dfprop

以下の内容を記載します。(JDBCタスクは、テーブルが一つ必要なため)

e.g. define dummy table @additionalTableMap.dfprop
# /---------------------------------------------------------------------------
# additionalTableMap: (NotRequired - Default map:{})
# 
# This property is valid at only JDBC task.
# You should use this when JDBC can not provide table information
# and when you have no table but call stored procedures only.
# 
# The element 'columnMap' is only required in table elements. 
# The element 'type' is only required in column elements. 
# 
# Specification:
# map: {
#     [table-name] = map:{
#         columnMap = map:{
#             [column-name] = map:{
#                 type = [column JDBC type] ; dbType = [column DB type]
#                 ; required = [true or false] ; size = [column size]
#                 ; primaryKey = [true or false] ; pkName = [PK constraint name]
#                 ; autoIncrement = [true or false]
#                 ; default = [default value] ; comment = [column comment]
#             }
#         }
#         ; comment = [table comment]
#     }
# }
# 
# *The line that starts with '#' means comment-out.
#
map:{
    ; DUMMY_MEMBER = map:{
        ; columnMap = map:{
            ; DUMMY_ID = map:{
                ; type = INTEGER ; dbType = INTEGER
                ; required = true ; primaryKey = true ; autoIncrement = true
            }
            ; DUMMY_NAME = map:{ type = VARCHAR ; required = true ; size = 123 }
            ; DUMMY_DATE = map:{ type = DATE }
        }
    }
}
# ----------------/
#
# *Refer to typeMappingMap.dfprop for JDBC type reference.

その他いろいろ空っぽに

必須ではありませんが、何か入ってると動かない可能性もあるので空っぽにしておきましょう。

classificationDefinitionMap.dfprop
map:{} に
classificationDeploymentMap.dfprop
map:{} に
commonColumnMap.dfprop
map:{} に
playsqlディレクトリ
ディレクトリだけにして.gitkeep