基于resty orm的ActiveRecord操作數(shù)據(jù)指南
Active Record(中文名:活動記錄)是一種領域模型模式,特點是一個模型類對應關系型數(shù)據(jù)庫中的一個表,而模型類的一個實例對應表中的一行記錄。
Active Record 和 Row Gateway (行記錄入口)十分相似,但前者是領域模型,后者是一種數(shù)據(jù)源模式。關系型數(shù)據(jù)庫往往通過外鍵來表述實體關系,Active Record 在數(shù)據(jù)源層面上也將這種關系映射為對象的關聯(lián)和聚集。
Active Record 適合非常簡單的領域需求,尤其在領域模型和數(shù)據(jù)庫模型十分相似的情況下。如果遇到更加復雜的領域模型結構(例如用到繼承、策略的領域模型),往往需要使用分離數(shù)據(jù)源的領域模型,結合 Data Mapper (數(shù)據(jù)映射器)使用。
Active Record 驅(qū)動框架一般兼有 ORM 框架的功能,但 Active Record 不是簡單的 ORM,正如和 Row Gateway 的區(qū)別。
著名的例子是全棧(Full Stack) Web 開發(fā)框架 Ruby on Rails ,其默認使用一個純 Ruby 寫成的 Active Record 框架來驅(qū)動 MVC 中的模型層。
在Resty中ActiveRecord表現(xiàn)為兩部分:
Model
映射指定的表數(shù)據(jù),數(shù)據(jù)存儲在一個attrs的map中,map的key不區(qū)分大小寫,適合具有固定業(yè)務的實體,可動態(tài)切換數(shù)據(jù)源,內(nèi)部實現(xiàn)了屬性檢測和Query Cache,包含了基本的數(shù)據(jù)操作方法
Record
除了具有model的全部特征外,還是一個動態(tài)的映射,適合動態(tài)的數(shù)據(jù)表業(yè)務,不需要建立指定的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
//假設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 達到相同的效果,而不需要編寫User.java
//Record userDAO=new Record("sec_user","id,sid",true,true);
//userDAO.findAll();
return User.dao.findAll();
}
}以上就是基于resty orm的ActiveRecord操作數(shù)據(jù)指南的詳細內(nèi)容,更多關于resty orm的ActiveRecord數(shù)據(jù)操作的資料請關注腳本之家其它相關文章!
相關文章
java中@EnableAutoConfiguration注解使用
在Spring Boot框架中,@EnableAutoConfiguration是一種非常重要的注解,本文就來介紹一下java中@EnableAutoConfiguration注解使用,感興趣的可以了解一下2023-11-11
Mybatis以main方法形式調(diào)用dao層執(zhí)行代碼實例
這篇文章主要介紹了Mybatis以main方法形式調(diào)用dao層執(zhí)行代碼實例,MyBatis 是一款優(yōu)秀的持久層框架,MyBatis 免除了幾乎所有的 JDBC 代碼以及設置參數(shù)和獲取結果集的工作,需要的朋友可以參考下2023-08-08
java數(shù)據(jù)結構之java實現(xiàn)棧
這篇文章主要介紹了java數(shù)據(jù)結構實現(xiàn)棧,需要的朋友可以參考下2014-03-03

