仓酷云

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

[学习教程] JAVA网页设计利用ConnectionManager顺应多半据库的应...

[复制链接]
再现理想 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:49:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
你总不能说你写框架吧,那无疑会加大工作量,现在大多企业采取的是折中的办法,就是改别人写好的框架,可要改框架,前提是你对这个框架足够的了解,这就更难了。connection|数据|数据库
原文:

明天企业使用情况中一样平常情形下要面临不止一个或一类数据库;另外一方面分歧时代的分歧品种的数据库构成一个个的荒岛;在java中,手艺潮水偏向于不是间接操纵数据库纪录,而是经由过程两头层的数据库对象耐久化处置到达OO的目标。不管那一种,都请求对照简单空中对多个数据库毗连。多个数据库毗连对照为人所熟习的是微软的ODBC数据源设置,除没有完成两头层耐久化外,ODBC实在比JDBC要周全也更简单处置。ConnectionManager是一个经由过程XML设置的,相似于ODBC数据源设置的工具,经由过程界说dao.Connection对象,程序能够按必要以:java.sql.Connectionconn=ConnectionManager.getConnection(${connectionname});失掉所必要的毗连,从而简化了在多个数据库情况下的编纂事情。

如今项目开辟者面对的经常是多个数据库的使用,汗青的和分歧部门的,有CS背景的也有BS前台的。各个数据库的数据必需融汇到统一个营业逻辑中,不然就成为一个个低代价的数据孤岛。应对这类需求,今朝利用了两种手艺,一是数据对象化手艺,本色就是在数据层和使用逻辑层两头拔出一个耐久对象化层,经由过程程序或容器使数据对象与数据纪录相分歧,而使用逻辑间接会见数据对象而不是数据库纪录;二是经由过程利用全局目次变更利用多个数据库供数据对象化办理层利用。不管是EJBENTITy,仍是Hibernate,抑或是我处已写的HanvaProcessor都是这类思绪的一种表现。

其实不老是必要接纳EJB才干办理多个数据源,况且年夜部分项目中接纳EJB带的是更高的本钱和功能的更低效,开辟事情更庞大化,乃至只是试试看地填代码再公布不可再填代码再试试看,(我自己很厌恶这类开辟感到,以是弄了一个Hanva的小项目,除非客户指定EJB了)。不外EJB容器中办理多个数据源的体例仍是很值得进修的。年夜部分情形下,它是经由过程初始化后的数据源对象,象毗连池,注册进JNDISPI;然后经由过程java.naming.Context.lookup()这个全局称号(在JVM局限内)。我的做法是由写一个ConnectionManager,它由一个xml文件界说多个数据库毗连相干的参数,在ConnectionManager初始化时读进内存。利用时然后经由过程挪用ConnectionManager的静态办法getConnection(Stringconnectionname),就能够失掉指定命据库毗连。因为实践上操纵数据库毗连的都是Processor和Lister两个类,如许,要包管毗连资本的开释也是很有掌控的。依托这个办法,就能够在轻型的使用中都能够弄妥多半据库,利用数据对象化体例举行开辟了。

connections.xml界说:

<connection-set><description><![CDATA[connection-set供ConnectionManager利用,能够按必要取用不定的多个毗连界说,代码完整稳定。从而顺应多半据库的利用情况;]]></description><connectionname="GlobalPool"driver="datasource"uri="java:comp/env/globalpool"/><connectionname="MysqlPool"driver="datasource"uri="java:comp/env/mysqlpool"/><connectionname="mysql"driver="com.mysql.jdbc.Driver"username="michelle"password="favordog"><uri><![CDATA[jdbc:mysql://127.0.0.1:3306/dkt?useUnicode=true&characterEncoding=gb2312]]></uri></connection><connectionname="conn"driver="oracle.jdbc.driver.OracleDriver"uri="jdbc:oracle:thin:@127.0.0.1:1521:dkt0"username="dcon"password="girlfriend"/><connectionname="reso"driver="oracle.jdbc.driver.OracleDriver"uri="jdbc:oracle:thin:@127.0.0.1:1521:dkt0"username="erso"password="abc"/><connectionname="daifu"driver="oracle.jdbc.driver.OracleDriver"uri="jdbc:oracle:thin:@127.0.0.1:1521:dkt0"username="eef"password="qwewer"/><connectionname="system"driver="oracle.jdbc.driver.OracleDriver"uri="jdbc:oracle:thin:@127.0.0.1:1521:dkt0"username="system"password="manager"/></connection-set>

ConnectionManager办法:

publicclassConnectionManager{privatestaticLOGGERlogger=(LOGGER)Loger.getLogger(Constants.LOGGER_DAIFU_KEY);

publicstaticsynchronizedjava.sql.ConnectiongetConnection()throwsjava.sql.SQLException{Stringname=Repository.getInstance().getConn();returngetConnection(name);}

publicstaticsynchronizedjava.sql.ConnectiongetConnection(Stringname)throwsjava.sql.SQLException{if(Repository.getInstance()==null){logger.error("therepositoryfordaooperationhasnotbeeninitialized");returnnull;}dao.Connectionconn=Repository.getInstance().getConnection(name);Stringdri=conn.getDriver();java.sql.Connectioncn=null;try{if(dri.equalsIgnoreCase("datasource")){javax.naming.ContextinitCtx=newjavax.naming.InitialContext();javax.sql.DataSourceds=(javax.sql.DataSource)initCtx.lookup(conn.getUri());cn=ds.getConnection();}else{Class.forName(dri);//nonewInstance();onlygetclasscn=java.sql.DriverManager.getConnection(conn.getUri(),conn.getUsername(),conn.getPassword());}}catch(Exceptionex){Stringmsg="ConnectionManager.class,conname:="+name+";dri:="+dri+";cn:="+cn+";msg:="+ex.getMessage();logger.error(msg,ConnectionManager.class);thrownewjava.sql.SQLException(msg);}returncn;}publicstaticsynchronizedjava.sql.ConnectiongetConnection(dao.Connectionconn)throwsjava.sql.SQLException{if(conn==null){System.out.println("thedao.ConnectiontogetConnectionisnull;");returnnull;}Stringdri=conn.getDriver();java.sql.Connectioncn=null;try{if(dri.equalsIgnoreCase("datasource")){javax.naming.ContextinitCtx=newjavax.naming.InitialContext();javax.sql.DataSourceds=(javax.sql.DataSource)initCtx.lookup(conn.getUri());cn=ds.getConnection();}else{Class.forName(dri);//nonewInstance();onlygetclasscn=java.sql.DriverManager.getConnection(conn.getUri(),conn.getUsername(),conn.getPassword());}}catch(Exceptionex){Stringmsg="dri:="+dri+";cn:="+cn+";msg:="+ex.getMessage();logger.error(msg,ConnectionManager.class);thrownewjava.sql.SQLException(msg);}returncn;}publicstaticvoidmain(String[]args)throwsException{if(args==null||args.length<2){System.out.println("Pleaseinputthexmlandconnsname");return;}Repository.parse(args[0]);java.sql.Connectionconn=getConnection(args[1]);System.out.println(conn);}

}

挪用时只必要

java.sql.Connectionconn=ConnectionManager.getConnection("connn");

就能够失掉指定体例的数据库毗连。

C#跟java类似,但是在跨平台方面理论上可以跨平台,实际上应用不大,执行性能优于java,跟C++基本一致,但是启动速度还是慢.代码安全,但容易性能陷阱.
只想知道 该用户已被删除
沙发
发表于 2015-1-18 22:25:27 | 只看该作者
任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言
金色的骷髅 该用户已被删除
板凳
发表于 2015-1-20 10:36:57 来自手机 | 只看该作者
象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
蒙在股里 该用户已被删除
地板
发表于 2015-1-29 06:46:39 | 只看该作者
在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。
冷月葬花魂 该用户已被删除
5#
发表于 2015-2-1 11:28:15 | 只看该作者
让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。
透明 该用户已被删除
6#
发表于 2015-2-7 04:30:55 | 只看该作者
你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。
若相依 该用户已被删除
7#
发表于 2015-2-8 03:38:47 | 只看该作者
是一种使用者不需花费很多时间学习的语言
小魔女 该用户已被删除
8#
发表于 2015-2-10 22:08:04 | 只看该作者
你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?
飘灵儿 该用户已被删除
9#
发表于 2015-2-16 23:56:37 | 只看该作者
Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。
小女巫 该用户已被删除
10#
发表于 2015-2-28 23:45:40 | 只看该作者
是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言
深爱那片海 该用户已被删除
11#
发表于 2015-3-10 10:50:01 | 只看该作者
多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。
山那边是海 该用户已被删除
12#
发表于 2015-3-12 11:49:37 | 只看该作者
Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台
若天明 该用户已被删除
13#
发表于 2015-3-19 21:35:13 | 只看该作者
是一种语言,用以产生「小应用程序(Applet(s))
灵魂腐蚀 该用户已被删除
14#
发表于 2015-3-27 18:53:34 | 只看该作者
当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?
15#
发表于 2015-4-1 00:08:27 | 只看该作者
是一种语言,用以产生「小应用程序(Applet(s))
兰色精灵 该用户已被删除
16#
发表于 2015-4-4 02:28:28 | 只看该作者
如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。
海妖 该用户已被删除
17#
发表于 2015-4-5 15:43:24 | 只看该作者
让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。
小妖女 该用户已被删除
18#
发表于 2015-4-14 07:33:17 | 只看该作者
让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。
精灵巫婆 该用户已被删除
19#
发表于 2015-4-18 09:48:40 | 只看该作者
Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)
谁可相欹 该用户已被删除
20#
发表于 2015-5-1 02:12:33 | 只看该作者
科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-15 01:39

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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