[原创]用.Net打造一个移动客户端(Android/IOS)的服务端框架NHM(三)——搭建Android开发环境,用Hibernate生成Android项目的Model层

客户端开发环境

开发Android客户端,首先要做的是配置Android开发环境,相对于服务器端开发环境的配置,Android的开发环境要稍微复杂一些。这里,我们采用Eclipse+ADT+Hibernate来完成我们的开发。关于如何配置Eclipse、安装android虚拟机的具体细节,不是本文的探讨范围,读者如有兴趣可以参考其他文章,我们这里主要讲一下配置这个环境的一些注意事项和测试环境OK的方法。

(一)需要的工具

1、JDK 6

下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html

2、Eclipse Indigo

下载地址:http://www.eclipse.org/downloads/packages/release/indigo/r

3、Googld Android SDK

下载地址:http://developer.android.com/sdk/index.html

4、Android Development Tools

(在Eclipse中在线安装)

Eclipse Update Site地址:https://dl-ssl.google.com/android/eclipse

5、微软 MS SQLSERVER JDBC Driver 2.0

下载地址:http://www.microsoft.com/downloads/zh-cn/details.aspx?displaylang=zh-cn&FamilyID=99b21b65-e98f-4a61-b811-19912601fdc9

6、Hibernate Tools

(在Eclipse中在线安装)

Eclipse Update Site地址(Indigo):http://download.jboss.org/jbosstools/updates/development/indigo/

Eclipse Update Site地址(Helios):http://download.jboss.org/jbosstools/updates/stable/helios/

7、SVN插件

(在Eclipse中在线安装)

Eclipse Update Site地址:http://subclipse.tigris.org/update_1.6.x

对开发环境,有几点需要说明下:

1、为什么不用MyEclipse

答:由于在Eclipse中配置Hibernate从来都是一件让人想想就头大的事情,所以在做J2EE的时候,就有很多程序员倾向于使用集成了HIbernate的MyEclipse。但是MyEclipse对中国开发者的态度让人太不爽,最新版本甚至在插件中心中直接封掉了所有来自中国的IP(也就是说MyEclipse认为只要是中国使用MyEclipse都是盗版,如果你用Myeclipse打开插件中心,装一个插件的时候,发现进度条永远停留在某个位置,那就是已经被人家封了,shit),导致你无法使用他的插件中心安装任何插件,如SVN、ADT。另外,MyEclpise是收费软件,而Eclipse是免费软件,作为开发团队或公司的开发部门,建议不要使用盗版的开发工具和操作系统进行开发,所以Eclipse是只要你能配置好Hibernate,就没有任何使用MyEclipse的理由。

2、提到盗版,如何免费避免?

答:如果开发Android客户端,可以用ubuntu + eclipse。而开发.NET服务端的程序员,则必须使用正版WIndows系统,但可以使用免费的Visual Stuido Exopress。版本控制使用免费的SVN或CVS,看您哪个顺手吧,我是从CVS转到SVN了,SVN真不错!当然如果你服务端使用JSP或PHP,就可以完全转到LINUX平台了。如果还要做IOS开发,不如采购苹果机吧,在mac os x lion或sl,都可以使用eclipse的mac版本进行android开发。

3、搞错了吧?HIbernate在android开发中有什么用?

答:提到HIbernate可能很容易让人想起spring struts这些东西,其实,Hibernate是很好的ORM工具,我们这里使用Hibernate的Code Generate功能来生成Model层,非常方便!

(二)安装顺序、要点及问题解决

建议采用下面顺序安装和配置:

1、安装JDK 6

2、安装Google Android SDK

3、测试Android 虚拟机、看下虚拟机内是否能上网,如果出现DNS问题,去检查一下你的网卡DNS配置是否主服务器、备用服务器都有效。如果不能上网多半都是这里问题。

4、安装Eclipse Indigo

5、用HelloWorld测试一下你的Eclipse和JAVA环境

6、安装微软JDBC Driver 2.0 ,微软的ODBC Driver是个压缩包,解压缩后把“sqljdbc4.jar"的路径添加到系统环境变量中的classpath,sqljdbc_xa.dll拷贝到 \%systemroot%\system32

7、在Eclipse中在线安装Hibernate Tools。很多人在安装这个的时候会安装失败,提示“缺少xx依赖项”,这真正的原因是你添加错了update site的地址。jboss为不同版本的Eclipse提供了不同的Hibernate Tools,比如你明明是Eclipse Indigo却添加了 Heilos的版本,就会显示无法安装。另外,JBOSS Development Tools这个东西,已经与Hibernate Tools分离了,并且改了名,现在装Hibernate Tools 不用装这个东西。

8、随便建立一个工程,在buildpath中引入sqljdbc4.jar。建立一个新的Hibernate Configration FIle,并且在Hibernate Configrations视图中看下能否连接到数据库并且正常显示数据表。如果弹出错误对话框,提示找不到类,很有可能是你的Hibernate Configration FIle driver等项填写错误,或者是你没有在项目中正确引入sqljdbc4.jar;如果没有弹出错误对话框,但在Pending后出现<Reading Schema error: Getting database metadata>,则代表数据库连接错误,这时你要做的第一件事就是去你的Workspace\.metadata\log.txt看下具体出错的详细原因,有一个需要注意的地方就是MS Sqlserver 2005默认安装状态可能限制了外部连接,你可以在“SQLSERVER 外围应用配置器---服务和连接的外围控制器---远程连接”中查看是否开启了TCPIP外部链接。给一个我的Hibernate Configration FIle供读者参考:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
                                         "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
 <session-factory name="myhibernate">
  <property name="hibernate.connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property>
  <property name="hibernate.connection.password">sa</property>
  <property name="hibernate.connection.url">jdbc:sqlserver://192.168.1.126:1433;DatabaseName=Northwind</property>
  <property name="hibernate.connection.username">sa</property>
  <property name="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</property>
 </session-factory>
</hibernate-configuration>

强烈建议读者使用Hibernate Tools提供的可视化工具来建立一切关于HIbernate的xml配置文件。

如果Hibernate TOols安装正确,应该如下图可以正确显示数据表:

image

 

9、在线安装ADT

10、建立一个Android Project,测试ADT是否正常

ADT安装方法参见:http://developer.android.com/sdk/eclipse-adt.html#installing

 

如果一切正常,客户端的开发环境就搭建好了。总结一下,在服务器方面,我们使用了LINQ来自动生成Model类和DAL操作;在客户端方面,我们使用了Hibernate来生成Model类的Java Bean Class。Oh Yeah!现在已经可以进行开发了,而且在开发过程中不需要你进行任何把数据表转换成类这样的枯燥、繁琐的劳动。

 

建立Android项目

建立一个Android项目、建立一个hibernate_cfg.xml并测试可以显示数据表。

image

这里我们引用了

sqljdbc4.jar:用来支持Hibernate。这里有一个小问题,添加这个jar包仅仅为了支持hibernate生成model层,我们的项目并不需要直接连接数据库,而添加这个jar包会让最后编译的apk稍微变大,而android手机用户是很在乎流量、程序大小的。所以读者可以建立一个新的项目专门用来生成model层,而在android 项目中就不用引用这个sqljdbc4.jar了。

gson.1.7.1.jar:是google的一个开源json项目,可以很方便的进行json操作。但gson有一个缺陷,就是无法反序列化包含其他可序列化对象的类。如果你将来的项目的数据结构比较复杂,有链表(如论坛的帖子回复)、树(如微博)等结构,你可以为每一个类写一个专门的json序列化和反序列化方法。而其中不包括其他类的最基本的对象用gson处理。

commons-httpclient-3.1.jar:是http访问类,我们对这个类进行了进一步封装,以实现我们需要的http功能。下篇文章我们会具体讲到这个类。

之后我们可能会用到地图包或其他jar包,用到的时候我们再引用。

用Hibernate生成Model层

建立好工程之后,我们就可以来生成Model层了,生成Model层使用Hibernate Tools工具,具体步骤如下:

1、打开Hibernate Code Generations

image

 

2、新建reveng.xml,在上图的界面中点Setup,并选择一个位置放置配置文件

image

 

2.5、在reveng.xml中配置Type Mappings

这里多讲几句这个Type Mappings

 

首先,如果你不设置这个Type Mapping,最后生成的的结果可能是这样的:

errordngen

可以看到,生成的都是Serializabe类型,这明显是错误的,我们要生成的是string类型,于是我们在Type Mappings中进行了设置

image

如此设置后,Hibernate才会将数据库中的不同类型正确生成为你要的类型。此处仅须提示一点:就是对Hibernate来说 NVARCHAR(not null)和NVARCHAR(null)是不同类型,都需要加入类型映射,其他类型同理。

3、在Table Filter中,Include你要生成的表

image

4、选择要生成的项目:Domain Code

 

image

5、点Run就可以生成了,看下结果

image

6、自动生成Model类的几点说明

1)用Hibernate自动生成的类将不包括下面几个必要方法:hashcode(), toString(), eqauls(),这些可以通过Eclipse自动生成

2)用Hibernate自动生成的类一般包括三个构造方法,一个是无参的、一个是只包含非空字段、还有一个是包含所有字段的,这是符合大多数逻辑的,但可能不适合我们的项目,我们还需要一个反序列化Json的构造参数,这个需要手动添加。

小节

这一章内容我们主要探讨了Android开发环境的搭建和如何利用Hibernate这一ORM工具生成Android项目中的Model层。在环境搭建的表述过程中,作者并没有将搭建开发环境的所有步骤都详细写出,主要是考虑到读者大多都应该有Java项目的开发经验,对Eclipse也一定驾轻就熟。但作者还是对部分要点问题和容易出现的错误作出了提示和解决方案,希望遇到此类问题的读者能够得以借鉴。

在Hibernate Tools方面则介绍的稍微详细一些,主要考虑到Android开发或.Net开发的读者也许没太接触过Spring /struts项目,而我们仅仅需要生成Model层,具体应用和Struts等项目中的Hibernate又有所不同。

接下来的一章,我们将探讨如何实现Android 的http访问,主要是通过扩展了一个http访问类实现http访问的功能,敬请期待。

posted on 2011-12-18 19:48  flashpig  阅读(3065)  评论(2编辑  收藏  举报

导航