基于resty orm的ActiveRecord操作數(shù)據(jù)指南
Active Record(中文名:活動記錄)是一種領(lǐng)域模型模式,特點是一個模型類對應(yīng)關(guān)系型數(shù)據(jù)庫中的一個表,而模型類的一個實例對應(yīng)表中的一行記錄。
Active Record 和 Row Gateway (行記錄入口)十分相似,但前者是領(lǐng)域模型,后者是一種數(shù)據(jù)源模式。關(guān)系型數(shù)據(jù)庫往往通過外鍵來表述實體關(guān)系,Active Record 在數(shù)據(jù)源層面上也將這種關(guān)系映射為對象的關(guān)聯(lián)和聚集。
Active Record 適合非常簡單的領(lǐng)域需求,尤其在領(lǐng)域模型和數(shù)據(jù)庫模型十分相似的情況下。如果遇到更加復(fù)雜的領(lǐng)域模型結(jié)構(gòu)(例如用到繼承、策略的領(lǐng)域模型),往往需要使用分離數(shù)據(jù)源的領(lǐng)域模型,結(jié)合 Data Mapper (數(shù)據(jù)映射器)使用。
Active Record 驅(qū)動框架一般兼有 ORM 框架的功能,但 Active Record 不是簡單的 ORM,正如和 Row Gateway 的區(qū)別。
著名的例子是全棧(Full Stack) Web 開發(fā)框架 Ruby on Rails ,其默認(rèn)使用一個純 Ruby 寫成的 Active Record 框架來驅(qū)動 MVC 中的模型層。
在Resty中ActiveRecord表現(xiàn)為兩部分:
Model
映射指定的表數(shù)據(jù),數(shù)據(jù)存儲在一個attrs的map中,map的key不區(qū)分大小寫,適合具有固定業(yè)務(wù)的實體,可動態(tài)切換數(shù)據(jù)源,內(nèi)部實現(xiàn)了屬性檢測和Query Cache,包含了基本的數(shù)據(jù)操作方法
Record
除了具有model的全部特征外,還是一個動態(tài)的映射,適合動態(tài)的數(shù)據(jù)表業(yè)務(wù),不需要建立指定的model來映射數(shù)據(jù)
使用方法
1. 在application.properties 配置jdbc連接,連接池等
##druid plugin auto load,default 為數(shù)據(jù)源名字 ##druid plugin auto load db.default.url=jdbc:mysql://127.0.0.1/example?useUnicode=true&characterEncoding=UTF-8 db.default.user=dev db.default.password=dev1010 db.default.dialect=mysql #c3p0配置 c3p0.default.minPoolSize=3 c3p0.default.maxPoolSize=20 #druid配置 #druid.default.initialSize=10 #druid.default.maxPoolPreparedStatementPerConnectionSize=20 #druid.default.timeBetweenConnectErrorMillis=1000 #druid.default.filters=slf4j,stat,wall #flyway database migration auto load flyway.default.valid.clean=true flyway.default.migration.auto=true flyway.default.migration.initOnMigrate=true
2. 在AppConfig類中配置ActiveRecordPlugin,來加載連接和映射model
public void configPlugin(PluginLoader pluginLoader) { C3p0DataSourceProvider cdsp = new C3p0DataSourceProvider("default"); ActiveRecordPlugin activeRecordCdsp = new ActiveRecordPlugin(cdsp, true); //映射的model必須能被掃描到 activeRecordCdsp.addIncludePaths("cn.dreampie.orm"); pluginLoader.add(activeRecordCdsp); }
3. 編寫一個Model類映射數(shù)據(jù)表,需要繼承Model
//假設(shè)cn.dreampie.orm目錄下有個model叫User //使用table注解來映射指定的數(shù)據(jù)表,generatedKey是自增主鍵(自增方式分為數(shù)據(jù)庫自增和自定義生成器自增,如uuid),primaryKey非自增主鍵,generated=true 表示使用自定義的生成器生成主鍵,cached 表示緩存 @Table(name = "sec_user",generatedKey="id", primaryKey = "sid",generated=true, cached = true) public class User extends Model<User> { public static User dao = new User(); }
4. 編寫一個Resouce來執(zhí)行某個數(shù)據(jù)操作
如果你只使用了orm部分,在其他地方也可以執(zhí)行該操作
@API("/users") public class UserResource extends ApiResource { /** * 查詢一個user的集合 */ @GET public List<User> findAll() { //使用Record 達(dá)到相同的效果,而不需要編寫User.java //Record userDAO=new Record("sec_user","id,sid",true,true); //userDAO.findAll(); return User.dao.findAll(); } }
以上就是基于resty orm的ActiveRecord操作數(shù)據(jù)指南的詳細(xì)內(nèi)容,更多關(guān)于resty orm的ActiveRecord數(shù)據(jù)操作的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
基于Spring Batch向Elasticsearch批量導(dǎo)入數(shù)據(jù)示例
本文介紹了基于Spring Batch向Elasticsearch批量導(dǎo)入數(shù)據(jù)示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-02-02基于SpringBoot接口+Redis解決用戶重復(fù)提交問題
當(dāng)網(wǎng)絡(luò)延遲的情況下用戶多次點擊submit按鈕導(dǎo)致表單重復(fù)提交,用戶提交表單后,點擊瀏覽器的【后退】按鈕回退到表單頁面后進(jìn)行再次提交也會出現(xiàn)用戶重復(fù)提交,辦法有很多,我這里只說一種,利用Redis的set方法搞定,需要的朋友可以參考下2023-10-10java進(jìn)階解析Springboot上傳excel存入數(shù)據(jù)庫步驟
項目需要,寫了一個,批量導(dǎo)入的接口。因為需要使用excel去批量導(dǎo)入數(shù)據(jù),所以寫了一個例子,經(jīng)過測試已經(jīng)可以用于實際開發(fā),這里記錄一下2021-09-09java開啟遠(yuǎn)程debug竟有兩種參數(shù)(最新推薦)
這篇文章主要介紹了java開啟遠(yuǎn)程debug竟有兩種參數(shù),本文結(jié)合實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-07-07