仓酷云

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

[学习教程] JAVA编程:简析J2EE使用程序数据库类计划形式仓酷云

[复制链接]
跳转到指定楼层
楼主
发表于 2015-1-18 11:37:07 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式

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

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

x
用java开发web只要两本书:一本是关于java基础的,一本是关于jsp、servlet的就可以了。开发周期长,我就来讲句题外话,现在有很多思想都是通过java来展现。本文次要先容一种数据库相干类的计划形式。并先容在J2EE框架中的详细完成,和在事件处置方面的一些思索。
1、计划形式简介
  在开辟J2EE使用程序时,一般是要找出使用程序中触及到的各类信息,好比一个公司的产物目次,或一个网站的用户信息,我们会将这些信息放在数据库里。
  在一般的计划中,我们要剖析这些数据的属性和干系,然落后行数据库的逻辑计划,把各类信息用分歧的表来存储。好比,要开辟一个图手札息查询体系。能够创立上面两个表来分离暗示书和出书社。
  tableBook(ID,Name,ISBN,Author,PublisherID,Price,Volume)
  tablePublisher(ID,Name,Telephone,Address,Postcode)
  表Book包括了ID,书名,书号,作者,出书社ID,代价,页数。表Publisher包括ID,社名,德律风,地点,邮编。这两个表经由过程出书社ID相干。
  上面我们来先容一种数据库相干类的计划的形式。
  数据库相干类能够分红实体类(EntityClass)和会话类(SessionClass)。
  实体类对应于一个表的纪录的封装,也就是该类的一个实例对应于表中的一个纪录。并且,该类中的属性和纪录中的字段是逐一对应的。
  会话类对应于对一个表中的一切纪录的操纵。好比增添一笔记录,删除一笔记录,查找纪录和更新一笔记录。
  经由过程利用这类计划形式,使程序加倍模块化,便于开辟和保护。固然,也能够利用其他计划形式。
2、程序完成
  在详细完成下面的这类形式时,常常依据详细的使用程序来选用分歧的手艺来完成。看到下面的形貌形式后,我们很简单就发明,能够用EJB来完成(EJB分两种,实体EJB和会话EJB)。
  我们晓得,EJB提出来的目标是用于供应一种散布式组件体系的开辟。假如我们的使用程序是一个散布式的使用体系,那末毫无疑问,利用EJB来完成能年夜年夜加重编程的事情量。同时,经由过程利用EJB容器的一些初级特征,可使使用程序加倍牢靠,扩大性也年夜年夜增强。如许一来,开辟职员就不用体贴一些底层手艺,好比事件处置,平安等各个方面,而是把重点放在如何完成营业逻辑上。可是我们应当注重,假如开辟的使用不是散布式的情形下,那末接纳EJB有大概年夜年夜下降体系的功能。由于,EJB挪用的开支很年夜。
  本文将切磋在倒霉用EJB手艺的情形下怎样来完成下面先容的这个形式。
  上面以开辟图手札息查询体系为例。
  1.实体类
  如后面讲到的,实体类的每一个实例与表中一个纪录对应。如许,实体类的属性应当和表的每一个字段逐一对应。必需注重的是,实体类的实例是每一个纪录在内存中的对应,因而,在程序中对实例的操纵其实不即刻反响到数据库的纪录中。
  在该类中,只是对数据的包装,因而,该类仅必要一些基础的办法,即setXX()和getXX()办法。
  上面是一个实体类,是对Book表的封装。
  classBook{
  protectedint  ID;
  protectedStringName;
  protectedStringISBN;
  protectedStringAuthor;
  protectedint  PublisherID;
  protecteddoublePrice;
  protectedint  Volume;
  publicvoidsetID(intiID);
  publicint  getID();
  publicvoidsetName(StringsName);
  publicStringgetName();
  publicvoidsetISBN(StringsISBN);
  publicStringgetISBN();
  publicvoidsetAuthor(StringsAuthor);
  publicStringgetAuthor();
  publicvoidsetPublisherID(intiID);
  publicint  getPublisherID();
  publicvoidsetPrice(doubledPrice);
  publicdoublegetPrice();
  publicvoidsetVolume(intiVolume);
  publicint  getVolume();
  publicBook(intiID,StringsName,StringsISBN,intiPublisherID,doubledPrice,intiVolume);
  };
  一样地能够对表Publisher举行封装。
  2.会话类
  会话类次要是对一个表举行处置。这些操纵能够是在表中创立一笔记录,删除一笔记录,更新一笔记录和查找一笔记录。这些操纵的了局是将表中的纪录和内存中的实体类的实例对应起来,或将实例与表中的纪录对应起来。
  我们能够看一下对Book表的封装。
  classBookTable{
  voidAdd(Bookbook);
  voidDelete(Bookbook);
  voidUpdate(Bookbook);
  CollectionfindbyID(intiID);
  CollectionfindbyXXXX(XX,XX);
  CollectionfindbyPulisherName(StringsPublisherName);
  };
  下面的类的声名中,Add()用于将内存中的一个Book实例映照到数据库中。Delete()用于删除数据库中的某一个纪录。Update()用于更新表中的一个纪录。而findbyXXXX()则对应于SELECT语句。
  关于触及到多个表操纵时,能够有两种体例。一种是象BookTable一样,专门封装一个类。另外一个办法是,间接在BoolTable中写一个findbyPublisherName()。这个办法计划成前往一个Book的汇合。
  下面只是复杂的先容了如何完成实体类和会话类。在详细的使用中,还要思索到数据库操纵的分歧性。上面就先容一下事件处置的相干内容。
3、事件处置
  为了确保对数据操纵的完全和分歧,在程序计划时要充实思索到事件处置方面的成绩。
  1.JDBC中如何将多个SQL语句组分解一个事件。
  在JDBC中,翻开一个毗连对象Connection时,缺省是auto-commit形式,每一个SQL语句都被看成一个事件,即每次实行一个语句,城市主动的失掉事件确认。为了能将多个SQL语句组分解一个事件,要将auto-commit形式屏障失落。
  在auto-commit形式屏障失落以后,假如不挪用commit()办法,SQL语句不会失掉事件确认。在比来一次commit()办法挪用以后的一切SQL会在办法commit()挪用时失掉确认。
  上面的代码是一个树模:
  con.setAutoCommit(false);
  PreparedStatementupdateSales=con.prepareStatement("UPDATECOFFESSETSALES=?WHERECOF_NAMELIKE?");
  updateSales.setInt(1,50);
  updateSales.setString(2,"Colombian");
  updateSales.executeUpdate();
  PreparedStatementupdateTotal=con.prepareStatement("UPDATECOFFEESSETTOTAL=TOTAL+?WHERECOD_NAMELIKE?");
  updateTotal.setInt(1,50);
  updateTotal.setString(2,"Colombian");
  updateTotal.executeUpdate();
  con.commit(0;
  con.setAutoCommit(true);
  2.J2EE平分布式事件处置
  在J2EE中,程序里可使用JTA来挪用底层的JTS(JAVATransactionService供应者服务)来处置散布式的事件处置。别的,假如利用EJB,能够经由过程在形貌文件中指定transaction的属性来完成。
  有关散布式事件处置的详细内容,请拜见J2EE标准。

最初被命名为Oak,目标设定在家用电器等小型系统的编程语言,来解决诸如电视机、电话、闹钟、烤面包机等家用电器的控制和通讯问题。
沙发
 楼主| 发表于 2015-6-13 09:28:44 | 显示全部楼层
Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-5-22 05:47

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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