免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1765 | 回复: 1
打印 上一主题 下一主题

Android 的对象关系映射框架 —— Homocentric [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-13 22:20 |只看该作者 |倒序浏览
Android 的对象关系映射框架 —— Homocentric
















Homocentric框架其实是一个意外产物,在公司做项目时,苦于数据库的繁琐,需要对代码进行一层层的封装,遂产生了冲动,不如自己写一个框架吧,于是说做就做,由于学过JavaEE的三大框架,对其中的Hibernate的原理有一定的了解,因此写起来并不是十分的吃力,断断续续的过了三个月,Homocentric的第一个版本出来了,不消说,用起来确实方便多了,闲话少说,开始正题。
     Homocentric在使用方法上与Hibernate几乎一致(因为本人也是模仿它做的),对外提供一个接口负责执行被持久化对象的CRUD操作——Sessoin,Session共有提供了十个方法,分别是:



Java代码
  1. 1.public List get(Object obj) throws JavaBeanException;  
  2. 2.public Object get(Class<?> clazz, Integer id);  
  3. 3.public List getPaging(Class<?> clazz, int start, int count);  
  4. 4.public boolean save(Object obj) throws JavaBeanException;  
  5. 5.public boolean update(Object obj) throws JavaBeanException;  
  6. 6.public boolean delete(Object obj) throws JavaBeanException;  
  7. 7.public int getCount(Class<?> clazz);  
  8. 8.public List get(String sql, String[] selectionArgs);  
  9. 9.public void exec(String sql);  
  10. 10.public void closeDB();  
复制代码
这十个方法在此不做过多的介绍了,相信看到方法的名和参数就应该知道它的作用。
    其中的某些方法的参数obj是JavaBean,JavaBean需要继承Holder,目前Holder类没有任何可用的方法,备以后版本扩展使用,如果JavaBean没有继承Holder而使用Session,则会抛出JavaBeanException异常。
     Session是受保护的类,通过SeesionFactory类可以得到,如下:



Java代码
  1. 1.Session session = SessionFactory.getSession(context);  
复制代码
其中Context是Android的上下文对象。
    介绍完两个关键类,下面需要说下Homocentric的配置文件:homo.cfg.xml。
    配置文件需要定义APP所需要的数据库及JavaBean所对应的数据库表,具体格式示例如下:



Xml代码
  1. 1.<?xml version="1.0" encoding="UTF-8"?>  
  2. 2.<library name="shop" version="1">  
  3. 3.  <table name="user">  
  4. 4.    <property name="name" type="VARCHAR" length="50" />  
  5. 5.    <property name="psd" type="VARCHAR" length="30" />  
  6. 6.  </table>  
  7. 7.</library>  
复制代码
library标签定义数据库,其中name是数据库名,version是数据库版本,如果版本大于当前的数据库版本,则删除原来数据库重新创建。
    table标签定义数据库表,其中name是表名。
    property标签定义表的字段属性,其中name是字段名,type是字段类型,length是字段长度,如果其值为-1,则表示无长度要求。
    作为第一个版本,目前没有特别的复杂的处理,比如外键等。
    下面使用一个简单的例子,来介绍Homocentric的使用。



Java代码
  1. 1.public class User extend Holder {  
  2. 2.    private String name;  
  3. 3.    private String psd;  
  4. 4.      
  5. 5.    public User(){}  
  6. 6.  
  7. 7.    public void setName(String name) {  
  8. 8.        this.name = name;  
  9. 9.    }  
  10. 10.  
  11. 11.    public ...  
  12. 12.}  
复制代码
定义好User后,相应的需要修改配置文件,为了避免重复,直接就使用上面的配置文件例子,将这些准备好后,可以编写UserDao了。



Java代码
  1. 1.public class UserDao {  
  2. 2.    protected Session session;  
  3. 3.    protected Class clazz;  
  4. 4.      
  5. 5.    public UserDao(){  
  6. 6.        clazz = User.class;  
  7. 7.        session = SessionFactory.getSession(context);  
  8. 8.    }  
  9. 9.  
  10. 10.    public User getAll() {  
  11. 11.        try {  
  12. 12.            return session.get("FROM " + clazz.getName(), null);  
  13. 13.        } catch (SQLSyntaxException e) {  
  14. 14.            e.printStackTrace();  
  15. 15.        }  
  16. 16.  
  17. 17.        return null;  
  18. 18.    }  
  19. 19.  
  20. 20.    public boolean save(User user) {  
  21. 21.        try {  
  22. 22.            return session.save(user);  
  23. 23.        } catch (JavaBeanException e) {  
  24. 24.            e.printStackTrace();  
  25. 25.        }  
  26. 26.  
  27. 27.        return false;  
  28. 28.    }  
  29. 29.  
  30. 30.    public ...  
  31. 31.}  
复制代码
UserDao具体实现了User在数据库的CRUD的操作。
    Homocentric框架的一些基本功能差不多就是这些了,于是精力有限,一些关于数据库的更高级的功能没有加入,比如外键关联,JavaBean中的某个属性不是基本数据类型等,关于这些将会在下一个版本中发布。

论坛徽章:
0
2 [报告]
发表于 2011-12-20 16:48 |只看该作者
很有用哦  谢谢分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP