亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? lib0031.html

?? java外企軟件工程師就業(yè)班 J2EE方向 《J2EE架構(gòu)師手冊》 電子書
?? HTML
?? 第 1 頁 / 共 2 頁
字號:
</td><td class="td" align="left">
<p class="table-para">Low</p>
</td><td class="td" align="left">
<p class="table-para">Medium</p>
</td><td class="td" align="left">
<p class="table-para">Medium</p>
</td>
</tr>
<tr valign="top">
<td class="td" align="left">
<p class="table-para">
<b class="bold">Maximize code portability</b>
</p>
</td><td class="td" align="left">
<p class="table-para">Medium</p>
</td><td class="td" align="left">
<p class="table-para">Medium</p>
</td><td class="td" align="left">
<p class="table-para">High</p>
</td><td class="td" align="left">
<p class="table-para">High</p>
</td><td class="td" align="left">
<p class="table-para">High</p>
</td>
</tr>
<tr valign="top">
<td class="td" align="left">
<p class="table-para">
<b class="bold">Minimize vendor reliance</b>
</p>
</td><td class="td" align="left">
<p class="table-para">High</p>
</td><td class="td" align="left">
<p class="table-para">Medium</p>
</td><td class="td" align="left">
<p class="table-para">Medium</p>
</td><td class="td" align="left">
<p class="table-para">Medium</p>
</td><td class="td" align="left">
<p class="table-para">Low</p>
</td>
</tr>
<tr valign="top">
<td class="td" align="left">
<p class="table-para">
<b class="bold">Maximize availability and fail-over</b>
</p>
</td><td class="td" align="left">
<p class="table-para">Low</p>
</td><td class="td" align="left">
<p class="table-para">High</p>
</td><td class="td" align="left">
<p class="table-para">High</p>
</td><td class="td" align="left">
<p class="table-para">Low</p>
</td><td class="td" align="left">
<p class="table-para">Low</p>
</td>
</tr>
<tr valign="top">
<td class="td" align="left">
<p class="table-para">
<b class="bold">Manageable via JTA</b>
</p>
</td><td class="td" align="left">
<p class="table-para">Yes</p>
</td><td class="td" align="left">
<p class="table-para">Yes</p>
</td><td class="td" align="left">
<p class="table-para">Yes</p>
</td><td class="td" align="left">
<p class="table-para">Yes</p>
</td><td class="td" align="left">
<p class="table-para">Yes</p>
</td>
</tr>
</tbody>
</table>
<a name="141"></a><a name="IDX-54"></a>
<p class="para">
<b class="bold">Minimize the learning curve.</b> Because JDBC was the first persistence API for databases, it is the most familiar to most, if not all, Java developers and thus has the lowest learning curve. The learning curve for entity beans with container-managed persistence is widely acknowledged to be large. To use entity beans with bean-managed persistence, developers need to understand both JDBC and entity beans. JDO and most O/R toolsets have learning curves that are higher than JDBC and lower than entity beans.</p>
<p class="para">
<b class="bold">Minimize code and configuration files written and maintained.</b> People have a tendency to consider the number of lines of code only when evaluating ease of development. I view any configuration file (e.g., an entity bean deployment descriptor) as code with a different syntax. Hence, I don't see entity beans as having less code or simpler code than JDBC. JDO and most O/R toolsets I'm familiar with save some percentage of code in most situations.</p>
<p class="para">
<b class="bold">Maximize the ability to tune.</b> Because it's the lowest level API and closest to the database, JDBC provides unfettered ability to tune database SQL. Every other choice relies on a product to generate the SQL used. For instance, most object-relational mapping tools generate the SQL executed; it's usually harder to tune without direct control of the SQL used.</p>
<p class="para">
<b class="bold">Minimize the deployment effort.</b> Deployment hassles negatively impact development and maintenance time. Changes in JDBC code require just a recompile, whereas entity bean changes require a recompile, stub generation, <a name="142"></a><a name="IDX-55"></a>and redeployment of the bean. JDO implementations and O/R toolsets may require more work than a recompile but usually less than a bean change.</p>
<p class="para">
<b class="bold">Maximize code portability.</b> Being able to easily port code to different databases is important. Although you can write portable JDBC code, a significant percentage of JDBC code uses some database feature that's proprietary and not portable. Entity beans with BMP contain JDBC code and get the same grade. Entity beans with CMP don't have JDBC code, but they do have mappings and sometimes SQL statements in the deployment descriptors. If the SQL statements use a proprietary database feature, there's a portability issue, but the magnitude of the problem would likely be smaller. The same could be said of most JDO and O/R toolset implementations.</p>
<p class="para">
<b class="bold">Minimize vendor reliance.</b> You need to reduce your dependence on vendors that provide J2EE container services, JDBC drivers, JDO drivers, and O/R toolsets. This is desirable from a business standpoint should a vendor fail or change its cost structure. You can change vendors for JDBC drivers easily; I've done it many times with multiple database vendors.</p>
<p class="para">Changing container vendors is moderately easy. You do have the possibility of performance-tuning issues, particularly with CMP and JDO vendors. With O/R toolsets, application code directly uses vendor (or vendor-generated) classes. Switching O/R toolsets requires significant development in most cases.</p>
<p class="para">
<b class="bold">Maximize availability and fail-over.</b> Most of the time, availability and fail-over are provided by the container or database vendor. With the possible exception of entity beans, the persistence method adds absolutely nothing to fail-over. Entity beans, both CMP and BMP, are excepted because the container has more control and can provide better fail-over services. However, fail-over capabilities in this regard are largely dependent on your container vendor.</p>
<p class="para">
<b class="bold">Manageable via JTA.</b> The Java Transaction API (JTA) is the part of the J2EE specification that provides the two-phase commit functionality. Many developers appear to be under the impression that to use two-phase commit functionality, you need to use entity beans. That's not true. As long as you're able to manage transaction commits and rollbacks via JTA, you can get the two-phased commit functionality.</p>
<p class="para">Although I've seen selected use of entity beans, JDO, and O/R toolsets, most of my clients manage persistence using native JDBC. JDO use seems to <a name="143"></a><a name="IDX-56"></a>be getting more press and may indeed be the fastest-growing JDBC alternative, but it hasn't pervaded the market yet.</p>
<p class="para">I think about the use of software toolsets in the same way an economist thinks about market efficiency. Financial analysts and economists have a theory that financial markets are efficient. That is, when a new piece of information becomes public, the stock prices of all companies related to that information change accordingly over time. For example, when the Enron and United Airlines bankruptcies became publicly known, the news had profound effects on their stock prices.</p>
<p class="last-para">When new software paradigms are introduced, if they provide benefits that exceed their costs, over time developers will switch to them. The time frame in which this happens for programming paradigms is much slower than that for financial markets, but the general concept is much the same. The "market" consensus regarding database persistence appears to be favoring native JDBC at the moment. If developers do in fact migrate to the more productive software paradigms over time, the inference would be that native JDBC persistence is the best choice for most applications.</p>
</div>
<div class="section">
<h3 class="sect3-title">
<a name="144"></a><a name="ch05lev2sec2"></a>Simplified Data Access Pattern</h3>
<p class="first-para">Of the two patterns for data access objects that are most common, this is the simplest. In this pattern, there is a one-to-one correspondence between the physical storage construct (e.g., relational database table, XML document, or file) and the DAO that manages it. For example, you might have <span class="fixed">CUSTOMER_DAO</span> manage access to a <span class="fixed">CUSTOMER</span> table in a relational database. Although you haven't identified methods yet, you can imagine that this class will have methods to search and return information on one or more customers using search criteria as arguments. It might have methods to insert, update, and delete customers as well.</p>
<p class="para">The advantage of this pattern is that it's simple. Its chief disadvantage is that it's often specific to one data source type. The code involved in manipulating an XML document is quite different from the JDBC and SQL required to use a database table. Switching the data source type would be a major overhaul to most methods in the class.</p>
<p class="para">This pattern is usable no matter what database persistence mechanism you choose. If data access will be managed by an entity bean, that entity bean would in essence be your DAO. The same could be said for a class using native JDBC, JDO, or an O/R toolset. <a class="internaljump" href="#ch05fig02">Figure 5.2</a> illustrates an object model for this pattern.</p>
<div class="figure">
<a name="145"></a><a name="ch05fig02"></a><span class="figuremediaobject"><a href="images/fig73%5F01%5F0%2Ejpg" NAME="IMG_3" target="_parent"><img src="images/fig73_01.jpg" height="263" width="329" alt="Click To expand" border="0"></a></span>
<br style="line-height: 1">
<span class="figure-title"><span class="figure-titlelabel">Figure 5.2: </span>A Simplified Data Access Pattern</span>
</div>
<a name="146"></a><a name="IDX-57"></a>
</div>
<div class="section">
<h3 class="sect3-title">
<a name="147"></a><a name="ch05lev2sec3"></a>Supporting Multiple Databases</h3>
<p class="first-para">For an application that supports multiple types of databases, the data access object pattern, which is factory based, is quite common. This pattern implements the DAO as an interface. A factory is required to produce objects that implement this interface. In addition, you will have an implementation of this interface for each type of data source. The factory is smart enough to know how to instantiate all implementations. <a class="internaljump" href="#ch05fig03">Figure 5.3</a> illustrates an object model for this pattern.</p>
<div class="figure">
<a name="148"></a><a name="ch05fig03"></a><span class="figuremediaobject"><a href="images/fig74%5F01%5F0%2Ejpg" NAME="IMG_4" target="_parent"><img src="images/fig74_01.jpg" height="198" width="350" alt="Click To expand" border="0"></a></span>
<br style="line-height: 1">
<span class="figure-title"><span class="figure-titlelabel">Figure 5.3: </span>Data Access Object Pattern</span>
</div>
<p class="para">For example, consider a customer DAO implementation. It would have a <span class="fixed">CustomerDAO</span> interface that would specify a variety of search methods as well as an update, delete, and insert method. It would also have a customer DAO factory (<span class="fixed">CustomerDAOFactory</span>) responsible for providing a DAO for the application to use. It might also have an implementation for all relational databases it supports (e.g., <span class="fixed">CustomerDAOOracleImpl</span>, <span class="fixed">Customer-DAOSybaseImpl</span>, <span class="fixed">CustomerDAOMySQLImpl</span>, etc.). The business object code would use the <span class="fixed">CustomerDAO</span> interface exclusively so it could use any one of the implementations.</p>
<a name="149"></a><a name="IDX-58"></a><a name="150"></a><a name="IDX-59"></a>
<p class="last-para">
<b class="bold">The data access object pattern is overkill if you don't foresee a need to support multiple database vendors.</b> Few business applications need to be able to do this. Software vendors are more likely to need this pattern than business application users. I discuss it at length because it has an unqualified recommendation in many texts.</p>
</div>
</div>
</div><br>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr><td><div STYLE="MARGIN-LEFT: 0.15in;"><a href="toc.html"><img src="images/teamlib.gif" width="62" height="15" border="0" align="absmiddle"  alt="Team LiB"></a></div></td>
<td align="right"><div STYLE="MARGIN-LEFT: 0.15in;">
<a href="LiB0030.html"><img src="images/previous.gif" width="62" height="15" border="0" align="absmiddle" alt="Previous Section"></a>
<a href="LiB0032.html"><img src="images/next.gif" width="41" height="15" border="0" align="absmiddle" alt="Next Section"></a>
</div></td></tr></table>
</body></html>

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产日产亚洲精品系列| 亚洲成人在线免费| 亚洲一级二级在线| 狠狠色丁香久久婷婷综| 91福利资源站| 国产精品网站在线观看| 麻豆成人久久精品二区三区小说| 日本韩国一区二区三区视频| 欧美成人免费网站| 亚洲超丰满肉感bbw| 99re8在线精品视频免费播放| 欧美一级夜夜爽| 亚洲一区二区三区四区在线 | 国产精品进线69影院| 青青草97国产精品免费观看无弹窗版| gogogo免费视频观看亚洲一| 精品国产91乱码一区二区三区| 亚洲图片自拍偷拍| 91视视频在线观看入口直接观看www| 日韩精品在线看片z| 亚洲第一av色| 在线亚洲欧美专区二区| 国产精品嫩草久久久久| 国产精品一区二区在线看| 91麻豆精品国产| 午夜影院在线观看欧美| 欧美在线色视频| 亚洲欧美激情小说另类| www.亚洲精品| 国产欧美日韩精品a在线观看| 麻豆专区一区二区三区四区五区| 欧美群妇大交群的观看方式| 一区二区三区高清不卡| 色欧美乱欧美15图片| 成人欧美一区二区三区白人| 99久久综合99久久综合网站| 国产欧美精品区一区二区三区 | 亚洲图片欧美色图| 91福利精品视频| 一二三四社区欧美黄| 欧美天堂一区二区三区| 亚洲综合免费观看高清在线观看| 在线中文字幕一区| 亚洲午夜在线视频| 91精品国产乱| 国产一区在线精品| 久久精品视频一区二区三区| 国产剧情在线观看一区二区| 国产欧美日韩视频一区二区| 不卡一区二区中文字幕| 亚洲精品乱码久久久久久| 91在线精品秘密一区二区| 亚洲一区二区中文在线| 在线不卡中文字幕| 韩国精品一区二区| 中文字幕亚洲综合久久菠萝蜜| 91性感美女视频| 亚洲图片有声小说| 337p粉嫩大胆色噜噜噜噜亚洲| 成人在线视频一区| 一区二区在线观看av| 欧美一卡2卡三卡4卡5免费| 国产乱人伦偷精品视频免下载 | 久久久久久久精| 成人av在线网| 亚洲大片一区二区三区| 日韩精品一区二区在线| 不卡一区二区在线| 婷婷综合久久一区二区三区| 久久综合色之久久综合| 91色九色蝌蚪| 久久国产夜色精品鲁鲁99| 国产亚洲欧洲997久久综合| 在线视频你懂得一区二区三区| 日韩电影网1区2区| 国产精品日产欧美久久久久| 欧美色爱综合网| 成人黄色免费短视频| 无吗不卡中文字幕| 国产精品国产三级国产普通话蜜臀| 欧美影视一区在线| 国产a级毛片一区| 亚洲国产成人高清精品| 中文字幕成人在线观看| 欧美一级片在线| 色综合久久88色综合天天6 | 日韩成人伦理电影在线观看| 国产欧美一区视频| 91精品国产一区二区三区蜜臀 | 欧美剧情片在线观看| 国产成人精品一区二区三区四区 | 精品一区二区三区不卡| 亚洲综合成人在线视频| 国产欧美日本一区二区三区| 91精品国产欧美日韩| 91浏览器在线视频| 国产激情一区二区三区桃花岛亚洲| 亚洲一二三专区| 亚洲天堂久久久久久久| 久久精品一区蜜桃臀影院| 日韩一级大片在线观看| 欧美日韩国产一级| 91麻豆国产福利精品| 成a人片亚洲日本久久| 国产福利一区二区三区在线视频| 国产日韩欧美在线一区| 日本韩国精品一区二区在线观看| 国产乱理伦片在线观看夜一区| 日本在线观看不卡视频| 亚洲成av人片| 亚洲一区二区在线观看视频| 综合色天天鬼久久鬼色| 中文字幕欧美三区| 久久久久久久久久美女| 久久综合色8888| www国产成人免费观看视频 深夜成人网| 欧美色视频一区| 欧美视频中文字幕| 欧美伦理电影网| 欧美日本不卡视频| 在线不卡中文字幕播放| 91麻豆精品国产91| 欧美成人a在线| 久久老女人爱爱| 国产亚洲欧美日韩日本| 久久久久久久综合日本| 国产精品免费视频观看| 中文在线免费一区三区高中清不卡| 国产午夜精品理论片a级大结局 | 欧美日韩亚洲综合一区| 欧美精品欧美精品系列| 日韩欧美一级二级三级| 精品国产乱子伦一区| 国产婷婷色一区二区三区四区| 久久精品一区二区三区不卡牛牛 | 天堂久久一区二区三区| 麻豆免费精品视频| 成人激情午夜影院| 色偷偷一区二区三区| 欧美片在线播放| 精品国产成人系列| 亚洲特黄一级片| 亚洲国产日韩综合久久精品| 日产欧产美韩系列久久99| 国产一区二区三区电影在线观看| 国产成人综合网站| 日本电影欧美片| 精品久久久久久久人人人人传媒 | 精品一区二区免费视频| 成人视屏免费看| 色综合久久久网| 欧美不卡一区二区三区四区| 国产午夜亚洲精品午夜鲁丝片| 亚洲欧洲制服丝袜| 久久9热精品视频| 99精品视频在线观看免费| 欧美精选一区二区| 亚洲国产精品av| 五月天一区二区三区| 成人v精品蜜桃久久一区| 欧美日韩一区三区四区| 欧美国产精品一区二区三区| 偷拍与自拍一区| 成人激情黄色小说| 精品国产一区二区精华| 一区二区三区欧美激情| 国产精品一区不卡| 91精品国产综合久久久久久漫画| 国产精品午夜久久| 激情综合色丁香一区二区| 色婷婷国产精品久久包臀 | 国产很黄免费观看久久| 欧美色精品天天在线观看视频| 久久你懂得1024| 日欧美一区二区| 91精品福利在线| 国产精品久久夜| 精品伊人久久久久7777人| 欧美日韩中文字幕一区二区| 国产精品家庭影院| 国产成人精品免费在线| 日韩欧美激情四射| 无吗不卡中文字幕| 欧美无砖砖区免费| 亚洲乱码精品一二三四区日韩在线| 久草中文综合在线| 91精品国产aⅴ一区二区| 一区二区三区免费观看| 91天堂素人约啪| 国产精品乱人伦中文| 国产黄色91视频| 国产亚洲欧美一区在线观看| 精品夜夜嗨av一区二区三区| 91精品国产品国语在线不卡| 亚洲成人在线免费| 欧美日韩久久久久久| 日韩有码一区二区三区| 欧美久久久久久久久久| 日韩不卡一二三区| 777a∨成人精品桃花网|