仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 534|回复: 11
打印 上一主题 下一主题

[学习教程] JAVA教程之Kodo EJB:切合EJB3标准的耐久层框架

[复制链接]
精灵巫婆 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:13:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
一旦你有了思想,那你编的程序就有了灵魂,不管是什么语言到了你的手里都会是你的工具而已,他们的价值是能尽快帮助你实现你想要的目标。但是如果你没有了思想,那就像是海里的帆船失去了船帆,是很难到打海的另一边的。标准  Kodo是BEA公司收买SolarMetric公司后取得的耐久层框架项目,之前只是撑持JDO尺度,2006年2月13日,BEA公司公布公布Kodo项目标最新版本--Kodo4.0.0EarlyAccess4,Kodo4.0.0EA4撑持EJB3和JDO2两个尺度,本文中,我们将起首进修和懂得KODOEJB,懂得怎样利用KodoEJB完成开辟事情。  我们将依照两种分歧的情形报告怎样利用KodoEJB举行开辟,一种是经由过程命令行工具,别的一种是在Eclipse中利用Ant义务。
  关于EJB3和JDO2的更多内容请人人检察文章最初参考资本中的相干内容。
  为何利用KodoEJB  在KodoEJB框架中,对象和干系数据库之间的映照(对象-表,对象属性-字段等)都是利用JDK5.0中的最新特征―正文(Annotation)来供应,不再必要供应分外的设置文件。
  依据EJB3标准的请求,KodoEJB除撑持在EJB容器中利用满意分量级企业使用的需求以外,也撑持在一般Java使用中接纳,供应轻量级的耐久层框架。只不外当我们在EJB容器中利用KodoEJB时我们必要更多的事情以便满意EJB容器的请求。
  下载、安装Kodo

  筹办事情
  因为Kodo是基于正文机制的框架,我们必需利用JDK5.0完成开辟事情。以是下载、安装Kodo之前,请确保您已下载和安装了JDK5.0。
  为了演示的必要,我们选择MySQL数据库作为耐久化的方针数据库,请人人本人到www.mysql.com下载最新的MySQL数据库后安装。
  下载、安装Kodo  Kodo的最新版本是Kodo4.0.0EarlyAccess4,今朝人人能够到http://www.solarmetric.com/往下载试用版本,下载时必要注册,你会失掉30天的License。
  将下载的紧缩文件解压到c:/kodo4目次下(前面将利用%KODO_HOME%来援用这个目次),翻开%KODO_HOME%/bin/kodocmd.cmd文件,将个中的KODODIR设置为您的Kodo的安装目次,将JDKHOME设置为Java的安装目次。
  KodoEJB实例  下面的事情完成今后,我们就能够开辟KodoEJB使用了,上面的例子将次要报告怎样开辟一个轻量级的KodoEJB例子,撑持在Java使用中的挪用,而不依附于EJB容器,关于怎样在EJB容器中设置利用KodoEJB是一个年夜的课题,作者将别的撰文具体叙述。
  上面我们将用一个复杂的例子来讲明创立KodoEJB使用的典范步骤,实例中我们将创立名为Book的耐久化对象,该对象将被耐久化到当地的MySQL数据库中。
  请人人注重的是,上面的申明都基于Windows2000操纵体系,假如您利用别的操纵体系,大概必要做出响应的变动。

  • 创建工程目次  在C:盘根面前目今创立名为KodoExamples的目次,我们一切的类文件和设置都放在这个目次下。
  • 创立耐久化类

      新创立耐久化类Book,为了申明的复杂,该类只要两个属性:id和name,个中id是书的编号(编号由MySQL数据库主动天生),name属性暗示书的称号。耐久化类的全体代码、正文和申明以下:
    1. ackageorg.vivianj.kodo.examples.beans;importjavax.persistence.Basic;importjavax.persistence.Column;importjavax.persistence.Entity;importjavax.persistence.GeneratedValue;importjavax.persistence.GenerationType;importjavax.persistence.Id;importjavax.persistence.Inheritance;importjavax.persistence.InheritanceType;importjavax.persistence.Table;/***Book用于表征体系中的书本对象,他有两个属性id-书本编号,书本编号将由MySQL数据库主动天生name-书名*//*Entity正文暗示该类是耐久化类,的name属性是该实体在查询中对应的独一称号,默许是类名*/(name="Book")/*Table正文的name属性指定该耐久化类对应的数据表的称号,默许数据表名和类名坚持分歧,为了加强代码的可移植性,倡议人人在name属性中利用年夜写英笔墨母*/(name="BOOKS")/*Inheritance正文的strategy断定了耐久化对象和数据表之间的干系,可选择项包含SINGLE_TABLE、JOINED和TABLE_PER_CLASS,我们这里接纳TABLE_PER_CLASS*/(strategy=InheritanceType.TABLE_PER_CLASS)publicclassBook{/*Id正文暗示该字段是标识字段*//*GeneratedValue正文界说了该标识字段的发生体例,我们的演示体系中id由MySQL数据库字段主动天生,因而选择GenerationType.IDENTITY*/(strategy=GenerationType.IDENTITY)/*Column正文的name属性界说了该类属性对应的数据字段的称号,为了最年夜限制坚持体系和数据库之前的自力性,倡议利用年夜写字符*/(name="ID")publicintid;/*Basic正文暗示该属性是基础属性*//*Column正文的name属性界说了该类属性对应的数据字段的称号,为了最年夜限制坚持体系和数据库之前的自力性,倡议利用年夜写字符*/(name="NAME")publicStringname=null;
    复制代码
  • 筹办数据库  在MySQL数据库中新建名为Kodo的数据库。
  • 筹办设置文件  在C:KodoExamples新建META-INF目次,随后在该目次下新建kodo.xml和persistence.xml文件。
    1. a)Kodo.xml文件中供应会见数据库所必要的细节信息、利用Kodo所必要的受权(License)内容、Kodo运转时的日记办理等。<?xmlversion="1.0"?><persistence><persistence-unitname=""><properties><!--Kodo的序列号,请输出您下载大概购置Kodo时失掉的License--><propertyname="kodo.LicenseKey"value="093D-BF3F-C10E-0F8F-0F00"/><!--以下是会见数据库时必要供应的信息--><propertyname="kodo.ConnectionURL"value="jdbc:mysql://localhost/kodo"/><propertyname="kodo.ConnectionDriverName"value="org.gjt.mm.mysql.Driver"/><propertyname="kodo.ConnectionUserName"value="root"/><propertyname="kodo.ConnectionPassword"value="root"/><!--设置Kodo运转过程当中的日记级别--><propertyname="kodo.Log"value="DefaultLevel=WARN,Runtime=INFO,Tool=DEBUG"/></properties></persistence-unit></persistence>b)persistence.xml供应EJB实体办理所必要的信息,好比断定利用哪一种耐久化办理器和必要被办理的耐久化类。<?xmlversion="1.0"?><persistence><persistence-unitname=""><provider>kodo.persistence.PersistenceProviderImpl</provider><!--必要被KodoEJB办理的耐久化类--><class>org.vivianj.kodo.examples.beans.Book</class></persistence-unit></persistence>
    复制代码
  • 编译耐久化类  翻开一个命令行窗口,进进%KODO_HOME%/bin目次下,实行kodocmd.cmd命令,然后将MySQL的驱动文件利用setclasspath=%classpath%;c:/mysql-connector-java-3.1.8-bin.jar如许的体例到场到CLASSPATH中。
      实行javacC:KodoExamplesorgvivianjkodoxampleseans*.java编译耐久化类。
  • 增强(Enhancer)耐久化类  KODO中利用增强工具(Enhancer)对耐久化类举行调剂,撑持功能优化、怠惰式装载等特征。
      我们可使用kodocC:KodoExamplesorgvivianjkodoxampleseans*.java如许的命令来完成耐久化类的增强事情。
  • 天生数据库表  KODO中供应了专门的MappingTool工具,可以主动的依据耐久化类及他们之间的干系为我们天生创立数据库所必要的SQL语句大概间接创立数据表。
      演示实例中,我们利用kodocC:KodoExamplesorgvivianjkodoxampleseans*.java完成数据表的创立,命令实行完成后,我们会见MySQL中的kodo数据库,能够看到内里已创立了名为books的数据表。
  • 测试一下
  如今,一切的事情都已完成,我们能够编写一段代码测试一下下面的事情是不是无效,在C:kodoExamples目次下新建Test.java,然后输出以下内容:
  1. importjavax.persistence.EntityManager;importjavax.persistence.EntityManagerFactory;importjavax.persistence.Persistence;importjavax.persistence.PersistenceContextType;importorg.vivianj.kodo.examples.beans.Book;publicclassTest{publicstaticvoidmain(String[]args){/*取得EJB的实体办理器*/EntityManagerFactoryemf=Persistence.createEntityManagerFactory(null);EntityManagerem=emf.createEntityManager(PersistenceContextType.EXTENDED);/*入手下手事件*/em.getTransaction().begin();/*创立新的耐久化对象*/Bookbook=newBook();/*设置Book对象的name属性*/book.name="Kodo进门";/*耐久化对象*/em.persist(book);/*停止事件*/em.getTransaction().commit();em.close();emf.close();}}
复制代码
  实行Test类,实行完后会发明books表中已增添了一条新的纪录。
  在Eclipse中开辟KodoEJB
  下面的步骤都是基于命令行的,操纵起来不是很便利,因而我们必要思索将Kodo的开辟历程和Eclipse开辟工具举行集成。
  剖析下面开辟KodoEJB的全部历程,只要步骤5)增强(Enhancer)耐久化类和6)天生数据表和字段没法在Eclipse中间接完成,检察Kodo的匡助文档,发明Kodo的公布包中已供应了对报命令的Ant义务剧本,因而我们可使用Ant来完成Eclipse和Kodo的集成。
  我们仍旧利用下面的例子来演示怎样在Eclipse中开辟KodoEJB,我们翻开Eclipse,新创建KodoExamples工程,将%KODO_HOME%ib上面一切jar文件到场到该工程的援用中,将您所利用的数据库的JDBC驱动jar文件也到场到该工程的援用中。然后请人人参考下面的申明完成前5步事情,上面我们次要形貌怎样完成Ant设置文件。

  • 基础设置内容  在工程确当前目次下,新建build.xml文件,输出以下内容:
    1. <projectname="kodoenhance"basedir="."default="enhance"><!―请将value的值设置为您安装kodo时选择的目次--><propertyname="KODO_HOME"value="C:kodo4"/><propertyname="src"value="."/><propertyname="classes"value="."/><!--筹办公用的CLASSPATH路径?<pathid="build_classpath"><pathelementlocation=""/><pathelementlocation=""/><!―此处请输出数据库驱动文件的路径,作者利用的MySQL数据库驱动?<pathelementlocation="C:/mysql-connector-java-3.1.8-bin.jar"/><filesetdir="/lib"><includename="**/*.jar"/></fileset></path></project>
    复制代码
  • 编写完成步骤6)增强(Enhance)耐久化类所必要的义务  和这个步骤对应的义务是kodo.ant.PCEnhancerTask类,在%KODO_HOME%srckodont上面我们能够看到PCEnhancerTask类的源代码。起首利用taskdef到场新的义务范例kodoc,然后挪用该义务完成事情。
      在build.xml文件中增添以下内容:
    1. <targetname="enhance"><!--引进新的Ant义务?<taskdefname="kodoc"classname="kodo.ant.PCEnhancerTask"><!--援用下面步骤中界说的build_classpath作为CLASSPATH?<classpathrefid="build_classpath"/></taskdef><kodocjdoEnhance="true"><filesetdir="."><!--指定必要被增强的耐久化类,可使用通配符*?<includename="**/Book.java"/></fileset><!--援用下面步骤中界说的build_classpath作为CLASSPATH?<classpathrefid="build_classpath"/></kodoc></target>
    复制代码
  • 编写完成步骤7)天生数据库表所必要的义务
  Kodo包中为这个义务供应的义务类kodo.jdbc.ant.MappingToolTask在Eclipse中实行时有点成绩,我将它修正了一下,次要是修正实行该义务时利用的ClassLoader,如今能够满意请求了。
  在以后工程中新建kodo.jdbc.ant.MappingToolTask类(目次中的类比lib文件中的类有更高的实行级别),类的代码能够在%KODO_HOME%/src/kodo/jdbc/ant目次下找到。在类源代码中找到这两行。
  1. if(!MappingTool.run(conf,files,flags,loader))thrownewBuildException(_loc.get("bad-conf","MappingToolTask"));将它修正为:if(!MappingTool.run(conf,files,flags,MappingTool.class.getClassLoader()))thrownewBuildException(_loc.get("bad-conf","MappingToolTask"));如今,我们在build.xml文件中增添以下内容就能够完成项目中天生耐久化类对应的数据库表了:<targetname="create-schema"><!--引进新的Ant义务?<taskdefname="mappingtool"classname="kodo.jdbc.ant.MappingToolTask"><!--援用下面步骤中界说的build_classpath作为CLASSPATH?<classpathrefid="build_classpath"/></taskdef><mappingtoolaction="refresh"><!--援用下面步骤中界说的build_classpath作为CLASSPATH?<classpathrefid="build_classpath"/><filesetdir=""><!--指定必要天生数据表的耐久化类,可使用通配符*?<includename="**/Book.java"/></fileset></mappingtool></target>
复制代码
  如今你能够将翻开Eclipse中的Ant视图,然后再个中实行Enhance和create-schema义务,完成增强耐久化类和创立数据库表的事情,最初,你可使用一样的测试代码完成代码的测试事情。
  总结
  Kodo是BEA最新公布的耐久层框架,屏障了开辟者会见数据库的浩瀚细节,为开辟者供应了加倍复杂的编程形式,年夜年夜较少了开辟量,今朝Kodo撑持EJB3和JDO2尺度。BEA答应在不久的未来将Kodo的中心代码开源。
  本文中,作者经由过程一个复杂的例子,具体地解说了怎样完成KodoEJB的开辟事情,同时解说了怎样在Eclipse中集成Kodo完成开辟的步骤,而且办理了集成过程当中还存在的一个小成绩,但愿可以匡助人人更好的进修和利用Kodo.

令人可喜的是java现在已经开源了,所以我想我上述的想法也许有一天会实现,因为java一直都是不断创新的语言,每次创新都会给我们惊喜,这也是我喜欢java的一个原因。
因胸联盟 该用户已被删除
沙发
发表于 2015-1-20 07:48:31 | 只看该作者
不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。
只想知道 该用户已被删除
板凳
发表于 2015-1-24 06:10:08 | 只看该作者
学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。
乐观 该用户已被删除
地板
发表于 2015-1-31 21:25:46 | 只看该作者
Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
老尸 该用户已被删除
5#
发表于 2015-2-4 19:55:43 | 只看该作者
J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。
再现理想 该用户已被删除
6#
发表于 2015-2-18 13:14:00 | 只看该作者
当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?
活着的死人 该用户已被删除
7#
发表于 2015-3-6 06:47:20 | 只看该作者
是一种使网页(Web Page)产生生动活泼画面的语言
海妖 该用户已被删除
8#
发表于 2015-3-11 08:03:08 | 只看该作者
你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。
蒙在股里 该用户已被删除
9#
发表于 2015-3-11 18:25:11 | 只看该作者
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
灵魂腐蚀 该用户已被删除
10#
发表于 2015-3-11 23:29:45 | 只看该作者
是一种语言,用以产生「小应用程序(Applet(s))
变相怪杰 该用户已被删除
11#
发表于 2015-3-19 16:05:22 | 只看该作者
《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。
金色的骷髅 该用户已被删除
12#
发表于 2015-3-28 21:55:05 | 只看该作者
有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 20:51

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表