Java Web框架入门(5):ORM

对象关系映射(英语:Object Relation Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序设计技术,用于实现面向对象编程语言里的对象自动持久化到关系数据库中。

目前比较流行的ORM框架是hibernate和mybatis,hibernate大而全,mybatis就显得更加灵活。

ORM要解决的问题

  • 对象持久化到数据库里
  • 对象与表的映射规则
  • 持久化方法
  • 表之间的关系

smart 的实现

  1. @Entity注解标识需要持久化的类
  2. 类名(驼峰式)映射为 表名(下划线式)
  3. 属性名(驼峰式)映射为 字段名(下划线式)
  4. @Table、@Column指定特殊的名字
  5. EntityHelper保存映射关系:实体类=》表名,实体类 => (字段名 => 列名)
  6. DataSet封装持久化操作,主要使用以下俩类
  7. SqlHelper将对象操作转化为SQL语句、从smart-sql.properties中获取SQL语句
  8. DatabaseHelper封装JDBC操作

相关博客:
https://my.oschina.net/huangyong/blog/158916
https://my.oschina.net/huangyong/blog/266682

ORM 框架类图

jfinal的实现

jfinal 使用了 ActiveRecord 这种领域模型模式

  1. 每一个数据库表对应创建一个类.类的每一个对象实例对应于数据库中表的一行记录; 通常表的每个字段在类中都有相应的Field;
  2. ActiveRecord同时负责把自己持久化. 在ActiveRecord中封装了对数据库的访问, 即CRUD;
  3. ActiveRecord是一种领域模型(Domain Model), 封装了部分业务逻辑;

输入图片说明

提供了两套处理逻辑:

  1. 独创的Db+Record模式
  • Record 类是通用的实体类,使用Map存储数据表信息:列名、值
  • Db 负责对 Record进行增删改查操作
  1. activeRecord模式
  • 配置类中开启ActiveRecordPlugin,并配置映射关系:<表名,主键ID,类>
  • Model 类在 Map中存储数据表信息,同时包含一系列的数据库操作
  • Generator 工具类根据数据库生成 BaseBlog和 Blog和 配置文件
  • BaseBlog 继承 Model,并实现setter、getter方法,如此就可像普通 pojo一样操作了
  • Blog 继承 BaseBlog,用户自主实现业务功能

小结

可见 smart 实现了数据库操作的基础功能,而 jfinal 有了更深入的思考,给出两套实现方式,且各有特色

jfinal 中,使用 Config记录一个数据库连接池,DbKit管理多个 Config,即多个数据库连接池,所以 jfinal可以进行多数据库开发。

1.Model封装了数据库数据和行为,针对每一个数据表 2.Db+Record分别管理数据和行为,不针对具体的数据表 3.ActiveRecordPlugin绑定一个数据库,可以有多个,在 Smart4jConfig.configPlugin中添加 4.Db.use(configName).xxx()方法切换数据库,仅作用于xxx方法,每次都要切换(我想过用ThreadLocal实现,持续起作用,但是用完必须手动切换回原来的数据库,否则会出错,会增加bug的可能)

转载于:https://my.oschina.net/u/3026036/blog/789296

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值