Android 的对象关系映射框架 —— Homocentric
Homocentric框架其实是一个意外产物,在公司做项目时,苦于数据库的繁琐,需要对代码进行一层层的封装,遂产生了冲动,不如自己写一个框架吧,于是说做就做,由于学过JavaEE的三大框架,对其中的Hibernate的原理有一定的了解,因此写起来并不是十分的吃力,断断续续的过了三个月,Homocentric的第一个版本出来了,不消说,用起来确实方便多了,闲话少说,开始正题。
Homocentric在使用方法上与Hibernate几乎一致(因为本人也是模仿它做的),对外提供一个接口负责执行被持久化对象的CRUD操作——Sessoin,Session共有提供了十个方法,分别是:
Java代码- 1.public List get(Object obj) throws JavaBeanException;
- 2.public Object get(Class<?> clazz, Integer id);
- 3.public List getPaging(Class<?> clazz, int start, int count);
- 4.public boolean save(Object obj) throws JavaBeanException;
- 5.public boolean update(Object obj) throws JavaBeanException;
- 6.public boolean delete(Object obj) throws JavaBeanException;
- 7.public int getCount(Class<?> clazz);
- 8.public List get(String sql, String[] selectionArgs);
- 9.public void exec(String sql);
- 10.public void closeDB();
复制代码 这十个方法在此不做过多的介绍了,相信看到方法的名和参数就应该知道它的作用。
其中的某些方法的参数obj是JavaBean,JavaBean需要继承Holder,目前Holder类没有任何可用的方法,备以后版本扩展使用,如果JavaBean没有继承Holder而使用Session,则会抛出JavaBeanException异常。
Session是受保护的类,通过SeesionFactory类可以得到,如下:
Java代码- 1.Session session = SessionFactory.getSession(context);
复制代码 其中Context是Android的上下文对象。
介绍完两个关键类,下面需要说下Homocentric的配置文件:homo.cfg.xml。
配置文件需要定义APP所需要的数据库及JavaBean所对应的数据库表,具体格式示例如下:
Xml代码- 1.<?xml version="1.0" encoding="UTF-8"?>
- 2.<library name="shop" version="1">
- 3. <table name="user">
- 4. <property name="name" type="VARCHAR" length="50" />
- 5. <property name="psd" type="VARCHAR" length="30" />
- 6. </table>
- 7.</library>
复制代码 library标签定义数据库,其中name是数据库名,version是数据库版本,如果版本大于当前的数据库版本,则删除原来数据库重新创建。
table标签定义数据库表,其中name是表名。
property标签定义表的字段属性,其中name是字段名,type是字段类型,length是字段长度,如果其值为-1,则表示无长度要求。
作为第一个版本,目前没有特别的复杂的处理,比如外键等。
下面使用一个简单的例子,来介绍Homocentric的使用。
Java代码- 1.public class User extend Holder {
- 2. private String name;
- 3. private String psd;
- 4.
- 5. public User(){}
- 6.
- 7. public void setName(String name) {
- 8. this.name = name;
- 9. }
- 10.
- 11. public ...
- 12.}
复制代码 定义好User后,相应的需要修改配置文件,为了避免重复,直接就使用上面的配置文件例子,将这些准备好后,可以编写UserDao了。
Java代码- 1.public class UserDao {
- 2. protected Session session;
- 3. protected Class clazz;
- 4.
- 5. public UserDao(){
- 6. clazz = User.class;
- 7. session = SessionFactory.getSession(context);
- 8. }
- 9.
- 10. public User getAll() {
- 11. try {
- 12. return session.get("FROM " + clazz.getName(), null);
- 13. } catch (SQLSyntaxException e) {
- 14. e.printStackTrace();
- 15. }
- 16.
- 17. return null;
- 18. }
- 19.
- 20. public boolean save(User user) {
- 21. try {
- 22. return session.save(user);
- 23. } catch (JavaBeanException e) {
- 24. e.printStackTrace();
- 25. }
- 26.
- 27. return false;
- 28. }
- 29.
- 30. public ...
- 31.}
-
复制代码 UserDao具体实现了User在数据库的CRUD的操作。
Homocentric框架的一些基本功能差不多就是这些了,于是精力有限,一些关于数据库的更高级的功能没有加入,比如外键关联,JavaBean中的某个属性不是基本数据类型等,关于这些将会在下一个版本中发布。 |