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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 用hibernate和spring開發事務持久層.htm

?? 在java中使用Hibernate和Spring開發事務持久層
?? HTM
?? 第 1 頁 / 共 4 頁
字號:
                        user from User user where user.group is null"<BR>&nbsp;* 
                        <BR>&nbsp;* @hibernate.query 
                        name="UsersBySalaryGreaterThan" <BR>&nbsp;* query="from 
                        User user inner join user.contactInfo info where 
                        info.salary &gt; ?1"<BR>&nbsp;* <BR>&nbsp;* 
                        @hibernate.query name="UsersBySalaryBetween" <BR>&nbsp;* 
                        query="from User user join user.contactInfo info where 
                        info.salary between ?1 AND ?2"<BR>&nbsp;* <BR>&nbsp;* 
                        @hibernate.query name="UsersByLastNameLike" <BR>&nbsp;* 
                        query="from User user join user.contactInfo info where 
                        info.lastName like ?1"<BR>&nbsp;* <BR>&nbsp;* 
                        @hibernate.query name="GetEmailsOfUsers" <BR>&nbsp;* 
                        query="select user.email from Group g join g.users as 
                        user where g.name = ?1"<BR>&nbsp;* 
                        <BR>&nbsp;*/<BR>public class User 
                        {<BR>&nbsp;&nbsp;&nbsp;.<BR>&nbsp;&nbsp;&nbsp;.<BR>&nbsp;&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;</P>
                        <P>  上述代碼定義了幾個預定義查詢。預定義查詢 是存儲在 *.hbm.xml 文件中的查詢。在清單 5 
                        中,可以看到如何執行預定義查詢。</P>
                        <P>  清單 5. 使用預定義查詢<BR>  [UserDAO.java]</P>
                        <P style="BACKGROUND: #eeeeee">&nbsp;/**<BR>&nbsp; * 
                        Demonstrates a query that returns a String.<BR>&nbsp; 
                        */&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                        <BR>&nbsp;public String[] getUserEmailsInGroup(String 
                        groupName){<BR>&nbsp;&nbsp;List emailList 
                        =<BR>&nbsp;&nbsp;getHibernateTemplate().findByNamedQuery("GetEmailsOfUsers"); 
                        <BR>&nbsp;&nbsp;return (String 
                        [])<BR>&nbsp;&nbsp;&nbsp;emailList.toArray(new 
                        String[emailList.size()]);<BR>&nbsp;}<BR><BR>&nbsp;/**<BR>&nbsp; 
                        * Demonstrates a query that returns a list of 
                        Users<BR>&nbsp; *<BR>&nbsp; * @return A list of emails 
                        of all of the users in the authentication 
                        system.<BR>&nbsp; * <BR>&nbsp; 
                        */&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                        <BR>&nbsp;public List getUsers(){<BR>&nbsp;&nbsp;return 
                        getHibernateTemplate().findByNamedQuery("AllUsers");<BR>&nbsp;}<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                        /**<BR>&nbsp;* Demonstrates passing a single argument to 
                        a query. <BR>&nbsp;*<BR>&nbsp;* @return A list of 
                        UserValue objects.<BR>&nbsp;* 
                        <BR>&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                        <BR>&nbsp;public List getUsersBySalary(float 
                        salary){<BR>&nbsp;&nbsp;&nbsp; return 
                        getHibernateTemplate()<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                        .findByNamedQuery("UsersBySalaryGreaterThan",<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                        new 
                        Float(salary));<BR>&nbsp;}<BR><BR>&nbsp;/**<BR>&nbsp; * 
                        Demonstrates passing multiple arguments to a 
                        query<BR>&nbsp; * <BR>&nbsp; * @return A list of 
                        UserValue objects.<BR>&nbsp; * <BR>&nbsp; 
                        */&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                        <BR>&nbsp;public List getUsersBySalaryRange(float start, 
                        float 
                        stop){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                        return getHibernateTemplate()<BR>&nbsp;&nbsp; 
                        .findByNamedQuery("UsersBySalaryBetween",<BR>&nbsp;&nbsp;&nbsp;new 
                        Object[] {new Float(start), new 
                        Float(stop)});<BR>&nbsp;}</P>
                        <P>  查詢進行時,可以在持久層中加上最后一層:使用 Spring 的事務管理。</P>
                        <P>  <STRONG>用 Spring 管理事務</STRONG></P>
                        <P>  Spring 可以聲明式地管理事務。例如,UserDAO.addUser 
                        方法當前不是在單個事務中執行的。因此,組中的每一個用戶都插入到自己的事務中,如清單 6 所示。</P>
                        <P>  清單 6. 添加一組用戶<BR>  [UserDAO.java]</P>
                        <P style="BACKGROUND: #eeeeee">/**<BR>&nbsp;* @param 
                        group<BR>&nbsp;*/<BR>public void addGroup(Group group) 
                        {<BR>&nbsp;getHibernateTemplate().save(group);<BR>&nbsp;<BR>}</P>
                        <P>[UserDAOTest.java]</P>
                        <P style="BACKGROUND: #eeeeee">public void 
                        testAddGroupOfUsers(){<BR>&nbsp;Group group = new 
                        Group();<BR>&nbsp;<BR>&nbsp;for (int index=0; index &lt; 
                        10; index++){<BR>&nbsp;&nbsp;User user = new 
                        User();<BR>&nbsp;&nbsp;user.setEmail("rick"+index+"@foobar.com" 
                        );<BR>&nbsp;&nbsp;user.setPassword("foobar");<BR>&nbsp;&nbsp;group.addUser(user);&nbsp;<BR>&nbsp;}<BR>&nbsp;<BR>&nbsp;group.setName("testGroup");<BR>&nbsp;<BR>&nbsp;userDAO.addGroup(group);<BR>&nbsp;assertNotNull(group.getId());<BR>&nbsp;<BR>&nbsp;Group 
                        group2 = 
                        userDAO.findPopulatedGroupByName("testGroup");<BR>&nbsp;<BR>&nbsp;assertEquals("testGroup",group2.getName());<BR>&nbsp;assertEquals(10, 
                        group2.getUsers().size());<BR>&nbsp;String email = 
                        ((User)group2.getUsers().get(0)).getEmail();<BR>&nbsp;assertEquals("rick0@foobar.com", 
                        email);<BR><BR>}</P>
                        <P>  不建議使用上述解決方案,因為每一個 User 
                        都要在自己的事務中插入到數據庫中。如果出現問題,那么只能添加部分用戶。如果希望保留 ACID 
                        屬性(即保證所有都發生或者所有都不發生),可以通過程序進行事務管理,但是它很快就會變得一團糟了。相反,應使用 
                        Spring 的 AOP 來支持聲明式的事務,如清單 7 所示。</P>
                        <P>  清單 7. 聲明式管理事務<BR>  [applicationContext.xml]</P>
                        <P style="BACKGROUND: #eeeeee">&lt;!-- Pass the session 
                        factory to our UserDAO --&gt;<BR>&nbsp;&nbsp; &lt;bean 
                        id="userDAOTarget" 
                        class="net.sf.hibernateExamples.UserDAOImpl"&gt;<BR>&nbsp;&lt;property 
                        name="sessionFactory"&gt;&lt;ref 
                        local="sessionFactory"/&gt;&lt;/property&gt;<BR>&nbsp;&nbsp; 
                        &lt;/bean&gt;<BR>&nbsp;<BR>&nbsp;&nbsp; &lt;bean 
                        id="transactionManager" <BR>&nbsp;&nbsp; 
                        &nbsp;class="org.springframework.orm.hibernate.HibernateTransactionManager"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                        &lt;property name="sessionFactory"&gt;&lt;ref 
                        bean="sessionFactory"/&gt;&lt;/property&gt;<BR>&nbsp;&nbsp; 
                        &lt;/bean&gt;<BR><BR>&lt;bean 
                        id="userDAO"<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
                        class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"&gt;<BR>&nbsp;&lt;property 
                        name="transactionManager"&gt;&lt;ref 
                        local="transactionManager"/&gt;&lt;/property&gt;<BR>&nbsp;&lt;property 
                        name="target"&gt;&lt;ref 
                        local="userDAOTarget"/&gt;&lt;/property&gt;<BR>&nbsp;&lt;property 
                        name="transactionAttributes"&gt;<BR>&nbsp;&nbsp;&lt;props&gt;<BR>&nbsp;&nbsp;&nbsp;&lt;prop 
                        key="addGroup"&gt;PROPAGATION_REQUIRED&lt;/prop&gt;<BR>&nbsp;&nbsp;&lt;/props&gt;<BR>&nbsp;&lt;/property&gt;<BR>&lt;/bean&gt;</P>
                        <P>  注意在準備清單 7 的代碼時,我重新改寫了 UserDAO 并提取了其接口。這個接口現在是 
                        UserDAO,它的實現類是 UserDAOImpl。這樣清單 7 中的事務代碼就使用了帶有事務屬性 
                        (PROPAGATION_REQUIRED) 的 UserDAO.addGroup() 
                        方法?,F在只要底層數據庫支持,就可以在一個事務中添加所有用戶。</P>
                        <P>  <STRONG>結束語</STRONG></P>
                        <P>  在本文中,介紹了如何使用 Hibernate 和 Spring 實現一個事務持久層。Hibernate 
                        是一種先進的 OR 映射工具,而 Spring 是一個 AOP 框架和 IOC 
                        容器。這兩種技術的綜合使用,使得開發人員可以編寫媲美數據庫廠商的代碼,它可以在 J2EE 
                        容器中運行,也可以單獨運行。使用了 DbUnit (JUnit 
                        的擴展)構建和測試本文中例子的所有代碼,雖然這不是討論的重點。</P></TD></TR></TBODY></TABLE></TD></TR>
              <TR>
                <TD width=10 height=11><IMG height=11 
                  src="用Hibernate和Spring開發事務持久層.files/u_16.gif" width=10></TD>
                <TD style="BORDER-BOTTOM: #e8e8e8 1px solid" width=695 
                bgColor=#f9f9f9 height=11><IMG height=1 src="" width=1></TD>
                <TD width=10 height=11><IMG height=11 
                  src="用Hibernate和Spring開發事務持久層.files/u_17.gif" 
              width=10></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><BR>
      <DIV align=right>頁面功能&nbsp; 【<A 
      href="javascript:window.external.AddFavorite(location.href,document.title+'--www.JavaFan.NET');">加入收藏</A>】 
      【<A 
      onclick="window.open(this.href,'','top=180,left=240,width=342,height=326,scrollbars=yes,resizable=no');return false;" 
      href="http://www.javafan.net/sendarticle.jsp?title=用Hibernate和Spring開發事務持久層&amp;URL=20041223180912482">推薦給朋友</A>】 
      【字體:<A class=black href="javascript:fontZoom(15)">大</A>&nbsp;<A 
      class=black href="javascript:fontZoom(13)">中</A>&nbsp;<A class=black 
      href="javascript:fontZoom(12)">小</A>】 【<A class=black 
      href="javascript:window.close()">關閉</A>】&nbsp;&nbsp;&nbsp; </DIV></TD></TR>
  <TR>
    <TD vAlign=top><IMG height=12 
      src="用Hibernate和Spring開發事務持久層.files/u_06.gif" 
width=751></TD></TR></TBODY></TABLE><BR>
<TABLE cellSpacing=0 cellPadding=0 width=750 align=center border=0>
  <TBODY>
  <TR>
    <TD bgColor=#cacaca height=1></TD></TR>
  <TR>
    <TD vAlign=center align=middle height=30>Copyright &copy; 2003 - 2005 
      JavaFan.NET All Rights Reserved</TD></TR></TBODY></TABLE></BODY></HTML>

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
www.av精品| 国产亚洲精品aa午夜观看| 日韩精品在线一区| 日韩毛片高清在线播放| 久久精品国产亚洲a| 色哟哟国产精品免费观看| 欧美成人aa大片| 亚洲国产精品久久不卡毛片 | 日韩精品一区二区三区swag| 国产精品日韩成人| 久色婷婷小香蕉久久| 在线精品视频免费观看| 中文字幕免费不卡| 精品一区二区三区免费播放| 欧美性生活久久| 有码一区二区三区| 99精品久久99久久久久| 国产精品色呦呦| 国产乱码精品一区二区三| 欧美一区二区三区精品| 亚洲午夜久久久久久久久久久 | 日本一区二区动态图| 免费高清视频精品| 在线91免费看| 丝袜美腿亚洲一区| 欧美日韩电影一区| 性做久久久久久免费观看欧美| 91丨九色丨蝌蚪丨老版| 综合久久国产九一剧情麻豆| 成人av中文字幕| 亚洲欧洲性图库| 99久久精品免费看国产免费软件| 久久亚洲精精品中文字幕早川悠里 | 欧美亚洲一区三区| 亚洲啪啪综合av一区二区三区| 成人综合在线观看| 国产精品久久久99| 91丨porny丨蝌蚪视频| 日韩美女啊v在线免费观看| 成人黄色在线视频| 亚洲视频图片小说| 欧美在线色视频| 日精品一区二区三区| 日韩欧美一区电影| 国产乱人伦精品一区二区在线观看 | 色婷婷亚洲婷婷| 亚洲欧美一区二区久久| 欧美在线一区二区三区| 亚洲一区电影777| 欧美一区永久视频免费观看| 麻豆精品久久久| 日本一区二区综合亚洲| 9久草视频在线视频精品| 一区二区三区四区高清精品免费观看| 色狠狠av一区二区三区| 日韩高清一级片| 国产欧美久久久精品影院| 99久久er热在这里只有精品15 | 毛片一区二区三区| 国产婷婷色一区二区三区在线| av电影在线观看不卡| 亚洲电影第三页| 国产亚洲午夜高清国产拍精品| 91小视频免费看| 蜜桃视频一区二区| 日韩理论电影院| 精品久久国产字幕高潮| www.久久精品| 精品在线观看免费| 亚洲男同性恋视频| 久久伊99综合婷婷久久伊| 99精品视频免费在线观看| 青青草国产精品亚洲专区无| 国产精品久久久一本精品| 4438x成人网最大色成网站| 国产不卡高清在线观看视频| 亚洲一区二区视频| 国产亚洲一区二区三区| 欧美日韩国产电影| 成人午夜激情影院| 美国精品在线观看| 一区二区三区欧美亚洲| 亚洲国产经典视频| 日韩欧美一区中文| 91首页免费视频| 风流少妇一区二区| 日韩av一区二| 亚洲午夜一二三区视频| 国产精品久久久久9999吃药| 欧美videofree性高清杂交| 欧美影片第一页| 成人黄色在线看| 国产综合成人久久大片91| 亚洲第一久久影院| 亚洲欧美国产高清| 中文字幕一区二区三区不卡在线| 日韩免费视频线观看| 欧美色爱综合网| 91在线精品一区二区| 久久精品99久久久| 蜜臀av一区二区在线观看| 亚洲人成在线播放网站岛国| 中国av一区二区三区| 国产亚洲精品bt天堂精选| 精品美女在线播放| 欧美zozozo| 欧美mv和日韩mv国产网站| 欧美白人最猛性xxxxx69交| 制服丝袜亚洲色图| 色婷婷狠狠综合| 91丨porny丨国产入口| a4yy欧美一区二区三区| 成人精品高清在线| 99久久精品费精品国产一区二区| 国产.欧美.日韩| 成人精品免费视频| 成人久久18免费网站麻豆| av一区二区三区四区| 国产福利不卡视频| 成人av动漫在线| 91丨porny丨首页| 欧美视频在线观看一区二区| 欧美日韩国产首页| 欧美一区二区三区小说| 精品国产伦一区二区三区免费 | 一区二区三区**美女毛片| 亚洲情趣在线观看| 亚洲在线免费播放| 亚洲高清在线视频| 美腿丝袜在线亚洲一区| 国产麻豆精品视频| av资源站一区| 欧美午夜一区二区三区| 欧美另类久久久品| 欧美成人一区二区| 国产亚洲va综合人人澡精品| 国产精品电影院| 视频一区视频二区中文字幕| 免费成人在线视频观看| 国产精品综合一区二区| 色综合视频一区二区三区高清| 精品视频一区二区不卡| 日韩欧美综合一区| 国产精品国产精品国产专区不片| 亚洲香肠在线观看| 美女视频黄免费的久久 | 美国精品在线观看| 成人免费高清视频在线观看| 91黄色激情网站| 精品久久一区二区| 亚洲欧洲中文日韩久久av乱码| 亚洲第一久久影院| 国产乱码精品一区二区三区五月婷| 91丝袜呻吟高潮美腿白嫩在线观看| 欧美高清一级片在线| 欧美国产精品久久| 婷婷成人激情在线网| 国产伦精品一区二区三区视频青涩| 91在线视频观看| 精品日韩99亚洲| 亚洲精品久久嫩草网站秘色| 日欧美一区二区| 91免费看`日韩一区二区| 日韩一区二区高清| 亚洲精品水蜜桃| 国产精品影视天天线| 欧美剧情片在线观看| 亚洲天堂精品视频| 久久99精品视频| 欧美特级限制片免费在线观看| 久久久久国产一区二区三区四区| 亚洲电影激情视频网站| 成人午夜av影视| 欧美成人猛片aaaaaaa| 亚洲一区在线视频| 99精品欧美一区二区蜜桃免费| 2023国产精华国产精品| 午夜不卡av在线| 91蜜桃在线免费视频| 国产精品灌醉下药二区| 国产精品一区二区久久不卡| 91麻豆精品国产91久久久久久 | 国产精品自产自拍| 日韩三级精品电影久久久| 一区二区三区不卡视频| 99久久99精品久久久久久| 国产三级精品三级| 国产一区 二区| 日韩欧美成人午夜| 五月婷婷综合在线| 欧美视频一区二区三区| 亚洲精品日韩一| 99re66热这里只有精品3直播 | 亚洲一卡二卡三卡四卡无卡久久| 99视频精品免费视频| 国产精品久久久久aaaa樱花 | 成人免费黄色在线| 国产肉丝袜一区二区| 懂色av一区二区三区蜜臀| 久久久99久久|