Android 的对象关系映射框架 —— Homocentric

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

public List get(Object obj) throws JavaBeanException;
public Object get(Class<?> clazz, Integer id);
public List getPaging(Class<?> clazz, int start, int count);
public boolean save(Object obj) throws JavaBeanException;
public boolean update(Object obj) throws JavaBeanException;
public boolean delete(Object obj) throws JavaBeanException;
public int getCount(Class<?> clazz);
public List get(String sql, String[] selectionArgs);
public void exec(String sql);
public void closeDB();

这十个方法在此不做过多的介绍了,相信看到方法的名和参数就应该知道它的作用。
其中的某些方法的参数obj是JavaBean,JavaBean需要继承Holder,目前Holder类没有任何可用的方法,备以后版本扩展使用,如果JavaBean没有继承Holder而使用Session,则会抛出JavaBeanException异常。
Session是受保护的类,通过SeesionFactory类可以得到,如下:

Session session = SessionFactory.getSession(context);

其中Context是Android的上下文对象。
介绍完两个关键类,下面需要说下Homocentric的配置文件:homo.cfg.xml。
配置文件需要定义APP所需要的数据库及JavaBean所对应的数据库表,具体格式示例如下:

<?xml version="1.0" encoding="UTF-8"?>
<library name="shop" version="1">
<table name="user">
<property name="name" type="VARCHAR" length="50" />
<property name="psd" type="VARCHAR" length="30" />
</table>
</library>

library标签定义数据库,其中name是数据库名,version是数据库版本,如果版本大于当前的数据库版本,则删除原来数据库重新创建。
table标签定义数据库表,其中name是表名。
property标签定义表的字段属性,其中name是字段名,type是字段类型,length是字段长度,如果其值为-1,则表示无长度要求。
作为第一个版本,目前没有特别的复杂的处理,比如外键等。
下面使用一个简单的例子,来介绍Homocentric的使用。

public class User extend Holder {
private String name;
private String psd;

public User(){}

public void setName(String name) {
this.name = name;
}

public ...
}

定义好User后,相应的需要修改配置文件,为了避免重复,直接就使用上面的配置文件例子,将这些准备好后,可以编写UserDao了。

public class UserDao {
protected Session session;
protected Class clazz;

public UserDao(){
clazz = User.class;
session = SessionFactory.getSession(context);
}

public User getAll() {
try {
return session.get("FROM " + clazz.getName(), null);
} catch (SQLSyntaxException e) {
e.printStackTrace();
}

return null;
}

public boolean save(User user) {
try {
return session.save(user);
} catch (JavaBeanException e) {
e.printStackTrace();
}

return false;
}

public ...
}

UserDao具体实现了User在数据库的CRUD的操作。
Homocentric框架的一些基本功能差不多就是这些了,于是精力有限,一些关于数据库的更高级的功能没有加入,比如外键关联,JavaBean中的某个属性不是基本数据类型等,关于这些将会在下一个版本中发布。
这里附上Homocentric的开发Jar包,供有需求的人使用。

Homocentric的技术交流群:195735749,关于Homocentric的源码及设计将在群里发布。
申明:转载请注明出处,谢谢。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值