不過如果只是要寫一個小小且不太會擴充的db那就先不需要這把牛刀了!
後面有完全沒有整理過(囧)的範例code,可能看code比較好懂.
此架構大致分為五個部分:
DBHelper
- 這個就是一般在寫db的時候繼承SQLiteOpenHelper而來的class,這邊增加了一些function讓操作更便利一點.擔負起了依照schema來建立table、實際操作db等重責大任.
- 這個class是獨立於project的,可以直接貼到別的project.
DBSchema
- 掌握了整個db的架構,建立實體以後會喂给DBHelper的constructor吃.
- 這個class幾乎也獨立於不同project,除了要在變數定義的時候告知這個project中table的相關資訊.另外加入新的Table時也記得要在這裡增加定義.
DBTable
- 每一個table有自己專屬的class,所以加入新table的時候基本上不會動到舊的架構.
- 提供的method儘量不存取到自己以外的table.
- 提供存取自己table 的method给data provider使用.
Data Provider
- 扮演db的adapter角色,可以存取多個db並且將資料處理組合後以便使用.
- app的其他部分需要存取資料理當只會使用到Provider,不會直接使用DBTable.
- Provider理當是唯一會直接使用到DBTable的class.
- 可以視需求增加不同的data provider
Global initialization
因為DBHelper是採用singleton,所以用application context來做初始化.我是另外建立了一個application class來確保db在被任何activity使用前已經初始劃完成.
建立一個新的table步驟:
- 先建立一個table class.
- 去Schema中加入Table資訊.
- 接著就可以在data provider中使用這個table.
剩下的就讓code自己來解說吧XD
沒有留言:
張貼留言