今日任務: 1、什么是軟件開發 2、人機交互 3、常用的dos命令 4、什么是計算機語言 5、Java的三種技術架構★★★ 6、Java語言跨平臺原理 ★★★★★ 7、Java開發環境搭建(JRE、JDK區別,下載、安裝JDK,測試) 8、環境變量path配置★★★★★ 9、hello world書寫★★★★★ 10、常見錯誤排查★★★★★ 11、classpath配置★★★★★
今日任務 1、Java關鍵字、保留字、標識符 2、Java的常量和變量★★★ 3、Java數據類型★★★★ 4、數據類型轉換 5、算術運算符★★★ 6、賦值運算符★★★ 7、比較運算符★★★ 8、邏輯運算符★★★ 9、移位運算符★★★★
Tomcat的下載、安裝與配置1、安裝Tomcat前要先安裝JDK2、下載TomcatTomcat官網:HYPERLINK"http://tomcat.apache.org/"http://tomcat.apache.org/對于Windows操作系統,tomcat提供了兩種安裝文件,一個文件exe格式,另一個文件為zip格式。exe是可運行的安裝程序,讀者只需要雙擊這個文件,即可開始安裝Tomcat。在安裝過程中,安裝程序會自動搜尋JDK和JRE的位置,并把Tomcat服務加入到Windows操作系統的服務中,同時在“開始”→“程序”菜單中加入Tomcat服務器管理菜單。zip是一個壓縮包,只需要把它解壓到本地硬盤即可,這種方式既適合Windows系統下的安裝,也適用于其他操作系統,例如Linux系統,所以下面主要介紹zip的安裝與Tomcat運行環境的設置。3、ZIP格式Tomcat安裝文件的安裝及設置A、Tomcat安裝文件的安裝及設置把Tomcat壓縮文件apache-tomcat-8.0.3-windows-x64.zip中的內容解壓縮到D:\DevTools\apache-tomcat-8.0.3下,然后增加系統變量:變量名:TOMCAT_HOME;變量值:D:\DevTools\apache-tomcat-8.0.3。然后修改系統變量classpath,添加%TOMCAT_HOME%\lib\servlet-api.jar;同時修改系統變量path,添加%TOMCAT_HOME%\bin。B、測試Tomcat要測試Tomcat服務器是否安裝成功,首先要啟動Tomcat服務器。在Tomcat安裝目錄D:\DevTools\apache-tomcat-8.0.3下面有一個bin目錄,里面有兩個文件:startup.bat和shutdown.bat,分別控制Tomcat的啟動和關閉。由于在前一節中已經把該目錄加入到系統變量Path中,所以在命令行中直接輸入對應的文件名即可實現Tomcat的啟動和關閉,而不需要切換目錄。在命令行中輸入startup.bat,即可啟動Tomcat,如圖所示:然后在瀏覽器地址欄中輸入http://localhost:8080或者http://127.0.1.1:8080后,按Enter鍵訪問。如果出現如下圖界面,則說明Tomcat安裝成功。C、Tomcat常用配置文件在Tomcat目錄中,比較重要的配置文件有\conf下的tomcat-users.xml、server.xml以及\webapps中應用程序目錄下的web.xml。Tomcat采用基于角色的訪問控制模型管理用戶對系統的使用,安全性比較高,其角色和對應用戶都保存在tomcat-users.xml中。Tomcat服務器是由一些可配置的組件構成,在server.xml文件中可以對這些組件進行配置,每個Tomcat組件和server.xml文件是一一對應的。web.xml是按照Servlet規范定義的Web應用發布描述符文件,是完全獨立于Tomcat容器的Web應用配置文件。下面是一個tomcat-users.xml文件的內容:<?xmlversion='1.0'encoding='utf-8'?><tomcat-users>?<rolerolename="tomcat"/>?<rolerolename="role1"/>?<userusername="tomcat"password="tomcat"roles="tomcat"/>?<userusername="both"password="tomcat"roles="tomcat,role1"/>?<userusername="role1"password="tomcat"roles="role1"/></tomcat-users>其中,文件開頭聲明了XML的版本和編碼方式,<tomcat-users>和</tomcat-users>之間描述了系統中的角色和用戶。其中<rolerolename="tomcat"/>表示建立了一個名字叫tomcat的角色;<userusername="tomcat"password="tomcat"roles="tomcat"/>表示建立了一個用戶,名字為tomcat,密碼為tomcat,擁有角色tomcat所擁有的權限。一個用戶可以擁有多個角色的權限,<userusername="both"password="tomcat"roles="tomcat,role1"/>表明用戶both擁有角色tomcat和role1兩者的權限。該文件具有擴充性,用戶可以增加角色和用戶。4、EXE格式tomcat安裝文件的安裝與配置A、tomcat安裝文件
Hibernate4實戰之第六部分:基本實現原理2013-05-1101:35:00標簽:HYPERLINK"http://blog.51cto.com/tag-%E6%95%B0%E6%8D%AE%E5%BA%93.html"\t"_blank"數據庫HYPERLINK"http://blog.51cto.com/tag-SQL.html"\t"_blank"SQLHYPERLINK"http://blog.51cto.com/tag-%E5%AF%B9%E8%B1%A1.html"\t"_blank"對象HYPERLINK"http://blog.51cto.com/tag-Hibernate.html"\t"_blank"HibernateHYPERLINK"http://blog.51cto.com/tag-%E8%A1%8C%E4%B8%9A%E6%95%B0%E6%8D%AE.html"\t"_blank"行業數據HYPERLINK"http://blog.51cto.com/zt/617"\t"_blank"INCLUDEPICTURE"http://3001448.blog.51cto.com/image/zt/big.png"\*MERGEFORMATINET原創作品,允許轉載,轉載時請務必以超鏈接形式標明文章HYPERLINK"http://3001448.blog.51cto.com/2991448/1205813"\t"_blank"原始出處、作者信息和本聲明。否則將追究法律責任。HYPERLINK"http://3001448.blog.51cto.com/2991448/1205813"http://3001448.blog.51cto.com/2991448/1205813整體流程1:通過configuration來讀cfg.xml文件2:得到SessionFactory工廠3:通過SessionFactory工廠來創建Session實例4:通過Session打開事務5:通過session的api操作數據庫6:事務提交7:關閉連接?說明:以下分方法描述的實現流程并不是Hibernate的完整實現流程,也不是Hibernate的完整實現順序,只是描述了Hibernate實現這些方法的主干和基本方式,主要是用來理解這些方法背后都發生了些什么,如果需要詳細完整的實現流程,請查閱Hibernate相應文檔和源代碼INCLUDEPICTURE"http://sishuok.com/forum/upload/2012/2/22/85496e48dbd61a7c31baa95771128a94__1.bmp"\*MERGEFORMATINET?當我們調用了session.save(UserModel)后:1:TO--->PO:Hibernate先在緩存中查找,如果發現在內部緩存中已經存在相同id的PO,就認為這個數據已經保存了,拋出例外。如果緩存中沒有,Hibernate會把傳入的這個TO對象放到session控制的實例池去,也就是把一個瞬時對象變成了一個持久化對象。如果需要Hibernate生成主鍵值,Hibernate就會去生成id并設置到PO上2:客戶端提交事務或者刷新內存3:根據model類型和cfg.xml中映射文件的注冊來找到相應的hbm.xml文件4:根據hbm.xml文件和model來動態的拼sql,如下:insertinto表名(來自hbm.xml)(字段名列表(來自hbm.xml))values(對應的值的列表(根據hbm.xml從傳入的model中獲取值))5:真正用JDBC執行sql,把值添加到數據庫6:返回這個PO的id。INCLUDEPICTURE"http://sishuok.com/forum/upload/2012/2/22/b41cef57e703ae3c9f920ecd1433a63d__2.bmp"\*MERGEFORMATINET?INCLUDEPICTURE"http://sishuok.com/forum/upload/2012/2/22/9457a21896d91dab8bfa15f1ee733648__3.bmp"\*MERGEFORMATINET當我們調用了session.update(UserModel)后:1:DO--->PO:首先根據model的主鍵在hibernate的實例池中查找該對象,找到就拋出錯誤。如果沒有就DO--->PO,Hibernate會把傳入的這個DO對象放到session控制的實例池去,也就是把一個瞬時對象變成了一個持久化對象2:客戶端提交事務或者刷新內存
Hibernate4實戰之第五部分:Hibernate的事務和并發2013-05-1101:34:00標簽:HYPERLINK"http://blog.51cto.com/tag-Hibernate.html"\t"_blank"HibernateHYPERLINK"http://blog.51cto.com/tag-%E4%BA%8B%E5%8A%A1.html"\t"_blank"事務HYPERLINK"http://blog.51cto.com/tag-%E5%B9%B6%E5%8F%91.html"\t"_blank"并發HYPERLINK"http://blog.51cto.com/tag-%E6%95%B0%E6%8D%AE%E5%BA%93.html"\t"_blank"數據庫HYPERLINK"http://blog.51cto.com/tag-%E5%BA%94%E7%94%A8.html"\t"_blank"應用HYPERLINK"http://blog.51cto.com/zt/617"\t"_blank"INCLUDEPICTURE"http://3001448.blog.51cto.com/image/zt/big.png"\*MERGEFORMATINET原創作品,允許轉載,轉載時請務必以超鏈接形式標明文章HYPERLINK"http://3001448.blog.51cto.com/2991448/1205814"\t"_blank"原始出處、作者信息和本聲明。否則將追究法律責任。HYPERLINK"http://3001448.blog.51cto.com/2991448/1205814"http://3001448.blog.51cto.com/2991448/1205814Hibernate本身沒有事務的實現Hibernate直接使用JDBC連接和JTA資源,不添加任何附加鎖定行為。也就是說你在Hibernate里面使用的事務要么是JDBC的事務,要么是JTA的事務。Hibernate不鎖定內存中的對象你的應用程序會按照你的數據庫事務的隔離級別規定的那樣運作,真正對事務的實現和支持也依賴于數據庫。?對于并發處理,Hibernate提供了樂觀鎖和悲觀鎖來進行并發處理Hibernate對自動樂觀并發控制提供版本管理,針對行級悲觀鎖定,Hibernate也提供了輔助的(較小的)API,它使用了SELECTFORUPDATE的SQL語法Hibernate的Session是和事務聯系在一起的可以通過Session去獲取事務的接口,從而進行事務的控制。?數據庫事務應該盡可能的短這樣能降低數據庫中的鎖爭用。數據庫長事務會阻止你的應用程序擴展到高的并發負載。因此,假若在用戶思考期間讓數據庫事務開著,直到整個工作單元完成才關閉這個事務,這絕不是一個好的設計。這就引出一個問題:一個操作單元,也就是一個事務單元的范圍應該是多大?一個操作一個?一個請求一個?一個應用一個??反模式:session-per-operation在單個線程中,不要因為一次簡單的數據庫調用,就打開和關閉一次Session!數據庫事務也是如此。也就是說應該禁止自動事務提交(auto-commit)。?session-per-request最常用的模式是每個請求一個會話。在這種模式下,來自客戶端的請求被發送到服務器端,即Hibernate持久化層運行的地方,一個新的HibernateSession被打開,并且執行這個操作單元中所有的數據庫操作。一旦操作完成(同時對客戶端的響應也準備就緒),session被同步,然后關閉。會話和請求之間的關系是一對一的關系。Hibernate內置了對“當前session(currentsession)”的管理,用于簡化此模式。你要做的一切就是在服務器端要處理請求的時候,開啟事務,在響應發送給客戶之前結束事務,通常使用ServeltFilter來完成。?非托管環境下所謂非托管,指的是:應用程序沒有托管到J2EE環境中,通常由Hibernate自己來負責管理數據庫連接池。應用程序開發人員必須手工設置事務聲明,換句話說,就是手工啟動,提交,或者回滾數據庫事務。?使用JTA又有兩種方式,一種是在Hibernate配置里面修改transaction的factory類,從而在程序里面可以直接使用Hibernate的事務API,也就是程序不用變化。另外一種方式就是直接通過JNDI去查找UserTransaction,然后直接在程序里面使用JTA的接口來控制事務。應用程序級別的版本檢查簡單點說,就是由應用程序自己實現版本檢查來確保對話事務的隔離,從數據訪問的角度來說是最低效
Hibernate4實戰之第七部分:最佳實踐2013-05-1101:36:00標簽:HYPERLINK"http://blog.51cto.com/tag-Hibernate4%E5%AE%9E%E6%88%98%E4%B9%8B%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5.html"\t"_blank"Hibernate4實戰之最佳實踐HYPERLINK"http://blog.51cto.com/zt/617"\t"_blank"INCLUDEPICTURE"http://3001448.blog.51cto.com/image/zt/big.png"\*MERGEFORMATINET原創作品,允許轉載,轉載時請務必以超鏈接形式標明文章HYPERLINK"http://3001448.blog.51cto.com/2991448/1205812"\t"_blank"原始出處、作者信息和本聲明。否則將追究法律責任。HYPERLINK"http://3001448.blog.51cto.com/2991448/1205812"http://3001448.blog.51cto.com/2991448/1205812設計細顆粒度的持久類并且使用<component>來實現映射。例如使用一個Address持久類來封裝street,suburb,state,postcode.這將有利于代碼重用和簡化代碼重構(refactoring)的工作。對持久類聲明標識符屬性(identifierproperties)。Hibernate中標識符屬性是可選的,不過有很多原因來說明你應該使用標識符屬性。我們建議標識符應該是“人造”的(自動生成,不涉及業務含義)。使用自然鍵(naturalkeys)標識對所有的實體都標識出自然鍵,用<natural-id>進行映射。實現equals()和hashCode(),在其中用組成自然鍵的屬性進行比較。為每個持久類寫一個映射文件不要把所有的持久類映射都寫到一個大文件中。把com.eg.Foo映射到com/eg/Foo.hbm.xml中,在團隊開發環境中,這一點顯得特別有意義。把映射文件作為資源加載把映射文件和他們的映射類放在一起進行部署。考慮把查詢字符串放在程序外面如果你的查詢中調用了非ANSI標準的SQL函數,那么這條實踐經驗對你適用。把查詢字符串放在映射文件中可以讓程序具有更好的可移植性。使用綁定變量就像在JDBC編程中一樣,應該總是用占位符"?"來替換非常量值,不要在查詢中用字符串值來構造非常量值!更好的辦法是在查詢中使用命名參數。不要自己來管理JDBCconnectionsHibernate允許應用程序自己來管理JDBCconnections,但是應該作為最后沒有辦法的辦法。如果你不能使用Hibernate內建的connectionsproviders,那么考慮實現自己來實現org.hibernate.connection.ConnectionProvider考慮使用用戶自定義類型(customtype)假設你有一個Java類型,來自某些類庫,需要被持久化,但是該類沒有提供映射操作需要的存取方法。那么你應該考慮實現org.hibernate.UserType接口。這種辦法使程序代碼寫起來更加自如,不再需要考慮類與Hibernatetype之間的相互轉換。?在性能瓶頸的地方使用硬編碼的JDBC在系統中對性能要求很嚴格的一些部分,某些操作也許直接使用JDBC會更好。但是請先確認這的確是一個瓶頸,并且不要想當然認為JDBC一定會更快。如果確實需要直接使用JDBC,那么最好打開一個HibernateSession然后從Session獲得connection,按照這種辦法你仍然可以使用同樣的transaction策略和底層的connectionprovider。理解Session清洗(flushing)Session會不時的向數據庫同步持久化狀態,如果這種操作進行的過于頻繁,性能會受到一定的影響。有時候你可以通過禁止自動flushing,盡量最小化非必要的flushing操作,或者更進一步,在一個特定的transaction中改變查詢和其它操作的順序。在三層結構中,考慮使用托管對象(detachedobject)當使用一個servlet/sessionbean類型的架構的時候,你可以把已加載的持久對象在sessionbean層和servlet/JSP層之間來回傳遞。使用新的session來為每個請求服務,使用Session.merge()或者Session.saveOrUpdate()來與數據庫同步。在兩層結構中,考慮使用長持久上下文(longpers
Hibernate4實戰之第二部分:Hibernate的基本配置2013-05-1101:32:00標簽:HYPERLINK"http://blog.51cto.com/tag-Hibernate.html"\t"_blank"HibernateHYPERLINK"http://blog.51cto.com/tag-%E7%BC%96%E7%A8%8B.html"\t"_blank"編程HYPERLINK"http://blog.51cto.com/tag-c3p0.html"\t"_blank"c3p0HYPERLINK"http://blog.51cto.com/tag-Java.html"\t"_blank"JavaHYPERLINK"http://blog.51cto.com/tag-%E6%95%B0%E6%8D%AE%E5%BA%93.html"\t"_blank"數據庫HYPERLINK"http://blog.51cto.com/zt/617"\t"_blank"INCLUDEPICTURE"http://3001448.blog.51cto.com/image/zt/big.png"\*MERGEFORMATINET原創作品,允許轉載,轉載時請務必以超鏈接形式標明文章HYPERLINK"http://3001448.blog.51cto.com/2991448/1205817"\t"_blank"原始出處、作者信息和本聲明。否則將追究法律責任。HYPERLINK"http://3001448.blog.51cto.com/2991448/1205817"http://3001448.blog.51cto.com/2991448/1205817可編程的配置方式-1如果在配置cfg.xml的時候,不想在里面配置hbm.xml怎么辦呢?可在程序里使用可編程的配置方式,也就是使用程序來指定在cfg.xml里面的配置信息,不推薦這種方式。如下:Configurationcfg=newConfiguration()???.addResource("Item.hbm.xml")???.addResource("Bid.hbm.xml");?一個替代方法(有時是更好選擇)是,指定被映射的類,讓Hibernate幫你尋找映射定義文件:Configurationcfg=newConfiguration()???.addClass(org.hibernate.auction.Item.class)???.addClass(org.hibernate.auction.Bid.class);這種方式消除了任何對文件名的硬編碼可編程的配置方式-2還可以通過編程的方式來指定配置屬性:Configurationcfg=newConfiguration()???.addClass(org.hibernate.auction.Item.class)???.setProperty("hibernate.dialect","org.hibernate.dialect.MySQLInnoDBDialect")???.setProperty("hibernate.connection.datasource","java:comp/env/jdbc/test")???.setProperty("hibernate.order_updates","true");其他可以傳入配置屬性的方式:1:properties文件2:xml文件3:設置Java的系統屬性,形如:java–Dproperty=value另外要注意一點:org.hibernate.cfg.Configuration實例被設計成啟動期間(startup-time)對象,一旦SessionFactory創建完成它就被丟棄了。?與數據庫連接的配置有兩種方法,一種是JDBC,一種是DataSourceJDBC的配置INCLUDEPICTURE"http://sishuok.com/forum/upload/2012/2/21/c7b4a79cc0e14038212cc6d54ba26252__%E5%9B%BE%E7%89%871.png"\*MERGEFORMATINET示例:<propertyame="connection.driver_class">oracle.jdbc.driver.OracleDriver</property><propertyname="connection.url">jdbc:oracle:thin:@localhost:1521:orcl</property><propertyname="connect
Hibernate4實戰之第一部分Hibernate入門2013-05-1101:31:00標簽:HYPERLINK"http://blog.51cto.com/tag-Hibernate.html"\t"_blank"HibernateHYPERLINK"http://blog.51cto.com/tag-Hibernate4.html"\t"_blank"Hibernate4HYPERLINK"http://blog.51cto.com/zt/617"\t"_blank"INCLUDEPICTURE"http://3001448.blog.51cto.com/image/zt/big.png"\*MERGEFORMATINET原創作品,允許轉載,轉載時請務必以超鏈接形式標明文章HYPERLINK"http://3001448.blog.51cto.com/2991448/1205818"\t"_blank"原始出處、作者信息和本聲明。否則將追究法律責任。HYPERLINK"http://3001448.blog.51cto.com/2991448/1205818"http://3001448.blog.51cto.com/2991448/1205818Hibernate是什么???Hibernate是一個輕量級的ORMapping框架??ORMapping原理(ObjectRelationalMapping)?INCLUDEPICTURE"http://sishuok.com/forum/upload/2012/2/21/bce2ea80efb685abf97a312ebcf61b34__1.JPG"\*MERGEFORMATINETORMapping基本對應規則:1:類跟表相對應2:類的屬性跟表的字段相對應3:類的實例與表中具體的一條記錄相對應4:一個類可以對應多個表,一個表也可以對應對個類5:DB中的表可以沒有主鍵,但是Object中必須設置主鍵字段6:DB中表與表之間的關系(如:外鍵)映射成為Object之間的關系?7:Object中屬性的個數和名稱可以和表中定義的字段個數和名稱不一樣?ORMapping的基本實現方式:使用JDBC,用SQL來操作數據庫,只是看動態生成還是人工寫代碼來實現。大家想想,我們實現過ORMapping嗎??INCLUDEPICTURE"http://sishuok.com/forum/upload/2012/2/21/fef823b1bb37a91ec3013fe2bb441ffb__2.JPG"\*MERGEFORMATINET?INCLUDEPICTURE"http://sishuok.com/forum/upload/2012/2/21/8792eaf947c4702ef7556c32cbbe2fe9__3.JPG"\*MERGEFORMATINETHibernate能干什么:???Hibernate主要用來實現Java對象和表之間的映射,除此之外還提供還提供數據查詢和獲取數據的方法,可以大幅度減少開發時人工使用SQL和JDBC處理數據的時間。Hibernate的目標是對于開發者通常的數據持久化相關的編程任務,解放其中的95%。對于以數據為中心的程序來說,它們往往只在數據庫中使用存儲過程來實現商業邏輯,Hibernate可能不是最好的解決方案;對于那些在基于Java的中間層應用中,它們實現面向對象的業務模型和商業邏輯的應用,Hibernate是最有用的。??Hibernate可以幫助你消除或者包裝那些針對特定廠商的SQL代碼,并且幫你把結果集從表格式的表示形式轉換到一系列的對象去。INCLUDEPICTURE"http://sishuok.com/forum/upload/2012/2/21/839e032a79e7826912b1c67e51c18f69__4.JPG"\*MERGEFORMATINET一個非常簡要的Hibernate體系結構的高層概要圖INCLUDEPICTURE"http://sishuok.com/forum/upload/2012/2/21/6f6ef5745fb905fd91537ca799ca2b1a__5.JPG"\*MERGEFORMATINETHibernate運行時體系結構“最小”的體系結構方案,要求應用程序提供自己的JDBC連接并管理自己的事務。這種方案使用了HibernateAPI的最小子集.?INCLUDEPICTURE"http://sishuok.com/forum/upload/2012/2/21/c305b617ab7081c270a20836ba1dd
Hibernate4實戰之第三部分:Hibernate的基本開發2013-05-1101:33:00標簽:HYPERLINK"http://blog.51cto.com/tag-Hibernate.html"\t"_blank"HibernateHYPERLINK"http://blog.51cto.com/tag-SQL.html"\t"_blank"SQLHYPERLINK"http://blog.51cto.com/tag-%E8%A1%8C%E4%B8%9A%E6%95%B0%E6%8D%AE.html"\t"_blank"行業數據HYPERLINK"http://blog.51cto.com/tag-%E6%95%B0%E6%8D%AE%E5%BA%93.html"\t"_blank"數據庫HYPERLINK"http://blog.51cto.com/tag-%E5%AF%B9%E8%B1%A1.html"\t"_blank"對象HYPERLINK"http://blog.51cto.com/zt/617"\t"_blank"INCLUDEPICTURE"http://3001448.blog.51cto.com/image/zt/big.png"\*MERGEFORMATINET原創作品,允許轉載,轉載時請務必以超鏈接形式標明文章HYPERLINK"http://3001448.blog.51cto.com/2991448/1205816"\t"_blank"原始出處、作者信息和本聲明。否則將追究法律責任。HYPERLINK"http://3001448.blog.51cto.com/2991448/1205816"http://3001448.blog.51cto.com/2991448/12058161:瞬時(Transient)-由new操作符創建,且尚未與HibernateSession關聯的對象被認定為瞬時的。瞬時對象不會被持久化到數據庫中,也不會被賦予持久化標識(identifier)。如果瞬時對象在程序中沒有被引用,它會被垃圾回收器銷毀。使用HibernateSession可以將其變為持久狀態,Hibernate會自動執行必要的SQL語句。?2:持久(Persistent)-持久的實例在數據庫中有對應的記錄,并擁有一個持久化標識。持久的實例可能是剛被保存的,或剛被加載的,無論哪一種,按定義,它存在于相關聯的Session作用范圍內。Hibernate會檢測到處于持久狀態的對象的任何改動,在當前操作單元執行完畢時將對象數據與數據庫同步。開發者不需要手動執行UPDATE。將對象從持久狀態變成瞬時狀態同樣也不需要手動執行DELETE語句。?3:脫管(Detached)-與持久對象關聯的Session被關閉后,對象就變為脫管的。對脫管對象的引用依然有效,對象可繼續被修改。脫管對象如果重新關聯到某個新的Session上,會再次轉變為持久的,在脫管期間的改動將被持久化到數據庫。INCLUDEPICTURE"http://sishuok.com/forum/upload/2012/2/21/41af9144df34dda7df09323551ff1c4b__%E6%9C%AA%E5%91%BD%E5%90%8D.PNG"\*MERGEFORMATINET?通過Session接口來操作Hibernate新增——save方法、persist方法1:persist()使一個臨時實例持久化。然而,它不保證立即把標識符值分配給持久性實例,這會發生在flush的時候。persist()也保證它在事務邊界外調用時不會執行INSERT語句。這對于長期運行的帶有擴展會話/持久化上下文的會話是很有用的。2:save()保證返回一個標識符。如果需要運行INSERT來獲取標識符(如"identity"而非"sequence"生成器),這個INSERT將立即執行,不管你是否在事務內部還是外部。這對于長期運行的帶有擴展會話/持久化上下文的會話來說會出現問題。?刪除——delete方法修改——有四種方法來做,分別是:1:直接在Session打開的時候load對象,然后修改這個持久對象,在事務提交的時候,會自動flush到數據庫中。2:修改托管對象,可用update或merge方法3:自動狀態檢測:saveOrUpdate方法update和merge方法1:如果數據庫里面存在你要修改的記錄,update每次是直接執行修改語句;而merge是先在緩存中查找,緩存中沒有相應數據,就到數據庫去查詢,然后再合并數據,如果數據是一樣的,那么merge方法不會去做修改,如果數據有不一樣的地方,
Hibernate4實戰之第四部分:關系映射2013-05-1101:33:00標簽:HYPERLINK"http://blog.51cto.com/tag-Hibernate.html"\t"_blank"HibernateHYPERLINK"http://blog.51cto.com/tag-Java.html"\t"_blank"JavaHYPERLINK"http://blog.51cto.com/tag-%E7%B1%BB.html"\t"_blank"類HYPERLINK"http://blog.51cto.com/tag-SQL.html"\t"_blank"SQLHYPERLINK"http://blog.51cto.com/tag-String.html"\t"_blank"StringHYPERLINK"http://blog.51cto.com/zt/617"\t"_blank"INCLUDEPICTURE"http://3001448.blog.51cto.com/image/zt/big.png"\*MERGEFORMATINET原創作品,允許轉載,轉載時請務必以超鏈接形式標明文章HYPERLINK"http://3001448.blog.51cto.com/2991448/1205815"\t"_blank"原始出處、作者信息和本聲明。否則將追究法律責任。HYPERLINK"http://3001448.blog.51cto.com/2991448/1205815"http://3001448.blog.51cto.com/2991448/1205815數據表之間的關系分為三類:一對一、一對多、多對多一對一數據表(部門表?和?部門主管表)一對多數據表(部門表?和?部門下的人員表)多對多數據表(部門表?和?人員表)?INCLUDEPICTURE"http://sishuok.com/forum/upload/2012/2/21/ba8cdefeaa03414a6b2ef409df61f73a__1.bmp"\*MERGEFORMATINET根據相互尋找的關系又分:單向和雙向對象一對一(雙向)java代碼:HYPERLINK"http://sishuok.com/forum/blogPost/list/2479.html"查看HYPERLINK"http://sishuok.com/forum/blogPost/list/2479.html"復制到剪貼板HYPERLINK"http://sishuok.com/forum/blogPost/list/2479.html"打印public?class?A?{??private?B?b?=?null;??}??public?class?B?{??private?A?a?=?null;??}??n對象一對多?(雙向)??public?class?A?{??private?B?b?=?null;??}??public?class?B?{??private?Collection<A>?colA?=?null;??}??n對象多對多?(雙向)??public?class?A?{??private?Collection<B>?colB?=?null;??}??public?class?B?{??private?Collection<A>?colA?=?null;??}???雙向一對多是最常用的映射關系<key>元素<key>元素在父映射元素定義了對新表的連接,并且在被連接表中定義了一個外鍵引用原表的主鍵的情況下經常使用。java代碼:HYPERLINK"http://sishuok.com/forum/blogPost/list/2479.html"查看HYPERLINK"http://sishuok.com/forum/blogPost/list/2479.html"復制到剪貼板HYPERLINK"http://sishuok.com/forum/blogPost/list/2479.html"打印<key??column="columnname"(1)??on-delete="noaction|cascade"(2)??property-ref="propertyName"(3)??not-null="true|false"(4)??update="true|false"(5)??unique="true|false"(6)??/>??(1)column(可選):外鍵字段的名稱。也可以通過嵌套的<column>指定。(2)on-delete(可選,默認是noacti
基本類和接口一、javax.servlet.Servlet接口servlet抽象集是javax.servlet.Servlet接口,它規定了必須由Servlet類實現由servlet引擎識別和管理的方法集。Servlet接口的基本目標是提供生命期方法init()、service()和destroy()方法。servlet接口中的方法voidinit(ServletConfitconfig)throwsServletException在servlet被載入后和實施服務前由servlet引擎進行?次性調用。如果init()產生溢出UnavailableException,則servle退出服務。ServletConfiggetServletConfig()返回傳遞到servlet的init()方法的ServletConfig對象
Java的正則表達式講解:(為了能看清,本文正則表達式用中文的句號代替英文句點)英文句點符號:匹配單個任意字符。eg:表達式”t。o可以匹配:tno,t#o,teo等等。不可以匹配:tnno,to,Tno,t正o等。方括號:只有方括號里面指定的字符才參與匹配,也只能匹配單個字符。eg:表達式:t[abcd]n只可以匹配:tan,tbn,tcn,tdn。不可以匹配:thn,tabn,tn等。3|符號。相當與“或”,可以匹配指定的字符,但是也只能選擇其中一項進行匹配。eg:表達式:t(a|b|c|dd)n只可以匹配:tan,tbn,tcn,tddn。
Java語言課程設計報告 - 掃雷小游戲
第2章:數據類型和運算符(二)課程一《Java基礎語法》回顧與作業點評 任務:模擬實現幸運抽獎本課任務/13?學完本次課程后,你能夠:?掌握邏輯運算符?掌握關系運算符、條件運算符?了解運算符的優先級和結合性本課目標/13關系運算符注意=為賦值運算符,==為等于運算符關系表達式的結果為布爾值
第2章:數據類型和運算符(一)課程一《Java基礎語法》?任務1:實現個人簡歷信息輸出?任務2:計算會員卡號四位數字之和本課任務/28?學完本次課程后,你能夠:?掌握標識符和關鍵字?掌握變量和常量的使用?了解Java中的數據類型?掌握數據類型轉換?掌握算術運算符、賦值運算符本課目標/281000*(1+5%)內存1000變量:一個數據98.76不同數據存入具有不同內存地址的空間,相互獨立已經將數據存入內存,但是:怎么找到存入的數據?
詳細介紹Java的內存管理與內存泄露Java內存泄漏是每個Java程序員都會遇到的問題,程序在本地運行一切正常,可是布署到遠端就會出現內存無限制的增長,最后系統癱瘓,那么如何最快最好的檢測程序的穩定性,防止系統崩盤,作者用自已的親身經歷與各位網友分享解決這些問題的辦法。作為Internet最流行的編程語言之一,Java現正非常流行。我們的網絡應用程序就主要采用Java語言開發,大體上分為客戶端、服務器和數據庫三個層次。在進入測試過程中,我們發現有一個程序模塊系統內存和CPU資源消耗急劇增加,持續增長到出現java.lang.OutOfMemoryError為止。
深入Java核心Java內存分配原理精講棧、堆、常量池雖同屬Java內存分配時操作的區域,但其適用范圍和功用卻大不相同。本文將深入Java核心,詳細講解Java內存分配方面的知識。Java內存分配與管理是Java的核心技術之一,之前我們曾介紹過以及方面的知識,今天我們再次深入Java核心,詳細介紹一下Java在內存分配方面的知識。一般Java在內存分配時會涉及到以下區域:Java的內存管理與內存泄露Java垃圾回收
Java與C/C++的區別(OCR by Lindows)首先應該清楚,Java是由C++發展而來的,它保留了c++的大部分內容,類似于c++,但句法更清晰,規模更小,更易學。它是在對多種程序設計語言進行了深入細致研究的基礎上,據棄了其他語言的不足之處,從根本上解決了c++的固有缺陷,而產生的一種新的完全面向對象的語言。Java和c++的相似之處多于不同之處,但兩種語言問幾處主要的不同使得Java更容易學習,并且編程環境更為簡單。因篇幅所限,這里不能完全列出不同之處,僅列出比較顯著的區別:1.指針Java無指針,并且增添了自動的內存管理功能,從而有效地防止了c/c++語言中指針操作失誤,如指針懸空所造成的系統崩潰。
Java和WebSocket開發網頁聊天室一、項目簡介WebSocket是HTML5一種新的協議,它實現了瀏覽器與服務器全雙工通信,這里就將使用WebSocket來開發網頁聊天室,前端框架會使用AmazeUI,后臺使用Java,編輯器使用UMEditor。二、涉及知識點網頁前端(HTML+CSS+JS)和Java