仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1288|回复: 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-1-21 11:12:38 | 只看该作者
是一种突破用户端机器环境和CPU
小妖女 该用户已被删除
板凳
发表于 2015-1-21 20:50:12 | 只看该作者
还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。
小女巫 该用户已被删除
地板
发表于 2015-1-29 06:14:00 | 只看该作者
是一种突破用户端机器环境和CPU
简单生活 该用户已被删除
5#
发表于 2015-2-4 22:13:59 | 只看该作者
一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。
老尸 该用户已被删除
6#
发表于 2015-2-6 18:02:07 | 只看该作者
是一种突破用户端机器环境和CPU
蒙在股里 该用户已被删除
7#
发表于 2015-2-17 22:50:46 | 只看该作者
一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。
只想知道 该用户已被删除
8#
发表于 2015-2-28 16:32:46 | 只看该作者
是一种将安全性(Security)列为第一优先考虑的语言
变相怪杰 该用户已被删除
9#
发表于 2015-3-8 15:33:15 | 只看该作者
是一种将安全性(Security)列为第一优先考虑的语言
海妖 该用户已被删除
10#
发表于 2015-3-14 00:21:46 | 只看该作者
不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。
山那边是海 该用户已被删除
11#
发表于 2015-3-20 22:40:34 | 只看该作者
是一种为 Internet发展的计算机语言
兰色精灵 该用户已被删除
12#
发表于 2015-3-22 06:08:13 | 只看该作者
还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。
第二个灵魂 该用户已被删除
13#
发表于 2015-4-15 22:04:38 | 只看该作者
是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能
分手快乐 该用户已被删除
14#
发表于 2015-4-16 09:45:48 | 只看该作者
是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能
莫相离 该用户已被删除
15#
发表于 2015-5-11 02:59:18 | 只看该作者
是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能
16#
 楼主| 发表于 2015-6-13 09:28:44 | 只看该作者
Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
再现理想 该用户已被删除
17#
发表于 2015-6-18 11:25:03 | 只看该作者
其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。
因胸联盟 该用户已被删除
18#
发表于 2015-6-19 01:57:24 | 只看该作者
你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。
飘飘悠悠 该用户已被删除
19#
发表于 2015-6-25 21:56:06 | 只看该作者
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
admin 该用户已被删除
20#
发表于 2015-6-29 21:45:03 | 只看该作者
至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-5-1 14:14

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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