2008年11月15日

          文件下載在windows跟linux及不同瀏覽器下的處理(中文名亂碼)

          在進(jìn)行文件下載時(shí)liunx下出現(xiàn)中文文件名亂碼,windows下卻沒(méi)有.可能是不同操作系統(tǒng)的編碼方式不同?(含糊不清的說(shuō)法),用
          Properties initProp = new Properties(System.getProperties());
          System.out.println(prop.getProperty("file.encoding"));能得到編碼方式都是UTF-8
          后來(lái)發(fā)現(xiàn)用
          fileName  = new String(fileName.getBytes("UTF-8"), "iso-8859-1");不管linux還是windows 下用火狐都是顯示正常的,IE下卻顯示亂碼,所以問(wèn)題出在瀏覽器,得在程序中加入判斷(分別處理firefox跟Ie):
          //判斷是否是使用IE的方法
          String userAgent = request.getHeader("User-Agent");
          boolean isIE = false;
          //userAgent.toLowerCase().indexOf("msie")
          if(userAgent.indexOf("MSIE") > 0){
          isIE = true;
          }
          if(isIE){
          fileName  = new String(fileName.getBytes("gb2312"), "iso-8859-1");
          }else{
          fileName  = new String(fileName.getBytes("UTF-8"), "iso-8859-1");
          }

          posted @ 2011-08-16 15:43 smallfa 閱讀(1122) | 評(píng)論 (1)編輯 收藏

          mysql 常用命令

           mysql -u root -p

          posted @ 2011-08-12 04:36 smallfa 閱讀(286) | 評(píng)論 (0)編輯 收藏

          tomcat bad version number in class file 的解決方法

          一個(gè)同學(xué)前幾天遇到一個(gè)問(wèn)題,今天我試著看了一下。

          項(xiàng)目沒(méi)有錯(cuò)誤,在項(xiàng)目部署到tomcat后,tomcat啟動(dòng)時(shí)報(bào)錯(cuò):

          java.lang.UnsupportedClassVersionError: Bad version number in .class file 。。。

          這個(gè)問(wèn)題我原來(lái)遇到過(guò),原因應(yīng)該是編譯java時(shí)生成的class文件,在運(yùn)行時(shí)用到的JRE和class文件版本不一致造成的。

          1 如果是一般的java程序:

          可以在MyEclipse中修改JRE的路徑和版本。在Window->Preferences中,打開(kāi)如下位置,就可修改JRE:


          修改完之后,最好重新編譯一下,選Project->Clean... 選項(xiàng),然后選擇是所有的項(xiàng)目都要重新編譯,還是只重新編譯指定的項(xiàng)目,然后就應(yīng)該沒(méi)問(wèn)題了。

          今天一開(kāi)始我也是這么做的,但是還是報(bào)錯(cuò),在網(wǎng)上搜了一下之后,因?yàn)檫@是Web項(xiàng)目,程序當(dāng)然是在Tomcat上運(yùn)行的,所以我們這么改當(dāng)然不行。

          2 如果是Web 程序

          就要修改Tomcat運(yùn)行時(shí)的JDK環(huán)境了,如下圖:

          把JDK的路徑和之前Installed JRE的設(shè)置成一樣的,這個(gè)問(wèn)題就解決了!(雖然這里面設(shè)置的是JDK的路徑,但是我覺(jué)得其實(shí)就是在設(shè)置JRE的路徑,因?yàn)閖ava程序運(yùn)行的時(shí)候需要的 是JRE,而不是JDK。我們裝JDK的時(shí)候,一般都裝了2個(gè)JRE,一個(gè)是JDK里面的JRE,還有一個(gè)和JDK平級(jí)的JRE,剛才我上網(wǎng)查了一下,這 兩個(gè)JRE的區(qū)別不大,大家也可以去查一下,每次都可以選擇任何一個(gè)JRE,但是之后配置的吆喝前面的一致。)

          如果不清楚JDK和JRE的關(guān)系的,可以上網(wǎng)查一下。

          一般情況下,我們運(yùn)行別人的程序可能會(huì)遇到這個(gè)問(wèn)題。

          再做個(gè)小小的延伸。。

          這個(gè)項(xiàng)目編譯并沒(méi)有報(bào)錯(cuò),如果我們導(dǎo)入別人的項(xiàng)目之后,出現(xiàn)了很多錯(cuò)誤,那就是JDK版本的問(wèn)題了,可以在這里修改:



          可以選擇1.3,1.4,5.0,6.0.

          轉(zhuǎn) http://apps.hi.baidu.com/share/detail/1776104

          posted @ 2011-07-17 13:22 smallfa 閱讀(378) | 評(píng)論 (0)編輯 收藏

          LINUX基本操作命令

          http://mayuqi827.javaeye.com/blog/804409
          LINUX基本操作命令

          基本操作命令
          ----------------------------------------------------------------------
          ----------------------------------------------------------------------
          ls #以默認(rèn)方式顯示當(dāng)前目錄文件列表
          ls –a #顯示所有文件包括隱藏文件
          ls –l #顯示文件屬性,包括大小,日期,符號(hào)連接,是否可讀寫(xiě)及是否可執(zhí)行
          ls --color=never *.so > obj #不顯示文字顏色,將所有so文件記錄到obj文件中

          ----------------------------------------------------------------------
          cd dir #切換到當(dāng)前目錄下的dir目錄
          cd / #切換到根目錄
          cd .. #切換到到上一級(jí)目錄
          cd ../.. #切換到上二級(jí)目錄
          cd ~ #切換到用戶目錄,比如是root用戶,則切換到/root下

          ----------------------------------------------------------------------
          rm file #刪除某一個(gè)文件
          rm -fr dir #刪除當(dāng)前目錄下叫dir的整個(gè)目錄

          ----------------------------------------------------------------------
          cp source target #將文件source 復(fù)制為 target
          cp /root/source . #將/root下的文件source復(fù)制到當(dāng)前目錄
          cp –av soure_dir target_dir #將整個(gè)目錄復(fù)制,兩目錄完全一樣
          cp –fr source_dir target_dir #將整個(gè)目錄復(fù)制,并且是以非鏈接方式復(fù)制,當(dāng)source目錄帶有符號(hào)鏈接時(shí),兩個(gè)目錄不相同

          ----------------------------------------------------------------------
          mv source target #將文件source更名為target

          ----------------------------------------------------------------------
          diff dir1 dir2 #比較目錄1與目錄2的文件列表是否相同,但不比較文件的實(shí)際內(nèi)容,不同則列出
          diff file1 file2 #比較文件1與文件2的內(nèi)容是否相同,如果是文本格式的文件,則將不相同的內(nèi)容顯示,如果是二進(jìn)制代碼則只表示兩個(gè)文件是不同的
          comm file1 file2 #比較文件,顯示兩個(gè)文件不相同的內(nèi)容

          ----------------------------------------------------------------------
          echo message #顯示一串字符
          echo "message message2" #顯示不連續(xù)的字符串
          cat:
          cat file #顯示文件的內(nèi)容,和DOS的type相同
          cat file | more #顯示文件的內(nèi)容并傳輸?shù)絤ore程序?qū)崿F(xiàn)分頁(yè)顯示,使用命令less file可實(shí)現(xiàn)相同的功能
          more #分頁(yè)命令,一般通過(guò)管道將內(nèi)容傳給它,如ls | more

          ----------------------------------------------------------------------
          export LC_ALL=zh_CN.GB2312 #將環(huán)境變量LC_ALL的值設(shè)為zh_CN.GB2312
          export DISPLAY=0:0 #通過(guò)該設(shè)置,當(dāng)前字符終端下運(yùn)行的圖形程序可直接運(yùn)行于Xserver
          date #顯示當(dāng)前日期時(shí)間
          date -s 20:30:30 #設(shè)置系統(tǒng)時(shí)間為20:30:30
          date -s 2002-3-5 #設(shè)置系統(tǒng)時(shí)期為2003-3-5
          clock –r #對(duì)系統(tǒng)Bios中讀取時(shí)間參數(shù)
          clock –w #將系統(tǒng)時(shí)間(如由date設(shè)置的時(shí)間)寫(xiě)入Bios

          ----------------------------------------------------------------------
          eject #umout掉CDROM并將光碟彈出,但cdrom不能處于busy的狀態(tài),否則無(wú)效

          ----------------------------------------------------------------------
          du #計(jì)算當(dāng)前目錄的容量
          du -sm /root #計(jì)算/root目錄的容量并以M為單位
          find -name /path file #在/path目錄下查找看是否有文件file
          grep -ir “chars” #在當(dāng)前目錄的所有文件查找字串chars,并忽略大小寫(xiě),-i為大小寫(xiě),-r為下一級(jí)目錄

          ----------------------------------------------------------------------
          vi file #編輯文件file
          vi 原基本使用及命令:
          輸入命令的方式為先按ctrl+c, 然后輸入:x(退出),:x!(退出并保存) :w(寫(xiě)入文件),:w!(不詢問(wèn)方式寫(xiě)入文件), :r file(讀文件file) ,:%s/oldchars/newchars/g(將所有字串oldchars換成newchars) 這一類的命令進(jìn)行操作

          ----------------------------------------------------------------------
          man ls #讀取關(guān)于ls命令的幫助
          man ls | grep color #讀取關(guān)于ls命令的幫助并通過(guò)grep程序在其中查找color字串

          ----------------------------------------------------------------------
          startx #運(yùn)行Linux圖形有環(huán)境
          Xfree86 #只運(yùn)行X圖形server

          ----------------------------------------------------------------------
          reboot #重新啟動(dòng)計(jì)算機(jī)
          halt #關(guān)閉計(jì)算機(jī)
          init 0 #關(guān)閉所有應(yīng)用程序和服務(wù),進(jìn)入純凈的操作環(huán)境
          init 1 #重新啟動(dòng)應(yīng)用及服務(wù)
          init 6 #重新啟動(dòng)計(jì)算機(jī)

          ----------------------------------------------------------------------
          擴(kuò)展命令
          ----------------------------------------------------------------------
          ----------------------------------------------------------------------
          tar xfzv file.tgz #將文件file.tgz解壓
          tar xfzv file.tgz -C target_path #將文件file.tgz解壓到target_path目錄下
          tar cfzv file.tgz source_path #將文件source_path壓縮為file.tgz
          tar c directory > directory.tar #將目錄directory打包成不壓縮的directory.tar
          gzip directory.tar #將覆蓋原文件生成壓縮的 directory.tar.gz
          gunzip directory.tar.gz #覆蓋原文件解壓生成不壓縮的 directory.tar。
          tar xf directory.tar #可將不壓縮的文件解包

          ----------------------------------------------------------------------
          dmesg #顯示kernle啟動(dòng)及驅(qū)動(dòng)裝載信息
          uname #顯示操作系統(tǒng)的類型
          uname -R #顯示操作系統(tǒng)內(nèi)核的version

          ----------------------------------------------------------------------
          strings file 顯示file文件中的ASCII字符內(nèi)容

          ----------------------------------------------------------------------
          rpm -ihv program.rpm #安裝程序program并顯示安裝進(jìn)程
          rpm2targz program.rpm program.tgz #將rpm格式的文件轉(zhuǎn)換成tarball格式

          ----------------------------------------------------------------------
          su root #切換到超級(jí)用戶
          sulogin /dev/tty4 #在tty4即alt+F4終端等待用戶登陸或直接登陸開(kāi)啟一個(gè)shell
          chmod a+x file #將file文件設(shè)置為可執(zhí)行,腳本類文件一定要這樣設(shè)置一個(gè),否則得用bash file才能執(zhí)行
          chmod 666 file #將文件file設(shè)置為可讀寫(xiě)
          chown user /dir #將/dir目錄設(shè)置為user所有

          ----------------------------------------------------------------------
          mknod /dev/hda1 b 3 1 #創(chuàng)建塊設(shè)備hda1,主設(shè)備號(hào)為3,從設(shè)備號(hào)為1,即master硬盤(pán)的的第一個(gè)分區(qū)
          mknod /dev/tty1 c 4 1 #創(chuàng)建字符設(shè)備tty1,主設(shè)備號(hào)為4,眾設(shè)備號(hào)為1,即第一個(gè)tty終端

          ----------------------------------------------------------------------
          touch /tmp/running #在/tmp下創(chuàng)建一個(gè)臨時(shí)文件running,重新啟動(dòng)后消失

          ----------------------------------------------------------------------
          sleep 9 #系統(tǒng)掛起9秒鐘的時(shí)間

          ----------------------------------------------------------------------
          lpd stop 或 cups stop #停止打印服務(wù)程序
          lpd start 或 cups start #啟動(dòng)打印服務(wù)程序
          lpd restart 或 cups restart #重新啟動(dòng)打印服務(wù)程序
          lpr file.txt #打印文件file.txt

          ----------------------------------------------------------------------
          fdisk /dev/hda #就像執(zhí)行了dos的fdisk一樣
          cfdisk /dev/hda #比f(wàn)disk界面稍為友好些
          mount -t ext2 /dev/hda1 /mnt #把/dev/hda1裝載到 /mnt目錄
          df #顯示文件系統(tǒng)裝載的相關(guān)信息
          mount -t iso9660 /dev/cdrom /mnt/cdrom #將光驅(qū)加載到/mnt/cdrom目錄
          mount-t smb //192.168.1.5/sharedir /mnt -o username=tomlinux,password=tomlinux #將windows的的共享目錄加載到/mnt/smb目錄,用戶名及密碼均為tomlinux
          mount -t nfs 192.168.1.1:/sharedir /mnt #將nfs服務(wù)的共享目錄sharedir加載到/mnt/nfs目錄
          umount /mnt #將/mnt目錄卸載,/mnt目錄必須處于空閑狀態(tài)
          umount /dev/hda1 #將/dev/hda1設(shè)備卸載,設(shè)備必須處于空親狀態(tài)
          sync #將cache中的內(nèi)容與磁盤(pán)同步,在Linux中復(fù)制文件,一般要系統(tǒng)空閑才去寫(xiě)文件
          e2fsck /dev/hda1 #檢查/dev/hda1是否有文件系統(tǒng)錯(cuò)誤,提示修復(fù)方式
          e2fsck -p /dev/hda1#檢查/dev/hda1是否有錯(cuò)誤,如果有則自動(dòng)修復(fù)
          e2fsck -y /dev/hda1#檢查錯(cuò)誤,所有提問(wèn)均于yes方式執(zhí)行
          e2fsck -c /dev/hda1#檢查磁盤(pán)是否有壞區(qū)
          mkfs /dev/hda1 #格式化/dev/hda1為ext2格式
          mkfs.minix /dev/hda1 #格式化/dev/hda1為minix格式文件系統(tǒng)
          mfks /dev/hda9 #格工化/dev/hda9為L(zhǎng)inux swap格式
          swapon /dev/hda9 #將swap分區(qū)裝載當(dāng)作內(nèi)存來(lái)用
          swapoff /dev/hda9 #將swap分區(qū)卸載

          ----------------------------------------------------------------------
          lilo #運(yùn)行l(wèi)ilo程序,程序自動(dòng)查找/etc/lilo.conf并按該配置生效
          lilo -C /root/lilo.conf #lilo程序按/root/lilo.conf配置生效
          grub #在Linux shell狀態(tài)下運(yùn)行boot loader設(shè)置程序
          grub-install #安裝grub磁盤(pán)引導(dǎo)程序,成功后升級(jí)內(nèi)核無(wú)須像lilo一樣要重新啟動(dòng)系統(tǒng),只需修改/etc/grub.conf即可實(shí)現(xiàn)新引導(dǎo)配置
          rdev bzImage #顯示kernel的根分區(qū)信息
          rdev bzImage /dev/hda1 #將kernel的根分區(qū)設(shè)置為/dev/hda1,這在沒(méi)有l(wèi)ilo等引導(dǎo)程序的系統(tǒng)中非常重要.

          ----------------------------------------------------------------------
          dd if=/dev/fd0 of=floppy.fd #將軟盤(pán)的內(nèi)容復(fù)制成一個(gè)鏡像,功能與舊石器時(shí)代常用的hd-copy相同
          dd if=/dev/zero of=root.ram bs=1024,count=1024 #生成一個(gè)大小為1M的塊設(shè)備,可以把它當(dāng)作硬盤(pán)的一個(gè)分區(qū)來(lái)用
          mkfs root.ram #將塊設(shè)備格式化為ext2格式
          dd if=root.ram of=/dev/ram0 #將init.rd格式的root.ram的內(nèi)容導(dǎo)入內(nèi)存
          mount /dev/ram0 /mnt #ramdisk /dev/ram0裝載到/mnt 目錄

          ----------------------------------------------------------------------
          gcc hello.c #將hello.c編譯成名為a.out二進(jìn)制執(zhí)行文件
          gcc hello.c -o hello #將hello.c編譯成名為hello的二進(jìn)制執(zhí)行文件
          gcc -static -o hello hello.c #將hello.c編譯成名為hello的二進(jìn)制靜態(tài)執(zhí)行文件
          ldd program #顯示程序所使用了哪些庫(kù)
          objcopy -S program #將程序中的符號(hào)表及無(wú)用的調(diào)試信息去掉,可以小很多

          ----------------------------------------------------------------------
          strace netscape #跟蹤程序netscape的執(zhí)行,看調(diào)用的庫(kù),環(huán)境變量設(shè)置,配置文件,使用的設(shè)備,調(diào)用的其它應(yīng)用程序等,在strace下,程序干了什么東東一目了 然。
          ps #顯示當(dāng)前系統(tǒng)進(jìn)程信息
          ps –ef #顯示系統(tǒng)所有進(jìn)程信息
          kill -9 500 #將進(jìn)程編號(hào)為500的程序干掉
          killall -9 netscape #將所有名字為netscape的程序殺死,kill不是萬(wàn)能的,對(duì)僵死的程序則無(wú)效。
          top #顯示系統(tǒng)進(jìn)程的活動(dòng)情況,按占CPU資源百分比來(lái)分
          free #顯示系統(tǒng)內(nèi)存及swap使用情況
          time program #在program程序結(jié)束后,將計(jì)算出program運(yùn)行所使用的時(shí)間

          ----------------------------------------------------------------------
          chroot . #將根目錄切換至當(dāng)前目錄,調(diào)試新系統(tǒng)時(shí)使用
          chroot /tomlinux #將根目錄切換至/tomlinux目錄
          chroot /tomlinux sbin/init #將根目錄切換至/tomlinux并執(zhí)行sbin/init
          adduser id #增加一個(gè)叫id的用戶
          userdel id #增除叫id的用戶
          userlist #顯示已登陸的用戶列表
          passwd id #修改用戶id的密碼
          passwd -d root #將root用戶的密碼刪除
          chown id /work #指定/work目錄為id用戶所擁有

          ----------------------------------------------------------------------
          ifconfig eth0 192.168.1.1 netmask 255.255.255.0 #設(shè)置網(wǎng)卡1的地址192.168.1.1,掩碼為255.255.255.0,不寫(xiě)netmask參數(shù)則默認(rèn)為255.255.255.0
          ifconfig eth0:1 192.168.1.2 #捆綁網(wǎng)卡1的第二個(gè)地址為192.168.1.2
          ifconfig eth0:x 192.168.1.x #捆綁網(wǎng)卡1的第二個(gè)地址為192.168.1.x
          ifconfig down eth1 #關(guān)閉第二塊網(wǎng)卡,使其停止工作
          hostname -F tomlinux.com #將主機(jī)名設(shè)置為tomlinux.com
          route #顯示當(dāng)前路由設(shè)置情況
          route add default gw 192.168.1.1 metric 1 #設(shè)置192.168.1.1為默認(rèn)的路由
          route del default #將默認(rèn)的路由刪除
          dhcp #啟動(dòng)dhcp服務(wù)
          dhclient #啟動(dòng)dhcp終端并自動(dòng)獲取IP地址
          ping 163.com #測(cè)試與163.com的連接
          ping 202.96.128.68 #測(cè)試與IP 202。96.128.68的連接

          ----------------------------------------------------------------------
          probe rtl8139 #檢查驅(qū)動(dòng)程序rtl8139.o是否正常工作
          lsmod #顯示已裝載的驅(qū)動(dòng)程序
          insmod rtl8139.o #裝載驅(qū)動(dòng)程序rtl8139.o
          insmod sb.o io=0x280 irq=7 dma=3 dma16=7 mpu_io=330 #裝載驅(qū)動(dòng)程序并設(shè)置相關(guān)的irq,dma參數(shù)
          rmmod rtl8139 #刪除名為rtl8139的驅(qū)動(dòng)模塊
          gpm -k #停止字符狀態(tài)下的mouse服務(wù)
          gpm -t ps2 #在字符狀態(tài)下以ps2類型啟動(dòng)mouse的服務(wù)

          ----------------------------------------------------------------------
          telnet 192.168.1.1 #登陸IP為192.168.1.1的telnet服務(wù)器
          telnet iserver.com #登陸域名為iserver.com的telnet服務(wù)器
          ftp 192.168.1.1 或 ftp iserver.com #登陸到ftp服務(wù)

          posted @ 2010-12-06 00:31 smallfa 閱讀(349) | 評(píng)論 (0)編輯 收藏

          tomcat 配置-部署 conf-deploy

          1tomcat 部署網(wǎng)站 去掉端口號(hào)和項(xiàng)目名稱

          去除端口號(hào)     conf-->server.xml中查找原始的端口號(hào)(如8080),修改為80后,即可在訪問(wèn)時(shí)不用輸入端口號(hào)。不過(guò)要注意防止其它程序占用80端口。

          項(xiàng)目名稱  server.xml     <Context path="/myapp"  reloadable="true"  docBase="D:"myapp"  workDir="D:"myapp"work"/>

           



          2 TOMCAT 如何配置多端口


          1.修改端口:
          在Tomcat的安裝目錄下的"conf目錄下,打開(kāi)server.xml,
          找到
          <Connector port="8080" protocol="HTTP/1.1"
          connectionTimeout="20000"
          redirectPort="8443"/>
          將8080改為你想要的端口8081

          2.映射路徑:
          還是在server.xml配置文件中,
          在</host>這個(gè)結(jié)束標(biāo)簽之前加上如下的配置信息:
          <Context
          path="/myapp"
          reloadable="true"
          docBase="e:"myApp" />

          3.添加端口:
          在server.xml中添加以下:
          <Connector port="65535" protocol="HTTP/1.1"
          connectionTimeout="20000" />
          Tomcat的端口號(hào)最大到65535.

          4.上面的端口對(duì)于原來(lái)Tomcat中的其他Web應(yīng)用也可以使用,
          下面是獨(dú)立的,只有你的e:"myApp中的Web應(yīng)用可用,
          也就是在server.xml中的</Service>下另外建立一個(gè)Service:

          <Service name="test">
          <Connector port="65535" protocol="HTTP/1.1"
          connectionTimeout="20000" />
          <Engine name="myengine" defaultHost="myhost">
          <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
          resourceName="UserDatabase"/>

          <Host name="myhost" appBase="e:"myApp"
          unpackWARs="true" autoDeploy="true"
          xmlValidation="false" xmlNamespaceAware="false">
          </Host>
          </Engine>
          </Service>


          另外:
          1818189端口?有這么多位嗎?
          我印象中端口號(hào)范圍是0~65535,怎么還有這么多位的端口?
          http://ttov.blog.163.com/blog/static/3822715201072692912584/

          posted @ 2010-11-30 17:50 smallfa 閱讀(1757) | 評(píng)論 (0)編輯 收藏

          VMware 下redhat linux 9使用NAT共享主機(jī)IP上網(wǎng)


          1、安裝VMware workstation。

          2、安裝guest系統(tǒng),這里我安裝的Red Hat Linux9,安裝過(guò)程中確保網(wǎng)絡(luò)連接選擇的是NAT方式,當(dāng)然可以在安裝完后進(jìn)行修改。

           

          3、到windows XP 中,查看所有的網(wǎng)絡(luò)連接,你應(yīng)該發(fā)現(xiàn)除了原有的網(wǎng)卡之外,又多了Vmnet1和Vmnet8。 vmnet1是hostonly的接口,而Vmnet8是就是我們要使用的NAT的網(wǎng)絡(luò)接口。

           

          4、在win主機(jī)上用ipconfig查看VMnet8的IP地址, 一般是192.168.X.1/255.255.255.0,此時(shí)VMnet8的設(shè)置應(yīng)該是自動(dòng)獲取IP,現(xiàn)在改成靜態(tài)IP,并把此IP直接填入 VMnet8里,不設(shè)網(wǎng)關(guān)。

           

          5、同時(shí)在VM網(wǎng)絡(luò)設(shè)置里的NAT項(xiàng)中查看VMnet8,一般是 192.168.X.2/255.255.255.0這個(gè)地址就是VMnet8,NAT的網(wǎng)關(guān)。

           

          6、現(xiàn)在在LINUX下把網(wǎng)卡IP設(shè)置成和VMnet8一個(gè)網(wǎng)段的 IP(192.168.X.Z/255.255.255.0)

          7、網(wǎng)關(guān)設(shè)置成剛才查看的那個(gè)IP192.168.X.2即可。

           

           

          8、DNS和你host主機(jī)的一樣就可以。

           

           

          9、設(shè)置完成后,重新啟動(dòng)linux的網(wǎng)絡(luò)服務(wù)。

           


           

          Linux命令
          netconfig 設(shè)置IP

          ifconfig 查看

          reboot 重啟

          services network restart (重啟網(wǎng)絡(luò))


          http://www.cnblogs.com/hakuci/archive/2008/12/07/1349547.html
          一般情況下,安裝完vmware,不做其他設(shè)置,直接使用nat模式就可以與主機(jī)共享上網(wǎng)了。但如果你用的是某些精簡(jiǎn)版,或者你自己做過(guò)修改,那么就照下 面的步驟檢查一遍吧。

          一、先檢查nat是否可用及相關(guān)服務(wù)是否已經(jīng)打開(kāi)。
              首先打開(kāi)虛擬機(jī)的虛擬網(wǎng)絡(luò)設(shè)置功 能,虛擬機(jī)菜單欄——編輯——虛擬網(wǎng)絡(luò)設(shè)置

          =700) window.open('http://bbs.crsky.com/1236983883/Mon_1004/6_194774_887ae060f330442.jpg');" onload="if(this.offsetWidth>'700')this.width='700';if(this.offsetHeight>'2100')this.height='2100';" border="0">
          圖一
              如果你發(fā)現(xiàn)上面的選項(xiàng)是灰色的,說(shuō)明你的精簡(jiǎn)版沒(méi)有這個(gè)功能,想辦法換個(gè)版本,或者找下載說(shuō)明,看看是否還 需要裝其他東西。
              在后面的對(duì)話框里檢查dhcp和nat服務(wù)是否已經(jīng)打開(kāi)。

          =700) window.open('http://bbs.crsky.com/1236983883/Mon_1004/6_194774_56d1cfb5e6d2e11.jpg');" onload="if(this.offsetWidth>'700')this.width='700';if(this.offsetHeight>'2100')this.height='2100';" border="0">
          圖二

          =700) window.open('http://bbs.crsky.com/1236983883/Mon_1004/6_194774_da98e19f2ca0e5a.jpg');" onload="if(this.offsetWidth>'700')this.width='700';if(this.offsetHeight>'2100')this.height='2100';" border="0">
          圖三
              如果你在上圖中按下啟動(dòng)——應(yīng)用沒(méi)有用的話,就要考慮是不是相關(guān)服務(wù)被禁用了。主機(jī)開(kāi)始菜單——運(yùn)行—— services.msc檢查相關(guān)服務(wù)的情況。正確的應(yīng)該如下:

          =700) window.open('http://bbs.crsky.com/1236983883/Mon_1004/6_194774_b831307582cc66e.jpg');" onload="if(this.offsetWidth>'700')this.width='700';if(this.offsetHeight>'2100')this.height='2100';" border="0">
          圖四

          二、 檢查ics是否有打開(kāi),既打開(kāi)ics又打開(kāi)nat模式,同時(shí)作用,會(huì)造成混亂的,必須關(guān)閉。(ics就是internet connection share,也就是internent連接共享)

          =700) window.open('http://bbs.crsky.com/1236983883/Mon_1004/6_194774_180e7abade984b8.jpg');" onload="if(this.offsetWidth>'700')this.width='700';if(this.offsetHeight>'2100')this.height='2100';" border="0">
          圖五

          三、 檢查網(wǎng)絡(luò)接口模式
          看看虛擬機(jī)網(wǎng)卡是不是真的用了nat模式,跟虛擬網(wǎng)絡(luò)設(shè)置里是不是用了同一個(gè)vmnet號(hào),請(qǐng)確保下圖六和圖3中用的是 同一個(gè)vmnet號(hào)。

          =700) window.open('http://bbs.crsky.com/1236983883/Mon_1004/6_194774_88f83d8b3174401.jpg');" onload="if(this.offsetWidth>'700')this.width='700';if(this.offsetHeight>'2100')this.height='2100';" border="0">
          圖六
          虛擬機(jī)7.0以前的版本,nat都默認(rèn)使用了vmnet8作為nat的默認(rèn)端口號(hào),但vm7.0就不同了。

          =700) window.open('http://bbs.crsky.com/1236983883/Mon_1004/6_194774_742811ec5a6daf6.jpg');" onload="if(this.offsetWidth>'700')this.width='700';if(this.offsetHeight>'2100')this.height='2100';" border="0">
          圖七
          nat模式用的是vmnet0了,這個(gè)時(shí)候,保險(xiǎn)為妙,虛擬機(jī)網(wǎng)卡請(qǐng)使用自定義vmnet0接口。

          四、 開(kāi)虛擬機(jī)系統(tǒng)檢查是否獲取到了ip。檢查ip,網(wǎng)關(guān),dns,是否都正常。

          =700) window.open('http://bbs.crsky.com/1236983883/thumb/Mon_1004/6_194774_724219dda00790b.jpg');" onload="if(this.offsetWidth>'700')this.width='700';if(this.offsetHeight>'2100')this.height='2100';" border="0">
          圖八
          4.1關(guān)于出現(xiàn)網(wǎng)絡(luò)連接紅叉,“電纜被拔出”。在虛擬機(jī)里是不存在電纜的,所以肯定是設(shè)置問(wèn)題。
          4.1.1 檢查圖六“打開(kāi)電源時(shí)連接”的鉤,或者檢查圖八里,右下角的虛擬網(wǎng)卡圖標(biāo)是否有叉。
          4.1.2 上一條正常的,請(qǐng)安裝一遍vmtools,確保虛擬網(wǎng)卡驅(qū)動(dòng)正常。
          4.1.3 上2條都正常的,還是有問(wèn)題的,應(yīng)該是某些系統(tǒng)的問(wèn)題了。ubuntu的話多點(diǎn)幾次連接看看,redflag的話,本地連接屬性里“連接后在通知區(qū)域顯示 圖標(biāo)”前的鉤去掉,眼不見(jiàn)心不煩反而可以連上了。


          五、vm7.0還是沒(méi)有獲取到ip的,需要把虛擬網(wǎng)絡(luò)設(shè)置設(shè)置為默 認(rèn)再試一遍。
          將虛擬機(jī)里的系統(tǒng)關(guān)機(jī),打開(kāi)虛擬網(wǎng)絡(luò)配置,如圖7所示,按下左下角的“resore default”恢復(fù)默認(rèn)設(shè)置,在隨后跳出的whql驅(qū)動(dòng)認(rèn)證里全部選擇“始終安裝此驅(qū)動(dòng)軟件”。

          =700) window.open('http://bbs.crsky.com/1236983883/Mon_1004/6_194774_b329ff341c566c1.jpg');" onload="if(this.offsetWidth>'700')this.width='700';if(this.offsetHeight>'2100')this.height='2100';" border="0">
          圖九
          完 成后,請(qǐng)繼續(xù)檢查前面的檢查項(xiàng)目,再檢查一遍后再打開(kāi)虛擬機(jī)里的系統(tǒng)。

          六、獲取了ip還是無(wú)法上網(wǎng)的,有以下的幾種情況。
          6.1 主機(jī)是win7或是vista,vmware版本低于6.5.3的,請(qǐng)升級(jí)vmware的版本。
               這個(gè)問(wèn)題的癥狀就是能ping通域名,也上不去網(wǎng)。但qq可以上去,這個(gè)應(yīng)該是個(gè)兼容問(wèn)題,請(qǐng)升級(jí)vmware版本。

          6.2 使用網(wǎng)絡(luò)命令檢查網(wǎng)絡(luò)。
              1.ping nat網(wǎng)關(guān),以圖8為利,ping 192.168.47.2
             2.ping 物理主機(jī)公網(wǎng)ip或內(nèi)網(wǎng)真實(shí)ip,
              3.可以繼續(xù)ping,公網(wǎng)的isp網(wǎng)關(guān)或是內(nèi)網(wǎng)的路由器ip,最后ping下網(wǎng)站域名。
              如果都能通,而不是6.1的問(wèn)題,看是不是瀏覽器上設(shè)置了錯(cuò)誤的代理。
              如果dns能解析, 但ping所有外網(wǎng)ip都是丟包的,應(yīng)該是網(wǎng)關(guān)問(wèn)題,檢查下是否是雙網(wǎng)關(guān),route print檢查下默認(rèn)網(wǎng)關(guān)。
              如果可以ping通所 有ip,ping不通域名,則應(yīng)該是nat服務(wù)器的dns解析出了問(wèn)題,重新啟動(dòng)主機(jī)(和重啟路由器一樣的道理)或是在虛擬機(jī)里直接填公網(wǎng)dns,或者設(shè) 置nat,直接將dns直接填到虛擬機(jī)nat里(如圖十)。


          =700) window.open('http://bbs.crsky.com/1236983883/thumb/Mon_1004/6_194774_c10769a426e7ab1.jpg');" onload="if(this.offsetWidth>'700')this.width='700';if(this.offsetHeight>'2100')this.height='2100';" border="0">
          http://www.xpxzlt.cn/simple/?t161677.html

          VMware 小問(wèn)題

          Q:VMware DHCP Service 服務(wù)無(wú)法啟動(dòng) 1067 錯(cuò)誤

          A:打開(kāi)Virtual Network Editor,選擇 Restore Default

           

          Q:VMware Brige 橋接服務(wù)無(wú)法啟動(dòng) 發(fā)生系統(tǒng)錯(cuò)誤 2 系統(tǒng)找不到指定的文件
          A:替換vmnetbridge.sys vmnetbridge.dll(下載



          posted @ 2010-11-22 00:30 smallfa 閱讀(7567) | 評(píng)論 (0)編輯 收藏

          window與Ubuntu虛擬機(jī)共享文件夾

          window主機(jī)與Ubuntu虛擬機(jī)共享文件夾的設(shè)置方法:

           打開(kāi)虛擬機(jī),并開(kāi)啟Ubuntu。

           在ubuntu的選項(xiàng)卡右擊 --> Settings --> 點(diǎn)擊 Options --> 窗口左側(cè)的 Shared Folders --> 右側(cè)Folder Sharing的 Always enabled --> 右側(cè) Folders 下面的 Add -->  Next --> Brower --> 在 瀏覽文件夾 中選擇自己想要共享的文件夾(如: E:/linuxshare) --> 確定 --> Enable this share --> Finish 。

          文件夾共享設(shè)置完成。

          需要往 Ubuntu上傳什么東西,放在E:/linuxshare 下即可。 linux中的訪問(wèn)路徑是: /mnt/hgfs/linuxshare

          下面附上截圖。 

           

             圖一

          圖二

          圖三

          圖四

          圖五

          圖六

          posted @ 2010-11-05 14:33 smallfa 閱讀(2978) | 評(píng)論 (4)編輯 收藏

          Ubuntu 10.04 安裝配置指南

          http://www.cnblogs.com/computer/archive/2010/07/21/1781945.html

          posted @ 2010-11-05 14:33 smallfa 閱讀(230) | 評(píng)論 (0)編輯 收藏

          Win7下光盤(pán)安裝Ubuntu9.10(圖解)

          http://chenjian977355.blog.163.com/blog/static/5544582010229150190/

          WIN 7下光盤(pán)安裝Ubuntu9.10,簡(jiǎn)單配置并修改啟動(dòng)項(xiàng)~~








          先下載最新的Ubuntu9.10版,前幾天剛發(fā)布的



          下載地址:http://www.ubuntu.org.cn/getubuntu/download/



          在下載位置處,選擇“TAIWAN”(中國(guó)好像只有臺(tái)灣這個(gè)選項(xiàng))




          WIN 7下光盤(pán)安裝Ubuntu9.10,簡(jiǎn)單配置并修改啟動(dòng)項(xiàng)~ - 燈火欄柵 - 一角博客

          因?yàn)橛X(jué)得光盤(pán)安裝比較舒服,所以我選擇了光盤(pán)安裝。



          用UltraISO或者其他工具把下載下來(lái)的鏡像刻進(jìn)一張空的CD盤(pán)。



          由于偶的小Y從來(lái)沒(méi)碰過(guò)Ubuntu系統(tǒng),所以整個(gè)安裝過(guò)程最主要的就是對(duì)硬盤(pán)進(jìn)行分區(qū)。



          申明:本人安裝時(shí)并未想到要來(lái)寫(xiě)教程,部分截圖是9.04版的,但幾乎是一樣的,不一樣處我會(huì)指出。



          1.將光盤(pán)放進(jìn)光驅(qū)后重啟,按F12,選擇光驅(qū)啟動(dòng),此時(shí)光驅(qū)開(kāi)始狂轉(zhuǎn),等一會(huì)便出現(xiàn)界面,選擇你看得懂的:簡(jiǎn)體中文




          WIN 7下光盤(pán)安裝Ubuntu9.10,簡(jiǎn)單配置并修改啟動(dòng)項(xiàng)~ - 燈火欄柵 - 一角博客


          2.選擇第一項(xiàng)“試用Ubuntu而不改計(jì)算機(jī)中的任何內(nèi)容”,按回車確認(rèn),也可以選擇第二項(xiàng)直接安裝ubuntu,安裝步驟與以下演示相相同。(為什么要選擇第一項(xiàng)安裝,因?yàn)閡buntu liveCD有個(gè)特色,就是可以一臺(tái)電腦上用光盤(pán)來(lái)臨時(shí)體驗(yàn)一下ubutnu的完整系統(tǒng),進(jìn)入后進(jìn)也可安裝系統(tǒng))




          WIN 7下光盤(pán)安裝Ubuntu9.10,簡(jiǎn)單配置并修改啟動(dòng)項(xiàng)~ - 燈火欄柵 - 一角博客


          3.毫無(wú)懸念的,光驅(qū)又開(kāi)始狂轉(zhuǎn),這下等的時(shí)間會(huì)稍微長(zhǎng)點(diǎn),一段時(shí)間后進(jìn)入系統(tǒng)。在這里你可以先體驗(yàn)下這個(gè) 系統(tǒng),可以聯(lián)網(wǎng);玩夠了再考慮裝還是不裝WIN 7下光盤(pán)安裝Ubuntu9.10,簡(jiǎn)單配置并修改啟動(dòng)項(xiàng)~ - 燈火欄柵 - 一角博客 。如果裝的話,就點(diǎn)擊桌面的“安裝”




          WIN 7下光盤(pán)安裝Ubuntu9.10,簡(jiǎn)單配置并修改啟動(dòng)項(xiàng)~ - 燈火欄柵 - 一角博客


          4.出現(xiàn)以下界面,當(dāng)然用簡(jiǎn)體中文,按默認(rèn)連續(xù)三次Forward(下一步),如圖




          WIN 7下光盤(pán)安裝Ubuntu9.10,簡(jiǎn)單配置并修改啟動(dòng)項(xiàng)~ - 燈火欄柵 - 一角博客


          WIN 7下光盤(pán)安裝Ubuntu9.10,簡(jiǎn)單配置并修改啟動(dòng)項(xiàng)~ - 燈火欄柵 - 一角博客


          WIN 7下光盤(pán)安裝Ubuntu9.10,簡(jiǎn)單配置并修改啟動(dòng)項(xiàng)~ - 燈火欄柵 - 一角博客


          5.然后就到了給硬盤(pán)分區(qū)了,首先進(jìn)入到如圖的界面(圖顯示的不是WIN7 ,是XP,這個(gè)不重要,只要點(diǎn)擊那個(gè)“手動(dòng)指定分區(qū)(高級(jí))”就行了)



          WIN 7下光盤(pán)安裝Ubuntu9.10,簡(jiǎn)單配置并修改啟動(dòng)項(xiàng)~ - 燈火欄柵 - 一角博客


          6.注意:以下內(nèi)容重要!!!!



          我的小Y一共分成了CDEFG,5個(gè)區(qū),F(xiàn)盤(pán)80G 至今沒(méi)用過(guò),所以我打算分出20G來(lái)裝Ubuntu。不一定要20G,10G也行,看自身情況。



          選中要改變的分區(qū),點(diǎn)“編輯分區(qū)”(9.10版里好像是叫“新建”,都一樣,就是“刪除分區(qū)”選項(xiàng)之前的那個(gè))



          WIN 7下光盤(pán)安裝Ubuntu9.10,簡(jiǎn)單配置并修改啟動(dòng)項(xiàng)~ - 燈火欄柵 - 一角博客



          7.出現(xiàn)以下提示,點(diǎn)繼續(xù)將進(jìn)行硬盤(pán)分區(qū),不用擔(dān)心,你硬盤(pán)里的東西不會(huì)丟失




          WIN 7下光盤(pán)安裝Ubuntu9.10,簡(jiǎn)單配置并修改啟動(dòng)項(xiàng)~ - 燈火欄柵 - 一角博客


          8.分區(qū)完成,以下我們可以看到硬盤(pán)多個(gè)一個(gè)空閑的空間,這就是我們釋放出來(lái)安裝ubunbu的空間。選中 空閑的空間再點(diǎn)下面的新的分區(qū)。




          WIN 7下光盤(pán)安裝Ubuntu9.10,簡(jiǎn)單配置并修改啟動(dòng)項(xiàng)~ - 燈火欄柵 - 一角博客


          9.下面對(duì)這個(gè)空閑的空間進(jìn)行分區(qū),首先來(lái)分個(gè)swap交換空間,這個(gè)相當(dāng)于windows下的虛擬內(nèi)存,根據(jù)你內(nèi)存的大小填入,一般填為與內(nèi)存一樣的大小,我的內(nèi)存2G,因此以下 也填入2048(也有一種說(shuō)法是:內(nèi)存小于1G的此處填2倍,大于1G的就填1G就行,自己看著辦吧),再選擇交換空間按確定。

          WIN 7下光盤(pán)安裝Ubuntu9.10,簡(jiǎn)單配置并修改啟動(dòng)項(xiàng)~ - 燈火欄柵 - 一角博客


          10.依然選中空閑的空間-新的分區(qū),下面來(lái)創(chuàng)建個(gè)系統(tǒng)空間,這里我把空閑剩下的全部分配給這個(gè)分區(qū),再選 擇Ext3日志文件系 統(tǒng),掛載點(diǎn)選/,再點(diǎn)確定,到這里分區(qū)完成。

          WIN 7下光盤(pán)安裝Ubuntu9.10,簡(jiǎn)單配置并修改啟動(dòng)項(xiàng)~ - 燈火欄柵 - 一角博客



          WIN 7下光盤(pán)安裝Ubuntu9.10,簡(jiǎn)單配置并修改啟動(dòng)項(xiàng)~ - 燈火欄柵 - 一角博客

          WIN 7下光盤(pán)安裝Ubuntu9.10,簡(jiǎn)單配置并修改啟動(dòng)項(xiàng)~ - 燈火欄柵 - 一角博客

          11.自定義填寫(xiě)用戶名和密碼,你也可以選擇自動(dòng)登錄還是需要密碼以登入(這就是決定是否在開(kāi)機(jī)輸入密 碼),再點(diǎn)下一步,當(dāng)你密碼設(shè)置過(guò)短時(shí),考慮到安全ubuntu會(huì)提示你是否重新設(shè)置,我們不用管它,點(diǎn)繼續(xù)即可。



          WIN 7下光盤(pán)安裝Ubuntu9.10,簡(jiǎn)單配置并修改啟動(dòng)項(xiàng)~ - 燈火欄柵 - 一角博客





          12.通過(guò)下面我們看到兩個(gè)分區(qū),格式為swap和ext3,這兩個(gè)分區(qū)就是Linux要用到的分區(qū),選中ext3分區(qū)再點(diǎn)下一步就行。



          WIN 7下光盤(pán)安裝Ubuntu9.10,簡(jiǎn)單配置并修改啟動(dòng)項(xiàng)~ - 燈火欄柵 - 一角博客


          13.接下來(lái)提示問(wèn)你是否導(dǎo)入本機(jī)WIN 7系統(tǒng)的文檔到ubuntu下使用,如果你需要就勾上,我一個(gè)沒(méi)勾,再點(diǎn)下一步。





          14.好了,到這里準(zhǔn)備安裝,現(xiàn)在你要做的是拔掉網(wǎng)線(切記,一定要把網(wǎng)線拔掉),用無(wú)線網(wǎng)絡(luò)的直接把無(wú)線開(kāi)關(guān)掰回去先。因?yàn)閡buntu在安裝過(guò) 程上會(huì)自動(dòng)從官方下載一些更新,由于這個(gè)“源"地址設(shè)在歐洲,對(duì)于我們國(guó)內(nèi)用戶來(lái)說(shuō)下載特級(jí)慢,我們還是把更新放在系統(tǒng)安裝后進(jìn)行操作,下面點(diǎn)擊安裝即 可!




          WIN 7下光盤(pán)安裝Ubuntu9.10,簡(jiǎn)單配置并修改啟動(dòng)項(xiàng)~ - 燈火欄柵 - 一角博客



          15.以下進(jìn)行系統(tǒng)安裝中,請(qǐng)不要斷來(lái)電腦電源!



          WIN 7下光盤(pán)安裝Ubuntu9.10,簡(jiǎn)單配置并修改啟動(dòng)項(xiàng)~ - 燈火欄柵 - 一角博客


          17.過(guò)了十幾分鐘,系統(tǒng)安裝完成,點(diǎn)現(xiàn)在重啟,此時(shí)電腦會(huì)彈出光盤(pán),請(qǐng)取出光盤(pán)后敲一下回車。



          WIN 7下光盤(pán)安裝Ubuntu9.10,簡(jiǎn)單配置并修改啟動(dòng)項(xiàng)~ - 燈火欄柵 - 一角博客

          安裝完成,秀下桌面:



          WIN 7下光盤(pán)安裝Ubuntu9.10,簡(jiǎn)單配置并修改啟動(dòng)項(xiàng)~ - 燈火欄柵 - 一角博客


          ==========================================================================================================


                                          第二部分: 簡(jiǎn)單配置


          重啟后首次進(jìn)入ubuntu的桌面,說(shuō)明系統(tǒng)已安裝成功,下面我們來(lái)對(duì)系統(tǒng)進(jìn)行更 新(這類似于windows下的打補(bǔ)丁), 首先要做的是換源,什么是源?源可以理解為ubuntu系統(tǒng)更新的服務(wù)器地 址,之前我們已經(jīng)說(shuō)過(guò),ubuntu默認(rèn)的源是設(shè)在歐洲,這對(duì)于我們國(guó)內(nèi)來(lái)說(shuō)更新過(guò)程十分慢,因此可見(jiàn)換源十分重要,我們把這個(gè)源換成離我們較近的地區(qū)來(lái) 提高更新速度。先點(diǎn)擊右上角的網(wǎng)絡(luò)標(biāo)識(shí),連上網(wǎng)絡(luò),很簡(jiǎn)單的,一看就會(huì)。



          1.選擇桌面上方的工具條 依次進(jìn)入System —— Administration——軟件源 ——wnloag from--other,此時(shí)提示輸入密碼(密碼就是你剛才安裝時(shí)設(shè)置的密碼,以后其它操作會(huì)提示都是輸入那個(gè)密碼),然后彈出以下窗口,有世界各地區(qū)供 選擇,選擇Tai w再選tw.archive.ubuntu.com這個(gè)源(因?yàn)門(mén)ai w這個(gè)源在國(guó)內(nèi)被公認(rèn)較快),最后點(diǎn)Choose Gerver。



          WIN 7下光盤(pán)安裝Ubuntu9.10,簡(jiǎn)單配置并修改啟動(dòng)項(xiàng)~ - 燈火欄柵 - 一角博客


          此時(shí),系統(tǒng)會(huì)連上“源”更新組件之類的,



          WIN 7下光盤(pán)安裝Ubuntu9.10,簡(jiǎn)單配置并修改啟動(dòng)項(xiàng)~ - 燈火欄柵 - 一角博客


          2.下載語(yǔ)言包:我們發(fā)現(xiàn)系統(tǒng)雖安裝好了,可是菜單卻 大多數(shù)是英文,此是要做的是下載并安裝簡(jiǎn)體中文語(yǔ)言包,System —— Administration ——Language Support,此時(shí)系統(tǒng)會(huì)自動(dòng)選好漢語(yǔ),并彈出以下窗口,直接點(diǎn)Install。



          WIN 7下光盤(pán)安裝Ubuntu9.10,簡(jiǎn)單配置并修改啟動(dòng)項(xiàng)~ - 燈火欄柵 - 一角博客


          3.此時(shí)系統(tǒng)正在下載并安裝簡(jiǎn)體中文語(yǔ)言包中。



          WIN 7下光盤(pán)安裝Ubuntu9.10,簡(jiǎn)單配置并修改啟動(dòng)項(xiàng)~ - 燈火欄柵 - 一角博客

          語(yǔ)言安裝完畢后,我們點(diǎn)Close關(guān)閉窗口,再選擇桌面右上角的關(guān)機(jī)按鈕,選擇Restart...重新啟動(dòng)計(jì)算機(jī)


          4.重啟后,你能發(fā)現(xiàn)原來(lái)英文的菜單已經(jīng)變?yōu)楹?jiǎn)體中文了,說(shuō)明簡(jiǎn)體中文語(yǔ)言包安裝成功。



          WIN 7下光盤(pán)安裝Ubuntu9.10,簡(jiǎn)單配置并修改啟動(dòng)項(xiàng)~ - 燈火欄柵 - 一角博客


          5.我們發(fā)現(xiàn)桌面空空的,什么都沒(méi)有,這時(shí)要把平時(shí)在windows習(xí)慣的幾個(gè)圖標(biāo)調(diào)出來(lái),選擇桌面上方的應(yīng)用程序-- 附件--終端,在終端輸入gconf-editor再按回車后將彈出配置編輯器窗口。



          WIN 7下光盤(pán)安裝Ubuntu9.10,簡(jiǎn)單配置并修改啟動(dòng)項(xiàng)~ - 燈火欄柵 - 一角博客


          6.通過(guò)以下窗口,依次選擇apps—— nautilus—— desktop,從右邊選擇把需要顯示在桌面圖標(biāo),勾上即可



          WIN 7下光盤(pán)安裝Ubuntu9.10,簡(jiǎn)單配置并修改啟動(dòng)項(xiàng)~ - 燈火欄柵 - 一角博客


          7.在桌面右鍵選擇更改桌面背景,進(jìn)入視覺(jué)效果選項(xiàng)卡,默認(rèn)是關(guān)閉好像,然后點(diǎn)擊正常(或拓展),視個(gè)人喜好定,不過(guò)這個(gè)費(fèi)顯卡的,反正我選擇正常很流 暢。



          WIN 7下光盤(pán)安裝Ubuntu9.10,簡(jiǎn)單配置并修改啟動(dòng)項(xiàng)~ - 燈火欄柵 - 一角博客


          接著,系統(tǒng)會(huì)自動(dòng)聯(lián)網(wǎng)安裝顯卡驅(qū)動(dòng)程序,裝好后重啟,再次進(jìn)入該處才能正常開(kāi)啟視覺(jué)效果選項(xiàng)。



          =========================================================================================================


                                     第三部分:修改啟動(dòng)項(xiàng)


          ubuntu安裝后每次開(kāi)機(jī)都是默認(rèn)進(jìn)入ubuntu系統(tǒng)的,對(duì)于以windows為主的朋友,每次開(kāi)機(jī)都要守在畫(huà)面切換到XP啟動(dòng),可見(jiàn)十分麻 煩,通過(guò)下面,你可以設(shè)置讓你的WIN 7系統(tǒng)為第一啟動(dòng)


             我嘗試像XP一樣打開(kāi)menu.lst,結(jié)果是空白~~~~幾番詢問(wèn)后才發(fā)現(xiàn)時(shí)因?yàn)?.10升級(jí)為grub2了,于是轉(zhuǎn)而修改grub.cfg文件。


          1.左上角-應(yīng)用程序-附件-終端,輸入sudo chmod +w /boot/grub/grub.cfg    將grub.cfg設(shè)為可寫(xiě)狀態(tài)



          WIN 7下光盤(pán)安裝Ubuntu9.10,簡(jiǎn)單配置并修改啟動(dòng)項(xiàng)~ - 燈火欄柵 - 一角博客

          2.提示輸入密碼:輸入你設(shè)的開(kāi)機(jī)密碼,此處輸入密碼不可見(jiàn),密碼輸入后直接回車,然后輸入sudo gedit /boot/grub/grub.cfg



          WIN 7下光盤(pán)安裝Ubuntu9.10,簡(jiǎn)單配置并修改啟動(dòng)項(xiàng)~ - 燈火欄柵 - 一角博客



          3.編輯grub.cfg



          WIN 7下光盤(pán)安裝Ubuntu9.10,簡(jiǎn)單配置并修改啟動(dòng)項(xiàng)~ - 燈火欄柵 - 一角博客


          4.自習(xí)查看,里面有好幾段以


          ###BEGIN**************###開(kāi)頭


          ###END****************###結(jié)尾    的代碼


          5.將含有WIN 7那段代碼剪切至圖中位置



          WIN 7下光盤(pán)安裝Ubuntu9.10,簡(jiǎn)單配置并修改啟動(dòng)項(xiàng)~ - 燈火欄柵 - 一角博客


          6.確認(rèn)下圖的那段代碼值=0



          WIN 7下光盤(pán)安裝Ubuntu9.10,簡(jiǎn)單配置并修改啟動(dòng)項(xiàng)~ - 燈火欄柵 - 一角博客


          7.保存后退出。


          8.一切順利的話,重啟的菜單項(xiàng)將是這樣的(高亮顯示的即為WIN 7)


          WIN 7下光盤(pán)安裝Ubuntu9.10,簡(jiǎn)單配置并修改啟動(dòng)項(xiàng)~ - 燈火欄柵 - 一角博客

          注意:如果是XP系統(tǒng),則第一第二部分通用,要調(diào)整啟動(dòng)順序的話


          打開(kāi)終端(應(yīng)用程序——>附件——>終端),輸入sudo gedit /boot/grub/menu.lst,敲下回車,這時(shí)要求輸入password,輸入登錄系統(tǒng)的密碼,在終端里不能顯示輸入的密碼,這是正常的,輸入 后回車打開(kāi)編輯窗口。


          在其中找到XP的代碼,把它剪切到最前頭就行了~~~~~



          posted @ 2010-11-05 00:11 smallfa 閱讀(1803) | 評(píng)論 (1)編輯 收藏

          Communications link failure

          Communications link failure,The last packet successfully received from the server was *** millisecond ago.The last packet successfully sent to the server was *** millisecond ago。

          最近做測(cè)試,發(fā)現(xiàn)Mysql 過(guò)一段時(shí)間會(huì)無(wú)法連接,導(dǎo)致數(shù)據(jù)庫(kù)數(shù)據(jù)不一至,極其郁悶。

          下面是轉(zhuǎn)一哥門(mén)的

          使用Connector/J連接MySQL數(shù)據(jù)庫(kù),程序運(yùn)行較長(zhǎng)時(shí)間后就會(huì)報(bào)以下錯(cuò)誤:

          Communications link failure,The last packet successfully received from the server was *** millisecond ago.The last packet successfully sent to the server was ***  millisecond ago。

          其中錯(cuò)誤還會(huì)提示你修改wait_timeout或是使用Connector/J的autoReconnect屬性避免該錯(cuò)誤。

          后來(lái)查了一些資料,才發(fā)現(xiàn)遇到這個(gè)問(wèn)題的人還真不少,大部分都是使用連接池方式時(shí)才會(huì)出現(xiàn)這個(gè)問(wèn)題,短連接應(yīng)該很難出現(xiàn)這個(gè)問(wèn)題。這個(gè)問(wèn)題的原因:

          MySQL服務(wù)器默認(rèn)的“wait_timeout”是28800秒即8小時(shí),意味著如果一個(gè)連接的空閑時(shí)間超過(guò)8個(gè)小時(shí),MySQL將自動(dòng)斷開(kāi)該連接,而連接池卻認(rèn)為該連接還是有效的(因?yàn)椴⑽葱r?yàn)連接的有效性),當(dāng)應(yīng)用申請(qǐng)使用該連接時(shí),就會(huì)導(dǎo)致上面的報(bào)錯(cuò)。

          1.按照錯(cuò)誤的提示,可以在JDBC URL中使用autoReconnect屬性,實(shí)際測(cè)試時(shí)使用了autoReconnect=true& failOverReadOnly=false,不過(guò)并未起作用,使用的是5.1版本,可能真像網(wǎng)上所說(shuō)的只對(duì)4之前的版本有效。

          2.沒(méi)辦法,只能修改MySQL的參數(shù)了,wait_timeout最大為31536000即1年,在my.cnf中加入:

          [mysqld]

          wait_timeout=31536000

          interactive_timeout=31536000

          重啟生效,需要同時(shí)修改這兩個(gè)參數(shù)。


          本文來(lái)自CSDN博客,轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://blog.csdn.net/cau99/archive/2009/12/11/4987760.aspx

          posted @ 2010-09-08 09:29 smallfa 閱讀(2291) | 評(píng)論 (0)編輯 收藏

          hibernate-HQL語(yǔ)句

          hibernate-HQL語(yǔ)句(1)

          http://java.chinaitlab.com/Hibernate/809957.html

          posted @ 2010-08-21 13:43 smallfa 閱讀(198) | 評(píng)論 (0)編輯 收藏

          英語(yǔ)學(xué)習(xí)網(wǎng)址

          視頻:
          http://www.cctv.com/english/index.shtml 或 http://english.cctv.com/index.shtml CCTV International

          http://www.m1905.com/cctv6/ae/ CCTV6 電影頻道-動(dòng)感英語(yǔ)
          http://www.m1905.com/ CCTV6 電影頻道
          http://m1905.116.com.cn/116/cctv6/include/dgyy/list.shtml CCTV6 寬頻官網(wǎng)-動(dòng)感英語(yǔ)
          http://www.aviliv.com/ 或http://www.51practice.com/ 非 官方-動(dòng)感英語(yǔ)
          http://www.cctv.com/movie/index.shtml CCTV- 電影頻道(這個(gè)網(wǎng)頁(yè)里面好像沒(méi)有動(dòng)感英語(yǔ)欄目)

          http://www.cctv.com/english/news/NewsFeatures/ English Channel

          上海英語(yǔ)電視臺(tái)
          http://english.smgbb.cn/smgbb/english/index.shtml

          http://edition.cnn.com/video/ CNN Video
          http://www.cnn.com/ CNN
          http://www.bbc.co.uk/ BBC

          http://www1.englishchina.com/Index.html 英 語(yǔ)中國(guó)網(wǎng)

          http://insuns.com/ 隱山石英 語(yǔ)
          http://english.smgbb.cn/smgbb/english/index.shtml 東方寬頻英語(yǔ)頻道

          音頻:
          http://www.enaudio.cn/ 英 語(yǔ)聽(tīng)力課堂
          http://www.listeningexpress.net/ 聽(tīng) 力特快
          http://www.ensalon.com/Index.html 博 客英語(yǔ)網(wǎng)
          http://www.putclub.com/ 普 特英語(yǔ)聽(tīng)力
          http://www.npr.org/


          http://english.cri.cn/ 
          http://www.cnradio.com/ 
          http://www.globalfm.cn/ 環(huán) 球資訊廣播

          文字:
          http://www.chinadaily.com.cn/language_tips/news_bilingual.html 雙 語(yǔ)新聞
          http://www.chinadaily.com.cn/language_tips/ 中 國(guó)日?qǐng)?bào)-英語(yǔ)點(diǎn)津
          http://language.chinadaily.com.cn/bilingual.shtml 雙語(yǔ) 新聞
          http://www.chinadaily.com.cn/ 中 國(guó)日?qǐng)?bào)

          http://www.nytimes.com/ NewYorkTimes
          http://www.washingtonpost.com/ 華 盛頓郵報(bào)
          http://www.time.com/time/ TIME Magazine

          其他:
          http://zhidao.baidu.com/question/12656946.html 找英文網(wǎng)站 _百度知道
          http://zhidao.baidu.com/question/9356433.html 有 好點(diǎn)學(xué)英語(yǔ)網(wǎng)站么拜托~!_百度知道
          http://www.readfree.net/bbs/read-htm-tid-207767-page-e-fpage-1.html 英 語(yǔ)資源任你挑
          http://qfhjy.eol.cn/showthread.php?t=4356 清 楓華景園業(yè)主論壇
          http://handsomezl.spaces.live.com/PersonalSpace.aspx?_c02_owner=1 來(lái) 一次激情涅磐
          http://www.jingpin.org/url/english/ 精 品英語(yǔ)站點(diǎn)導(dǎo)航

          http://www.imm-diy.net/htm/2006/3-20/17541884036.html 100 有用的澳大利亞生活英語(yǔ)


          VOA http://www.voanews.com/specialenglish/
          http://www.wwenglish.com/en/voa/spec/
          http://www.51ielts.com/list.asp?news_class=1005
          http://www.unsv.com/
          http://www.tingroom.com/video/voaspecial/

          新概念英語(yǔ)第一冊(cè)視頻課程
          http://www.so138.com/sov/e940aedd-bf45-4fce-8160-d578f9a3e15d.html
          http://bbs.topsage.com/dispbbs_73_165464_1.html
          http://insuns.com/english/nce/video/
          http://www.ebigear.com/reslist-224-1.html

          新概念英語(yǔ)第一冊(cè)(MP3版)美音版
          http://www.so138.com/sov/1fded838-256a-4556-990b-d9b459eb2b55.html
          http://www.yingyushu.net.cn/show/417

          新概念英語(yǔ)原文
          http://datum.studyget.com/50/96/994/d_1.shtml
          http://www.tingroom.com/lesson/nce1/

          http://zhidao.baidu.com/question/6562352.html

          大學(xué)六級(jí)英語(yǔ)考試聽(tīng)力真題—在線英語(yǔ)聽(tīng)力室
          http://www.tingroom.com/lesson/cet6/

          21世紀(jì)大學(xué)英語(yǔ)聽(tīng)力庫(kù)
          http://lib.zsc.edu.cn/century21.html
          大學(xué)英語(yǔ) 精讀
          http://202.114.65.51/fzjx/dmtjx/english/dxyyjd.htm
          大學(xué)英語(yǔ)聽(tīng)力MP3下載
          http://www.dk123.com/mfzq/yy/200502/1501.html
          英語(yǔ)語(yǔ)法大全
          http://www.52en.com/whbm/grammar/index.htm

          太傻網(wǎng)[中國(guó)最大的留學(xué)DIY社區(qū)]
          http://www.taisha.org/
          寄托天下  中文留學(xué)門(mén)戶網(wǎng)站  考試,申請(qǐng),簽證
          http://gter.ce.cn/index.php
          Koo學(xué)公會(huì)--酷學(xué)講堂 新東方在線
          http://www.koolearn.com/kooxgh/lecture/index.jsp

          學(xué)網(wǎng)
          http://sh.studyget.com/


          http://bbs.tingroom.com/thread-19047-1-1.html   英語(yǔ)900句整理(mp3格式加文本)
          http://bbs.tingroom.com/forum-13-1.html  職場(chǎng)英語(yǔ)
          http://video.baidu.com/v?ct=301989888&word=%C9%CC%CE%F1%D3%A2%D3%EF%CC%FD%C1%A6&db=0&ty=0&pn=0&fbl=1024  商務(wù)英語(yǔ)
          http://www.yangyangcheng.com/ 秧秧教英語(yǔ)

          posted @ 2010-08-09 23:02 smallfa 閱讀(393) | 評(píng)論 (0)編輯 收藏

          mysql 時(shí)間

          當(dāng)月第一天   select  timestamp(concat(year(curdate()),'-',month(curdate()),'-','1'))      如2010-08-01 00:00:00
          當(dāng)前時(shí)間  select now()

          posted @ 2010-08-04 11:40 smallfa 閱讀(205) | 評(píng)論 (0)編輯 收藏

          在 Eclipse中使用JUnit實(shí)例

          測(cè)試對(duì)于保證軟件開(kāi)發(fā)質(zhì)量有著非常重要的作用,單元測(cè)試更是必不可少,JUnit是一個(gè)非常強(qiáng) 大的單元測(cè)試包,可以對(duì)一個(gè)/多個(gè)類的單個(gè)/多個(gè)方法測(cè)試,還可以將不同的TestCase組合成TestSuit,使測(cè)試 任務(wù)自動(dòng)化。Eclipse同樣集成了JUnit,可以非常方便地編寫(xiě)TestCase

            我們創(chuàng) 建一個(gè)Java工程,添加一個(gè)example.Hello類,首先我們給Hello類添加一個(gè)abs()方法,作用是返 回絕對(duì)值:

          Image
          (圖一)
            下一 步,我們準(zhǔn)備對(duì)這個(gè)方法進(jìn)行測(cè)試,確保功能正常。選中Hello.java,右 鍵點(diǎn)擊,選擇New->JUnit Test Case
          Image

          (圖二)
             Eclipse會(huì)詢問(wèn)是否添加junit.jar包,確定后新建一個(gè)HelloTest類,用來(lái)測(cè)試Hello類。
          Image

          (圖三)
            選中setUp()tearDown(),然后點(diǎn)擊“Next”
          Image

          (圖 四)  
            選擇要 測(cè)試的方法,我們選中abs(int)方法,完成后在HelloTest.java中輸入:
          Image


          (圖五)

             JUnit會(huì)以以下順序執(zhí)行測(cè)試:(大致的代碼

          try {
          HelloTest test = new HelloTest(); //
          建立測(cè)試類實(shí)例
          test.setUp(); //
          初始化測(cè)試環(huán)境
          test.
          testAbs(); // 測(cè)試某個(gè)方法
          test.tearDown(); //
          清理資源
          }
          catch…


            setUp()是建立測(cè)試環(huán)境,這里創(chuàng)建一個(gè)Hello類的實(shí)例;tearDown()用于清理資源,如釋放打開(kāi)的文件等等。以test開(kāi)頭的方法被認(rèn)為是測(cè)試方法,JUnit會(huì)依次執(zhí)行testXxx()方法。在testAbs()方法中,我們對(duì)abs()的測(cè)試分別選擇 正數(shù),負(fù)數(shù)和0,如果方法返回值與期待結(jié)果相同,則assertEquals不會(huì)產(chǎn)生異常。

            如果有 多個(gè)testXxx方法,JUnit會(huì)創(chuàng)建多個(gè)XxxTest實(shí)例,每次 運(yùn)行一個(gè)testXxx方法,setUp()tearDown()會(huì)在testXxx前后被調(diào)用,因此,不要在一個(gè)testA()中依賴testB()

            直接運(yùn) 行Run->Run As->JUnit Test,就可 以看到JUnit測(cè)試結(jié)果:
          Image

          (圖六)
            綠色表 示測(cè)試通過(guò),只要有1個(gè)測(cè)試未通過(guò),就會(huì)顯示紅色并列出未通過(guò)測(cè)試的方法。可以試圖改變abs()的代碼,故意返回錯(cuò)誤的結(jié)果(比如return n+1;),然后再運(yùn)行JUnit就會(huì)報(bào)告錯(cuò)誤。

            如果沒(méi) 有JUnit面板,選擇Window->Show View->Other,打開(kāi)JUnitView
          Image

          (圖七)
            JUnit通過(guò)單元測(cè)試,能在開(kāi)發(fā)階段就找出許多Bug,并且,多個(gè)Test Case可以組合成Test Suite,讓 整個(gè)測(cè)試自動(dòng)完成,尤其適合于XP方法。每增加一個(gè)小的新功能或者對(duì)代碼進(jìn)行了小的修改,就立刻運(yùn)行一 遍Test Suite,確保新增和修改的代碼不會(huì)破壞原有的功能,大大增強(qiáng)軟件的可維護(hù) 性,避免代碼逐漸腐爛

                                                                                                                                                                                                                                                                  

          初次學(xué)會(huì)使用Junit的使用是通過(guò)這篇文章的(上文),自己嘗試跟著做了一遍,結(jié)果發(fā)現(xiàn)它上面提供的代碼例子是錯(cuò)誤 的,不過(guò)流程、圖片都很清楚。所以你可以先看看它上面是怎么說(shuō)的,至于測(cè)試的代碼我稍做了改動(dòng),為的是只要說(shuō)明問(wèn)題就行——其實(shí)不難。
          被測(cè)試的類代碼:
          public class HelloJunit {
              public static int abs(int n){
                  return n>=0?n:(-n);
              }
          }
          Junit
          的測(cè)試代碼:
          import junit.framework.TestCase;
          public class HelloJunitTest extends TestCase {
              public void testAbs() {
                assertEquals(HelloJunit.abs(10),10); 
                assertEquals(HelloJunit.abs(-10),10);
              }
          }
          主要代碼 行為assertEquals(HelloJunit.abs(10),10); 
          其中參數(shù) 的意義為:
          HelloJunit.abs(10)執(zhí)行類HelloJunitabs方法(參數(shù)為10,表示求10的絕對(duì)值)。
          逗號(hào)后面 的10表示為預(yù)期的結(jié)果(期望值)。
          該行表示 將期望值(10)與實(shí)際值(類HelloJunitabs方法執(zhí)行結(jié)果)進(jìn)行比較,如果不相 等則拋出異常。
          這里只是 一個(gè)簡(jiǎn)簡(jiǎn)單單的例子,Junit被大家稱為優(yōu)秀的白盒自動(dòng)化測(cè)試框架,當(dāng)然只有自己用過(guò)了才會(huì)了解。網(wǎng)上有許多的資料介紹這個(gè)框架,筆 者也是從自身情況出發(fā)來(lái)學(xué)習(xí)它的。當(dāng)然學(xué)習(xí)使用它是需要有一定基礎(chǔ)的,筆者擁有CC++的基礎(chǔ),對(duì)Java的學(xué)習(xí)也開(kāi)始不久,所以在這里將力 所能及的知識(shí)共享出來(lái)與大家分享,希望能夠共同提高。另外筆者是專職的測(cè)試人員,所以在描述一些問(wèn)題時(shí)大多都會(huì)以測(cè)試的角度來(lái)闡述。學(xué)習(xí)此框架的目的在于 能夠在工作中進(jìn)行白盒測(cè)試,在以后的介紹中還會(huì)介紹白盒測(cè)試相關(guān)的理論和工具,希望大家能夠一起提高進(jìn)步。

          posted @ 2010-07-20 09:40 smallfa 閱讀(1125) | 評(píng)論 (0)編輯 收藏

          mysql 設(shè)置默認(rèn)的時(shí)間值

                 由于MySQL目前字段的默認(rèn)值不支持函數(shù)的形式設(shè)置默認(rèn)值是不可能的。
                 代替的方案是使用TIMESTAMP類型代替DATETIME類型。
                 CURRENT_TIMESTAMP :當(dāng)我更新這條記錄的時(shí)候,這條記錄的這個(gè)字段不會(huì)改變。
                 CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP :當(dāng)我更新這條記錄的時(shí)候,這條記錄的這個(gè)字段將會(huì)改變。即時(shí)間變?yōu)榱烁聲r(shí)候的時(shí)間。(注意一個(gè)UPDATE設(shè)置一個(gè)列為它已經(jīng)有的值,這將不引起 TIMESTAMP列被更新,因?yàn)槿绻阍O(shè)置一個(gè)列為它當(dāng)前的值,MySQL為了效率而忽略更改。)如果有多個(gè)TIMESTAMP列,只有第一個(gè)自動(dòng)更 新。 
                TIMESTAMP列類型自動(dòng)地用當(dāng)前的日期和時(shí)間標(biāo)記INSERT或UPDATE的操作。 
                如果有多個(gè) TIMESTAMP列,只有第一個(gè)自動(dòng)更新。 
                自動(dòng)更新第一個(gè)TIMESTAMP列在下列任何條件下發(fā)生: 
                列 值沒(méi)有明確地在一個(gè)INSERT或LOAD DATA INFILE語(yǔ)句中指定。 
                列值沒(méi)有明確地在一個(gè)UPDATE語(yǔ)句中指定且另 外一些的列改變值。(注意一個(gè)UPDATE設(shè)置一個(gè)列為它已經(jīng)有的值,這將不引起TIMESTAMP列被更新,因?yàn)槿绻阍O(shè)置一個(gè)列為它當(dāng)前的 值,MySQL為了效率而忽略更改。) 
                你明確地設(shè)定TIMESTAMP列為NULL. 
                除第一個(gè)以外的 TIMESTAMP列也可以設(shè)置到當(dāng)前的日期和時(shí)間,只要將列設(shè)為NULL,或NOW()。 
                另外在5.0以上版本中也可以使用 trigger來(lái)實(shí)現(xiàn)此功能。

                create table test_time ( 
                id int(11), 
                create_time datetime 
                ); 
                delimiter | 
                      create trigger default_datetime before insert on test_time 
                for each row 
                      if new.create_time is null then 
                      set new.create_time = now(); 
                end if;| 
                delimiter ;

          posted @ 2010-07-13 10:08 smallfa 閱讀(116) | 評(píng)論 (0)編輯 收藏

          Eclipse快捷鍵

          生成 注釋

          應(yīng)該是選取要注釋內(nèi)容后, ctrl+shift+c 按一下注釋,按兩下取消注釋

          ctrl+shift+"反注釋!能講ctrl+shift+/ 多行注釋掉的內(nèi)容反注釋掉































































          CTRL+T  查看接口的實(shí)現(xiàn)































































          MyEclipse調(diào)試

          1.首先在一個(gè)java文件中設(shè)斷點(diǎn),然后運(yùn)行debug,當(dāng)程序走到斷點(diǎn)處就會(huì)停下。
          2.F5鍵與F6鍵均為單步調(diào)試,

            F5是step into,也就是進(jìn)入本行代碼中執(zhí)行(進(jìn)入函數(shù)執(zhí)行),

            F6是step over,也就是執(zhí)行本行代碼,跳到下一行執(zhí)行(不進(jìn)入函數(shù)),
          3.F7是跳出函數(shù) step return
          4.F8是執(zhí)行到最后。

          =====================================

          1.Step Into (F5) 跳入
          2.Step Over (F6) 跳過(guò)
          3.Step Return (F7) 執(zhí)行完當(dāng)前method,然后return跳出此method
          4.step Filter 逐步過(guò)濾 一直執(zhí)行直到遇到未經(jīng)過(guò)濾的位置或斷點(diǎn)(設(shè)置Filter:window-preferences-java-Debug-step Filtering)
          5.resume 重新開(kāi)始執(zhí)行debug,一直運(yùn)行直到遇到breakpoint
          6.hit count 設(shè)置執(zhí)行次數(shù) 適合程序中的for循環(huán)(設(shè)置 breakpoint view-右鍵hit count)
          7.inspect 檢查 運(yùn)算。執(zhí)行一個(gè)表達(dá)式顯示執(zhí)行值
          8.watch 實(shí)時(shí)地監(jiān)視變量的變化
          9.我們常說(shuō)的斷點(diǎn)(breakpoints)是指line breakpoints,除了line breakpoints,還有其他的斷點(diǎn)類型:field(watchpoint)breakpoint,method breakpoint,exception breakpoint.
          10.field breakpoint 也叫watchpoint(監(jiān)視點(diǎn)) 當(dāng)成員變量被讀取或修改時(shí)暫掛
          11.添加method breakpoint 進(jìn)入/離開(kāi)此方法時(shí)暫掛(Run-method breakpoint)
          12.添加Exception breakpoint 捕抓到Execption時(shí)暫掛(待續(xù)...)
          斷點(diǎn)屬性:
          1.hit count 執(zhí)行多少次數(shù)后暫掛 用于循環(huán)
          2.enable condition 遇到符合你輸入條件(為ture\改變時(shí))就暫掛
          3.suspend thread 多線程時(shí)暫掛此線程
          4.suspend VM 暫掛虛擬機(jī)
          13.variables 視圖里的變量可以改變變量值,在variables 視圖選擇變量點(diǎn)擊右鍵--change value.一次來(lái)進(jìn)行快速調(diào)試。
          14.debug 過(guò)程中修改了某些code后--〉save&build-->resume-->重新暫掛于斷點(diǎn)


          ===========================
          例如你有如下程序:
          public class debugtest {

          來(lái)源:(http://blog.sina.com.cn/s/blog_624aa0960100fkrr.html) - MyEclipse調(diào)試_匆匆過(guò)客_新浪博客


           public String addDays() {
            System.out.println("1");// =============》(3)
            String result = ""; //=============》(4)
            System.out.println("2");// =============》(5)
            return result;
            }


           public static void main(String args[]) {

            debugtest aa = new debugtest();
            int ii=9;
            aa.addDays();// =============》(1)
            System.out.println("eeeeeeeeeeeeeee");//=============》(2)
            }  
          }

           

          你在(1)處加斷點(diǎn),運(yùn)行到此處時(shí)如果Step Into (F5)為跳入(進(jìn)入函數(shù)),則接著執(zhí)行到(3)。

          再執(zhí)行Step Over (F6)執(zhí)行本行,則執(zhí)行到(4)。

          最后執(zhí)行Step Return (also F7),則跳出addDays方法,跳到(2)

          轉(zhuǎn)http://blog.sina.com.cn/s/blog_624aa0960100fkrr.html

          MyEclipse 中顯示行號(hào)  要想顯示行號(hào),按住 Ctrl + F10 選擇 show Line Numbers




          eclipse/myeclipse注釋模板的修改   alt+shitf+j

          Window --> Java --> Code Style --> Code Templates --> Comments --> types --> Edit

          /**  
          *   
          * 項(xiàng)目名稱:${project_name}  
          * 類名稱:${type_name}  
          * 類描述:  
          * 創(chuàng)建人:${user}  
          * 創(chuàng)建時(shí)間:${date} ${time}  
          * 修改人:${user}  
          * 修改時(shí)間:${date} ${time}  
          * 修改備注:  
          * @version   
          *   
          */

          http://www.javaeye.com/topic/585168   
          myeclipse中如何配置自定義的代碼排版格式    ctrl+shift+f 


          posted @ 2010-05-16 22:41 smallfa 閱讀(475) | 評(píng)論 (0)編輯 收藏

          Struts2.1.6+Spring2.5.6+Hibernate3.3.1 全注解實(shí)例詳解

          http://www.aygfsteel.com/bolo/
          http://www.aygfsteel.com/bolo/archive/2010/04/11/318004.html

          posted @ 2010-05-13 00:10 smallfa 閱讀(234) | 評(píng)論 (0)編輯 收藏

          struts 2.0 數(shù)據(jù)校驗(yàn)的另一種方式

          com.test.action.user包下:
                 SaveUserAction.java
                SaveUserAction-validation.xml

          SaveUserAction.java文件的內(nèi)容:

          package com.test.action.user;

          import java.util.Iterator;
          import java.util.Map;
          import java.util.Set;

          import com.opensymphony.xwork2.ActionSupport;
          import com.test.bean.User;
          import com.test.service.UserService;

          public class SaveUserAction extends ActionSupport
          {
          private User user;
          private UserService service;

          public User getUser()
          {
             return user;
          }

          public void setUser(User user)
          {
             this.user = user;
          }

          public UserService getService()
          {
             return service;
          }

          public void setService(UserService service)
          {
             this.service = service;
          }

          @Override
          public String execute() throws Exception
          {
             this.service.save(this.user);

             return SUCCESS;
          }

          @Override
          @SuppressWarnings("unchecked")
          public void validate()
          {
             Map map = this.getFieldErrors();
             Set set = map.keySet();

             for (Iterator iter = set.iterator(); iter.hasNext();)
             {
              System.out.println(map.get(iter.next()));
             }
          }
          }

          SaveUserAction-validation.xml的文件內(nèi)容:
            

          <?xml version="1.0" encoding="UTF-8"?>
          <!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN"    " <validators>
          <field name="user">
             <field-validator type="visitor">
              <param name="context">user</param>
              <param name="appendPrefix">true</param>
              <message>user's </message>
             </field-validator>
          </field>
          </validators>    

          com.test.bean包下的文件:
                 User.java;
                 User-user-validation.xml

          User-user-validation.xml文件的內(nèi)容:

          <?xml version="1.0" encoding="UTF-8"?>
          <!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN" "

          <validators>
          <field name="firstname">
             <field-validator type="requiredstring">
              <message>required first name</message>
             </field-validator>
          </field>

          <field name="lastname">
             <field-validator type="requiredstring">
              <message>required last name</message>
             </field-validator>
          </field>

          <field name="age">
             <field-validator type="required">
              <message>required age</message>
             </field-validator>
             <field-validator type="int">
              <param name="min">1</param>
              <param name="max">150</param>
              <message>age should be between ${min} and ${max}</message>
             </field-validator>
          </field>

          </validators>

          還有一個(gè)問(wèn)題,就是校驗(yàn)信息會(huì)重復(fù),在錯(cuò)誤的情況下。由以下代碼可以測(cè)試:

          @Override
          @SuppressWarnings("unchecked")
          public void validate()
          {
             Map map = this.getFieldErrors();
             Set set = map.keySet();

             for (Iterator iter = set.iterator(); iter.hasNext();)
             {
              System.out.println(map.get(iter.next()));
             }
          }
          }

          解決方法:
                applicationContext.xml 文件中的配置action中加入:Struts 2.0 的action 是有狀態(tài)的 在spring 配置的action 中加上 scope="prototype";

          配置如下:<bean id="saveUserAction" class="com.test.action.user.SaveUserAction" scope="prototype">
          <property name="service" ref="userService"></property>
          </bean>

          posted @ 2010-05-12 23:12 smallfa 閱讀(178) | 評(píng)論 (0)編輯 收藏

          ssh2整合 http://77857.blog.51cto.com/

          關(guān)鍵字: struts2,spring2,hibernate3,整合 今天在寢室窩了一天,由于前天老師給了個(gè)ss2+toplink的項(xiàng)目源碼,要我去消化。直接看那 三個(gè)整合具吃力,于是先從ssh2入手吧!
          所使用的工具和環(huán)境。
          jdk6+myeclipse6.5+tomcat6+mysql5+spring2.0+hibernate3+struts2

          好了,開(kāi)始我們的第一個(gè)ssh2之旅吧。

          首先先分析一下我們的第一個(gè)ssh2項(xiàng)目的需求,簡(jiǎn)單的說(shuō)就是有一張表單, 讓你填寫(xiě)用戶名和密碼,提交后存入數(shù)據(jù)庫(kù)。就這么簡(jiǎn)單,呵呵。

          第一步:。我 們首先新建一張mysql數(shù)據(jù)表
          sql如下
          CREATE TABLE mytest.users (
             id INT NOT NULL,
             username VARCHAR(50),
             password VARCHAR(50),
            PRIMARY KEY (id)
          數(shù)據(jù)表創(chuàng)建好后結(jié)構(gòu)如下:

          當(dāng)然我已經(jīng)有幾天數(shù)據(jù)添加進(jìn)去了



          第二步
          打開(kāi)myeclipse,新建一個(gè)web項(xiàng)目, 命名為ssh2-2, java ee規(guī)范我們選擇5,如圖




          第三步 務(wù)必小心的一步
          導(dǎo) 入ssh2的各個(gè)jar,步驟如下:
          選中當(dāng)前的項(xiàng)目后,點(diǎn)擊菜單爛的myeclipse---project capablities----add hibernate項(xiàng),跳出如圖


          務(wù)必按照?qǐng)D示選擇,尤其是copy checkde……一項(xiàng),然后點(diǎn)擊next,默認(rèn)next,去掉specify database……復(fù)選框,next,去掉create session……復(fù)選框,finish。

          再次選中選中當(dāng)前的項(xiàng)目后,點(diǎn)擊 菜單爛的myeclipse---project capablities----add spring項(xiàng),跳出如圖



          依然務(wù)必按照如是選擇,jar文件選擇如下5個(gè):




          點(diǎn)擊next,
          之后按下選擇,務(wù)必,


          next后finsh即可。
          然后導(dǎo)入struts2的jar
          如下5個(gè)放到lib下

          然后放入我們的數(shù)據(jù)庫(kù)驅(qū)動(dòng)jar mysql-connector-java-5.0.8-bin.jar 沒(méi)得話附件中有

          至 此,包都導(dǎo)入完畢
          http://77857.blog.51cto.com/67857/149631

          posted @ 2010-05-08 01:10 smallfa 閱讀(462) | 評(píng)論 (0)編輯 收藏

          Exception starting filter struts2

          去網(wǎng)上找了一些相關(guān)錯(cuò)誤的信息看了下說(shuō)Hibernate core下面的xerces.jar包的問(wèn)題。刪除后正確了。

          如果刪除后還是錯(cuò)誤,看一下項(xiàng)目的lib文件夾下面的是否還有xerces相關(guān)jar包,也刪掉。

          記住把tomcat 里面xerces.jar也要?jiǎng)h掉

          posted @ 2010-05-05 00:36 smallfa 閱讀(200) | 評(píng)論 (0)編輯 收藏

          struts2配置參考

          1:login.JSP
            <form action="login.action"  method="post">
             username:<input type="text" name="username"> <br/>
             password:<input type="text" name="password"> <br/>
             <input type="submit" name="submit"/>
             </form>

          <s:form action="login">
              <s:textfield name="username" label="username"></s:textfield>
              <s:password name="password" label="password"> </s:password>
              <s:submit name="submit"></s:submit>
              </s:form>

          2:action
          package com.test.action;
          public class LoginAction {
              private String username;
              private String password;
              public String getUsername() {
                  return username;
              }
              public void setUsername(String username) {
                  this.username = username;
              }
              public String getPassword() {
                  return password;
              }
              public void setPassword(String password) {
                  this.password = password;
              }
              public String execute() throws Exception {
                  return "success";
              }
          }



          package com.test.action;
          import com.opensymphony.xwork2.ActionSupport;

          public class LoginAction extends ActionSupport {
              private String username;
              private String password;
              public String getUsername() {
                  return username;
              }
              public void setUsername(String username) {
                  this.username = username;
              }
              public String getPassword() {
                  return password;
              }
              public void setPassword(String password) {
                  this.password = password;
              }
              public String execute() throws Exception {
                  if("smallfa".equals(this.getUsername().trim())&&"smallfa".equals(this.getPassword().trim()))
                  {
                      return "success";
                  }
                  else
                  {
                      this.addFieldError(username, "username or password errors");
                      return "failer";
                  }
              }
              @Override
              public void validate() {
                  if(null==this.getUsername()||"".equals(this.getUsername().trim()))
                  {
                      this.addFieldError(username, "username required");
                  }
                  if(null==this.getPassword()||"".equals(this.getPassword().trim()))
                  {
                      this.addFieldError(username, "username required");
                  }
              }
          }

          3:struts-xml
          <?xml version="1.0" encoding="UTF-8" ?>
          <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
          <struts>
           <package name="struts2" namespace="/" extends="struts-default">
                  <action name="login" class="com.test.action.LoginAction">
                      <result name="success">/result.jsp</result>
                  </action>
              </package>
          </struts>
             
          4:web.xml
          <?xml version="1.0" encoding="UTF-8"?>
          <web-app version="2.5"
              xmlns="http://java.sun.com/xml/ns/javaee"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
              http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
                <filter>
                  <!-- 定義核心Filter的名字 -->
                  <filter-name>struts2</filter-name>
                  <!-- 定義核心Filter的實(shí)現(xiàn)類 -->
                  <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
              </filter>
              <filter-mapping>
                  <filter-name>struts2</filter-name>
                  <url-pattern>/*</url-pattern>
              </filter-mapping>    
            </web-app>

          5:result.jsp
            username:${requestScope.username}<br/>
            password:${requestScope.password}<br/>


          6:參考視頻

          視頻: Struts2入門(mén)與配置  浪曦 J2EE Struts 2應(yīng)用開(kāi)發(fā)詳解系列視頻

          http://v.youku.com/v_show/id_XNTY4MDUwMzY=.html

          posted @ 2010-03-30 01:22 smallfa 閱讀(374) | 評(píng)論 (0)編輯 收藏

          晚上的球感

               離上次打球隔有一段時(shí)間了,終于有一個(gè)晚上等到好朋友早點(diǎn)下班,到了場(chǎng)地因天氣冷,既是場(chǎng)地有照明燈,過(guò)來(lái)的人比昔日還顯得稀少,直到打到后面基本也就我們兩隊(duì)在玩,今天打的還是挺過(guò)隱的,外投好多個(gè)球,其中最自感有一個(gè)是假動(dòng)作,突跨步一接三步路擦板進(jìn),確實(shí)好久沒(méi)進(jìn)這樣的球,只不過(guò)有點(diǎn)遺憾的我們隊(duì)竟有一個(gè)超極品的兄臺(tái),傳球失誤、防過(guò)老漏人、亂面、無(wú)語(yǔ)。讓我想了前個(gè)晚上比賽那位仁兄。

          posted @ 2008-11-20 23:01 smallfa 閱讀(125) | 評(píng)論 (0)編輯 收藏

          oracle 視頻教程及客戶端

          關(guān)于數(shù)據(jù)庫(kù)的學(xué)習(xí),個(gè)人意見(jiàn),僅供參考,本人也在學(xué)習(xí)中。
          首先需要了解下 數(shù)據(jù)模型 關(guān)系數(shù)據(jù)庫(kù) DBMS 范式 自然運(yùn)算 等等概念性的東西,可以去書(shū)店或者圖書(shū)館查閱相關(guān)書(shū)籍,可以了解下,沒(méi)必要完全掌握,當(dāng)然你要能掌握的話,那么對(duì)你的以后是非常有幫助的。

          其實(shí)然后就是SQL標(biāo)準(zhǔn) 對(duì)象關(guān)系SQL 基本的SQL查詢,以及最基本的SELECT/UPDATE/INSERT/DELETE語(yǔ)法,各種不同的數(shù)據(jù)庫(kù)大同小異的。

          然后就是不同的數(shù)據(jù)庫(kù),不同的用法,你也可以專學(xué)一門(mén),比如ORACLE
          或者M(jìn)SSQL MYSQL INFORMIX DB2主要這幾種~

          這些入門(mén)了就可以學(xué)習(xí)嵌入數(shù)據(jù)庫(kù)了,訪問(wèn)數(shù)據(jù)庫(kù)的程序
          以及數(shù)據(jù)庫(kù)的性能優(yōu)化,完整性,視圖,安全 目錄 備份 還原等等


          當(dāng)然主要學(xué)習(xí)ORACLE的話你也可以先直接挑本ORACLE入門(mén)看,類似ORACLE10G入門(mén),ORACLE基礎(chǔ)的書(shū),不求完全懂,能看一點(diǎn)是一點(diǎn),學(xué)習(xí)ORACLE是一個(gè)長(zhǎng)期的過(guò)程,你在懂了一些后,再去看別的書(shū),你會(huì)找到很多相同點(diǎn),那時(shí)候就會(huì)有恍然大悟的感覺(jué),一點(diǎn)點(diǎn)看就OK了~
          到了一定的程度,你就知道自己怎么去學(xué)習(xí),需要掌握些什么,像什么方向發(fā)展了。
          另外在學(xué)習(xí)的過(guò)程中推薦有疑問(wèn)的就自己做實(shí)驗(yàn)操作,或者去各大論壇像CSDN,CNOUG,ITPUB,CNBLOGS查找答案或者提問(wèn),也可以下載里面的基礎(chǔ)區(qū)的教程了,不過(guò)大多是達(dá)人們整理出來(lái)的文檔,也很不錯(cuò)的,尤其前面兩個(gè)論壇你能學(xué)到很多東西的,不過(guò)還是推薦你先完整的看一本入門(mén)的后再說(shuō),不管理解了幾成,有什么問(wèn)題記下來(lái),以后慢慢一點(diǎn)點(diǎn)解決。

          ORACLE視頻教程的話有個(gè)中科院的什么絕版培訓(xùn)教程oracle 10g的04年的視頻,非常不錯(cuò),迅雷上搜索中科院oracle 10g培訓(xùn)教程就能搜索到。

          數(shù)據(jù)庫(kù)開(kāi)發(fā)工具的話 有TOAD(客戶端連接工具),POWERDESIGN(數(shù)據(jù)庫(kù)設(shè)計(jì)建模工具,), PL/SQL DESIGNER(PL/SQL開(kāi)發(fā)工具),一般這3個(gè)就夠用了,可以自己去迅雷搜索下載最新版本,另外的話還有一個(gè)叫DBATRIN,E/R 什么的工具,很多的,其實(shí)裝了ORACLE客戶端工具后,自帶的JAVA控制臺(tái)也很好用的。

          當(dāng)然你想一蹴而就的話,可以直接去網(wǎng)上找相關(guān)的ORACLE入門(mén)資料,那些都是些整理出來(lái)的條條,不過(guò)不推薦,最好多看書(shū),多做實(shí)驗(yàn)。

          posted @ 2008-11-20 13:54 smallfa 閱讀(457) | 評(píng)論 (0)編輯 收藏

          hibernate中對(duì)象的3種狀態(tài)----瞬時(shí)態(tài)、持久態(tài)、脫管態(tài)

          Hibernate的對(duì)象有3種狀態(tài),分別為:瞬時(shí)態(tài)(Transient)、 持久態(tài)(Persistent)、脫管態(tài)(Detached)。處于持久態(tài)的對(duì)象也稱為PO(Persistence Object),瞬時(shí)對(duì)象和脫管對(duì)象也稱為VO(Value Object)。
          •         瞬時(shí)態(tài)

                  由new命令開(kāi)辟內(nèi)存空間的java對(duì)象,

                 eg. Person person = new Person("amigo", "女");

                  如果沒(méi)有變量對(duì)該對(duì)象進(jìn)行引用,它將被java虛擬機(jī)回收。

                  瞬時(shí)對(duì)象在內(nèi)存孤立存在,它是攜帶信息的載體,不和數(shù)據(jù)庫(kù)的數(shù)據(jù)有任何關(guān)聯(lián)關(guān)系,在Hibernate中,可通過(guò)session的save()或saveOrUpdate()方法將瞬時(shí)對(duì)象與數(shù)據(jù)庫(kù)相關(guān)聯(lián),并將數(shù)據(jù)對(duì)應(yīng)的插入數(shù)據(jù)庫(kù)中,此時(shí)該瞬時(shí)對(duì)象轉(zhuǎn)變成持久化對(duì)象。

          •        持久態(tài)

                  處于該狀態(tài)的對(duì)象在數(shù)據(jù)庫(kù)中具有對(duì)應(yīng)的記錄,并擁有一個(gè)持久化標(biāo)識(shí)。如果是用hibernate的delete()方法,對(duì)應(yīng)的持久對(duì)象就變成瞬時(shí)對(duì)象,因數(shù)據(jù)庫(kù)中的對(duì)應(yīng)數(shù)據(jù)已被刪除,該對(duì)象不再與數(shù)據(jù)庫(kù)的記錄關(guān)聯(lián)。

                 當(dāng)一個(gè)session執(zhí)行close()或clear()、evict()之后,持久對(duì)象變成脫管對(duì)象,此時(shí)持久對(duì)象會(huì)變成脫管對(duì)象,此時(shí)該對(duì)象雖然具有數(shù)據(jù)庫(kù)識(shí)別值,但它已不在HIbernate持久層的管理之下。

                 持久對(duì)象具有如下特點(diǎn):

                 1. 和session實(shí)例關(guān)聯(lián);

                 2. 在數(shù)據(jù)庫(kù)中有與之關(guān)聯(lián)的記錄。

          •  脫管態(tài)

                  當(dāng)與某持久對(duì)象關(guān)聯(lián)的session被關(guān)閉后,該持久對(duì)象轉(zhuǎn)變?yōu)槊摴軐?duì)象。當(dāng)脫管對(duì)象被重新關(guān)聯(lián)到session上時(shí),并再次轉(zhuǎn)變成持久對(duì)象。

                 脫管對(duì)象擁有數(shù)據(jù)庫(kù)的識(shí)別值,可通過(guò)update()、saveOrUpdate()等方法,轉(zhuǎn)變成持久對(duì)象。

                 脫管對(duì)象具有如下特點(diǎn):

                 1.  本質(zhì)上與瞬時(shí)對(duì)象相同,在沒(méi)有任何變量引用它時(shí),JVM會(huì)在適當(dāng)?shù)臅r(shí)候?qū)⑺厥眨?/p>

                 2.  比瞬時(shí)對(duì)象多了一個(gè)數(shù)據(jù)庫(kù)記錄標(biāo)識(shí)值。

          posted @ 2008-11-15 22:22 smallfa 閱讀(289) | 評(píng)論 (0)編輯 收藏

          Hibernate的核心接口學(xué)習(xí)

          本文摘自孫衛(wèi)琴的《精通Hibernate:Java對(duì)象持久化技術(shù)詳情》
                Hibernate有如下5個(gè)核心接口:
          • Configuration接口:該對(duì)象用于配置并且根啟動(dòng)Hibernate。Hibernate應(yīng)用通過(guò)Configuration實(shí)例來(lái)指定對(duì)象-關(guān)系映射文件的位置或動(dòng)態(tài)配置Hibernate的屬性,然后創(chuàng)建SessionFactory實(shí)例。
          • SessionFactory接口:一個(gè)SessionFactory實(shí)例對(duì)應(yīng)一個(gè)數(shù)據(jù)存儲(chǔ)源,應(yīng)用從SessionFactory中獲得Session實(shí)例。它具有如下特點(diǎn):

                        1)它是線程安全的,這意味著它的同一個(gè)實(shí)例可以被應(yīng)用的各個(gè)線程共享。

                        2)它是重量級(jí)的,這意味著不能隨意創(chuàng)建或銷毀它的實(shí)例。如果應(yīng)用只訪問(wèn)一個(gè)數(shù)據(jù)庫(kù),只需創(chuàng)建一個(gè)SessionFactory實(shí)例,在應(yīng)用初始化的時(shí)候創(chuàng)建該實(shí)例。如果應(yīng)用同時(shí)訪問(wèn)多個(gè)數(shù)據(jù)庫(kù),則需要為每個(gè)數(shù)據(jù)庫(kù)創(chuàng)建一個(gè)單獨(dú)的SessionFactory實(shí)例。

                        之所以說(shuō)SessionFactory是重量級(jí)的,是因?yàn)樗枰粋€(gè)很大的緩存,用來(lái)存放預(yù)定義的SQL語(yǔ)句以及映射元數(shù)據(jù)等。用戶還可以為SessionFactory配置一個(gè)緩存插件,這個(gè)緩存插件被稱為Hibernate的第二級(jí)緩存,該緩存用來(lái)存放被工作單元讀過(guò)的數(shù)據(jù),將來(lái)其它工作單元可能會(huì)重用這些數(shù)據(jù),因此這個(gè)緩存中的數(shù)據(jù)能夠被所有工作單元共享,一個(gè)工作單元通常對(duì)應(yīng)一個(gè)數(shù)據(jù)庫(kù)事務(wù)。

          • Session接口:該接口是Hibernate應(yīng)用使用最廣泛的接口。Session也被稱為持久化管理器,提供了和持久化相關(guān)的操作,如添加、更新、刪除、加載和查詢對(duì)象。Session具有一下特點(diǎn):

                       1)不是線程安全的,因此在設(shè)計(jì)軟件架構(gòu)時(shí),應(yīng)該避免多個(gè)線程共享同一個(gè)Session實(shí)例;

                       2)Session實(shí)例是輕量級(jí)的,所謂輕量級(jí),是指它的創(chuàng)建和銷毀不需要消耗太多的資源。這意味著在程序中可以經(jīng)常創(chuàng)建和銷毀Session對(duì)象,例如為每個(gè)客戶請(qǐng)求分配單獨(dú)的Session實(shí)例,或者為每個(gè)工作單元分配單獨(dú)的Session實(shí)例。

                       Session有一個(gè)緩存,被稱為Hibernate的第一級(jí)緩存,它存放被當(dāng)前工作單元加載的對(duì)象。每個(gè)Session實(shí)例都有自己的緩存,這個(gè)Session實(shí)例的緩存,這個(gè)Session實(shí)例的緩存只能被當(dāng)前工作單元訪問(wèn)。

          •  Transaction:該接口是Hibernate的數(shù)據(jù)庫(kù)事務(wù)接口,它對(duì)底層的事務(wù)接口做了封裝,底層事務(wù)接口包括:JDBC API、JTA(Java Transaction API)、CORBA(Common Object Requet Broker Architecture) API.

                       Hibernate應(yīng)用可通過(guò)一致的Transaction接口來(lái)聲明事務(wù)邊界,這有助于應(yīng)用在不同環(huán)境或容器中移植。

          •  Query和Criteria接口:它們是Hibernate的查詢接口,用于向數(shù)據(jù)庫(kù)查詢對(duì)象,以及控制執(zhí)行查詢的過(guò)程。Query實(shí)例封裝了一個(gè)HQL(Hibernate Query Language)查詢語(yǔ)句,HQL是面向?qū)ο蟮模妙惷邦惖膶傩悦皇潜砻氨淼淖侄蚊riteria接口完全封裝了基于字符串形式的查詢語(yǔ)句,比Query接口更加面向?qū)ο螅珻riteria接口更擅長(zhǎng)于執(zhí)行動(dòng)態(tài)查詢。

          posted @ 2008-11-15 22:14 smallfa 閱讀(358) | 評(píng)論 (0)編輯 收藏

          hibernat配置文件中set元素中各屬性的定義

          <set  
                    name="propertyName"                                                                                   (1)  
                    table="table_name"                                                                                     (2)  
                    schema="schema_name"                                                                                 (3)  
                    lazy="true|false"                                                                                       (4)  
                    inverse="true|false"                                                                                 (5)  
                    cascade="all|none|save-update|delete|all-delete-orphan"           (6)  
                    sort="unsorted|natural|comparatorClass"                                           (7)  
                    order-by="column_name   asc|desc"                                                           (8)  
                    where="arbitrary   sql   where   condition"                                               (9)  
                    outer-join="true|false|auto"                                                                 (10)  
                    batch-size="N"                                                                                             (11)  
                    access="field|property|ClassName"                                                       (12)  
            >  
             
                    <key   ....   />  
                    <index   ....   />  
                    <element   ....   />  
            </set>   
            (1)   name   集合屬性的名稱     
            (2)   table   (可選——默認(rèn)為屬性的名稱)這個(gè)集合表的名稱(不能在一對(duì)多的關(guān)聯(lián)關(guān)系中使用)     
            (3)   schema   (可選)   表的schema的名稱,   他將覆蓋在根元素中定義的schema     
            (4)   lazy   (可選——默認(rèn)為false)   lazy(可選--默認(rèn)為false)   允許延遲加載(lazy   initialization   )(不能在數(shù)組中使用)     
            (5)   inverse   (可選——默認(rèn)為false)   標(biāo)記這個(gè)集合作為雙向關(guān)聯(lián)關(guān)系中的方向一端。     
            (6)   cascade   (可選——默認(rèn)為none)   讓操作級(jí)聯(lián)到子實(shí)體     
            (7)   sort(可選)指定集合的排序順序,   其可以為自然的(natural)或者給定一個(gè)用來(lái)比較的類。     
            (8)   order-by   (可選,   僅用于jdk1.4)   指定表的字段(一個(gè)或幾個(gè))再加上asc或者desc(可選),   定義Map,Set和Bag的迭代順序     
            (9)   where   (可選)   指定任意的SQL   where條件,   該條件將在重新載入或者刪除這個(gè)集合時(shí)使用(當(dāng)集合中的數(shù)據(jù)僅僅是所有可用數(shù)據(jù)的一個(gè)子集時(shí)這個(gè)條件非常有用)     
            (10)   outer-join(可選)指定這個(gè)集合,只要可能,應(yīng)該通過(guò)外連接(outer   join)取得。在每一個(gè)SQL語(yǔ)句中,   只能有一個(gè)集合可以被通過(guò)外連接抓取(譯者注:   這里提到的SQL語(yǔ)句是取得集合所屬類的數(shù)據(jù)的Select語(yǔ)句)     
            (11)   batch-size   (可選,   默認(rèn)為1)   指定通過(guò)延遲加載取得集合實(shí)例的批處理塊大小("batch   size")。     
            (12)   access(可選-默認(rèn)為屬性property):Hibernate取得屬性值時(shí)使用的策略

          posted @ 2008-11-15 22:09 smallfa 閱讀(196) | 評(píng)論 (0)編輯 收藏

          Hibernate3.x調(diào)用存儲(chǔ)過(guò)程

               摘要: 原文出處:http://tech.it168.com/j/d/2007-05-14/200705141007843.shtml 說(shuō)明:該文不得轉(zhuǎn)載 摘要:本文以詳盡的實(shí)例展示了hibernate3.x中調(diào)用存儲(chǔ)過(guò)程各步驟,從建立測(cè)試表、存儲(chǔ)過(guò)程的建立、工程的建立以及類的編寫(xiě)和測(cè)試一步一步引導(dǎo)用戶學(xué)習(xí)hibernate3.x中調(diào)用存儲(chǔ)過(guò)程的方法. 如果底層數(shù)據(jù)庫(kù)(eg. Oracle、mysq...  閱讀全文

          posted @ 2008-11-15 22:08 smallfa 閱讀(250) | 評(píng)論 (0)編輯 收藏

          【Hibernate總結(jié)系列】hibernate.cfg.xml配置

           

                 Hibernate的描述文件可以是一個(gè)properties屬性文件,也可以是一個(gè)xml文件。下面講一下Hibernate.cfg.xml的配置。配置格式如下:
          1. 配置數(shù)據(jù)源

                 Hibernate.cfg.xml中既可以配置JDBC,也可以配置JNDI。在本小節(jié)中講述數(shù)據(jù)源如何配置。

          hibernate.cfg.xml

          <?xml version="1.0" encoding="UTF-8"?>
          <!DOCTYPE hibernate-configuration PUBLIC
          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
          "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

          <hibernate-configuration>

          <session-factory>

          <!-- 各屬性的配置-->

          <!—true表示將Hibernate發(fā)送給數(shù)據(jù)庫(kù)的sql顯示出來(lái) -->

          <property name="show_sql">true</property>

          <!-- SQL方言,這邊設(shè)定的是MySQL -->

          <property name="dialect">net.sf.hibernate.dialect.MySQLDialect</property>

          <!-- 一次讀的數(shù)據(jù)庫(kù)記錄數(shù) -->

          <property name="jdbc.fetch_size">50</property>

          <!-- 設(shè)定對(duì)數(shù)據(jù)庫(kù)進(jìn)行批量刪除 -->
                  <property name="jdbc.batch_size">30</property>

          <!—下面為JNDI的配置 -->

          <!-- 數(shù)據(jù)源的名稱 -->

          <property name="connection.datasource">java:comp/env/jdbc/datasourcename</property>

          <!-- Hibernate的連接加載類 -->

          <property name="connection.provider_class">net.sf.hibernate.connection.DatasourceConnectionProvider</property>

          <property name="dialect">net.sf.hibernate.dialect.SQLServerDialect</property>

          <!—映射文件 -->

          <mapping resource="com/amigo/pojo/User.hbm.xml"/>

          <mapping resource="com/amigo/pojo/Org.hbm.xml"/>
              </session-factory>
          </hibernate-configuration>

          2. c3p0連接池

                 c3p0連接池是Hibernate推薦使用的連接池,若需要使用該連接池時(shí),需要將c3p0jar包加入到classpath中。c3p0連接池的配置示例如下:

          hibernate.cfg.xml

          <?xml version="1.0" encoding="UTF-8"?>

          <!DOCTYPE hibernate-configuration PUBLIC

          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"

          "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

          <hibernate-configuration>

          <session-factory>

                  <!-- 顯示實(shí)際操作數(shù)據(jù)庫(kù)時(shí)的SQL -->

                  <property name="show_sql">true</property>

                  <!-- SQL方言,這邊設(shè)定的是MySQL -->

                  <property name="dialect">net.sf.hibernate.dialect.MySQLDialect</property>

                  <!--驅(qū)動(dòng)程序,在后續(xù)的章節(jié)中將講述mysqlsqlserverOracle數(shù)據(jù)庫(kù)的配置 -->

                  <property name="connection.driver_class">……</property>

                  <!-- JDBC URL -->

                  <property name="connection.url">……</property>

                  <!-- 數(shù)據(jù)庫(kù)用戶名 -->

                  <property name="connection.username">user</property>

                  <!-- 數(shù)據(jù)庫(kù)密碼 -->

                  <property name="connection.password">pass</property>

                  <property name="c3p0.min_size">5</property>

                  <property name="c3p0.max_size">20</property>

                  <property name="c3p0.timeout">1800</property>

                  <property name="c3p0.max_statements">50</property>

                  <!-- 對(duì)象與數(shù)據(jù)庫(kù)表格映像文件 -->

                 <mapping resource="com/amigo/pojo/User.hbm.xml"/>

          <mapping resource="com/amigo/pojo/Org.hbm.xml"/>

              </session-factory>

          </hibernate-configuration>

          在上述配置中,Hibernate根據(jù)配置文件生成連接,再交給c3p0管理。

          3. proxool連接池

                 proxoolc3p0以及dbcp不一樣,它是自己生成連接的,因此連接信息放在proxool配置文件中。使用它時(shí),需要將proxool-0.8.3.jar加入到classespath中。配置舉例如下:

          hibernate.cfg.xml

          <?xml version="1.0" encoding="UTF-8"?>

          <!DOCTYPE hibernate-configuration PUBLIC

          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"

          "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

          <hibernate-configuration>

          <session-factory>

                  <!-- 顯示實(shí)際操作數(shù)據(jù)庫(kù)時(shí)的SQL -->

                  <property name="show_sql">true</property>

                  <!-- SQL方言,這邊設(shè)定的是MySQL -->

                  <property name="dialect">net.sf.hibernate.dialect.MySQLDialect</property>

          <!—proxool的配置 -->

                 <property name="proxool.pool_alias">pool1</property>

          <property name="proxool.xml">ProxoolConf.xml</property>

          <property name="connection.provider_class">net.sf.hibernate.connection.ProxoolConnectionProvider</property>

                 <!-- 對(duì)象與數(shù)據(jù)庫(kù)表格映像文件 -->

                 <mapping resource="com/amigo/pojo/User.hbm.xml"/>

          <mapping resource="com/amigo/pojo/Org.hbm.xml"/>

            </session-factory>

          </hibernate-configuration>

          hibernate.cfg.xml的同目錄下編寫(xiě)proxool的配置文件:ProxoolConf.xml,該文件的配置實(shí)例如下:

          ProxoolConf.xml

          <?xml version="1.0" encoding="utf-8"?>
          <!-- the proxool configuration can be embedded within your own application's.
          Anything outside the "proxool" tag is ignored. -->
          <something-else-entirely>
          <proxool>
          <alias>pool1</alias>
          <!--proxool
          只能管理由自己產(chǎn)生的連接-->

          <!-- 驅(qū)動(dòng)的url-->

          <!-- jdbc:mysql://localhost:3306/dbname?useUnicode=true&characterEncoding=GBK-->

          <driver-url>… </driver-url>

          <!-- 驅(qū)動(dòng)類,eg. com.mysql.jdbc.Driver-->

          <driver-class>… </driver-class>
          <driver-properties>

          <!-- 數(shù)據(jù)庫(kù)用戶名,eg. valueroot-->

          <property name="user" value="…"/>

          <!-- 數(shù)據(jù)庫(kù)密碼,eg. valueroot-->

          <property name="password" value="…."/>
          </driver-properties>
          <!-- proxool
          自動(dòng)偵察各個(gè)連接狀態(tài)的時(shí)間間隔(毫秒),偵察到空閑的連接就馬上回收,超時(shí)的銷毀-->
          <house-keeping-sleep-time>90000</house-keeping-sleep-time>
          <!-- 
          指因未有空閑連接可以分配而在隊(duì)列中等候的最大請(qǐng)求數(shù),超過(guò)這個(gè)請(qǐng)求數(shù)的用戶連接就不會(huì)被接受-->
          <maximum-new-connections>20</maximum-new-connections>
          <!-- 
          最少保持的空閑連接數(shù)-->
          <prototype-count>5</prototype-count>
          <!-- 
          允許最大連接數(shù),超過(guò)了這個(gè)連接,再有請(qǐng)求時(shí),就排在隊(duì)列中等候,最大的等待請(qǐng)求數(shù)由maximum-new-connections決定-->
          <maximum-connection-count>100</maximum-connection-count>
          <!-- 
          最小連接數(shù)-->
          <minimum-connection-count>10</minimum-connection-count>
          </proxool>
          </something-else-entirely>

          4. dbcp連接池

                 hibernate3.0中,已經(jīng)不再支持dbcp了,hibernate的作者在hibernate.org中,明確指出在實(shí)踐中發(fā)現(xiàn)dbcp BUG,在某些種情會(huì)產(chǎn)生很多空連接不能釋放,所以拋棄了對(duì)dbcp的支持。若需要使用dbcp,開(kāi)發(fā)人員還需要將commons-pool-1.2.jar commons-dbcp-1.2.1.jar兩個(gè)jar包加入到classpath中。dbcpc3p0一樣,都是由hibernate建立連接的。

          hibernate2.0中的配置建立如下:

          hibernate.cfg.xml

          <?xml version="1.0" encoding="UTF-8"?>

          <!DOCTYPE hibernate-configuration PUBLIC

          "-//Hibernate/Hibernate Configuration DTD 2.0//EN"

          "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

          <hibernate-configuration>

          <session-factory>

                  <!-- 顯示實(shí)際操作數(shù)據(jù)庫(kù)時(shí)的SQL -->

                  <property name="show_sql">true</property>

                  <!-- SQL方言,這邊設(shè)定的是MySQL -->

                  <property name="dialect">net.sf.hibernate.dialect.MySQLDialect</property>

                  <!--驅(qū)動(dòng)程序,在后續(xù)的章節(jié)中將講述mysqlsqlserverOracle數(shù)據(jù)庫(kù)的配置 -->

                  <property name="connection.driver_class">……</property>

                  <!-- JDBC URL -->

                  <property name="connection.url">……</property>

                  <!-- 數(shù)據(jù)庫(kù)用戶名,eg. root -->

                  <property name="connection.username">…</property>

                  <!-- 數(shù)據(jù)庫(kù)密碼, eg. root-->

                  <property name="connection.password">…</property>

                 <property name="dbcp.maxActive">100</property>

          <property name="dbcp.whenExhaustedAction">1</property>

          <property name="dbcp.maxWait">60000</property>

          <property name="dbcp.maxIdle">10</property>

          <property name="dbcp.ps.maxActive">100</property>

          <property name="dbcp.ps.whenExhaustedAction">1</property>

          <property name="dbcp.ps.maxWait">60000</property>

          <property name="dbcp.ps.maxIdle">10</property>

                  <!-- 對(duì)象與數(shù)據(jù)庫(kù)表格映像文件 -->

                 <mapping resource="com/amigo/pojo/User.hbm.xml"/>

          <mapping resource="com/amigo/pojo/Org.hbm.xml"/>

              </session-factory>

          </hibernate-configuration>

          5. MySql連接配置

          hibernate中,可以配置很多種數(shù)據(jù)庫(kù),例如MySqlSql ServerOracleMySql的配置舉例如下:

          hibernate.cfg.xml

          <?xml version="1.0" encoding="UTF-8"?>
          <!DOCTYPE hibernate-configuration PUBLIC
          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
          "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

          <hibernate-configuration>

          <session-factory>

          <!-- 各屬性的配置-->

          <!—true表示將Hibernate發(fā)送給數(shù)據(jù)庫(kù)的sql顯示出來(lái) -->

          <property name="show_sql">true</property>

          <!-- SQL方言,這邊設(shè)定的是MySQL -->

          <property name="dialect">net.sf.hibernate.dialect.MySQLDialect</property>

          <!-- 一次讀的數(shù)據(jù)庫(kù)記錄數(shù) -->

          <property name="jdbc.fetch_size">50</property>

          <!-- 設(shè)定對(duì)數(shù)據(jù)庫(kù)進(jìn)行批量刪除 -->
                  <property name="jdbc.batch_size">30</property>

          <!--驅(qū)動(dòng)程序-->

          <property name="connection.driver_class">com.mysql.jdbc.Driver</property>

          <!-- JDBC URL -->

          <property name="connection.url">jdbc:mysql://localhost/dbname?characterEncoding=gb2312</property>

          <!-- 數(shù)據(jù)庫(kù)用戶名-->

          <property name="connection.username">root</property>

          <!-- 數(shù)據(jù)庫(kù)密碼-->

          <property name="connection.password">root</property>

          <!—映射文件 -->

          <mapping resource="com/amigo/pojo/User.hbm.xml"/>

          <mapping resource="com/amigo/pojo/Org.hbm.xml"/>
              </session-factory>
          </hibernate-configuration>

          上面使用的驅(qū)動(dòng)類是com.mysql.jdbc.Driver。需要將MySql的連接器jar(eg. mysql-connector-java-5.0.4-bin.jar)加入到classpath中。

          6. Sql Server連接配置

                 本小節(jié)講述一下Sql Server數(shù)據(jù)庫(kù)的hibernate連接設(shè)置,在此只給出連接部分的內(nèi)容,其余部分與2.2.1.5一樣,在此不再贅述。內(nèi)容如下:

          <!--驅(qū)動(dòng)程序-->

          <property name="connection.driver_class">net.sourceforge.jtds.jdbc.Driver</property>

          <!-- JDBC URL -->

          <property name="connection.url">jdbc:jtds:sqlserver://localhost:1433;DatabaseName=dbname</property>

          <!-- 數(shù)據(jù)庫(kù)用戶名-->

          <property name="connection.username">sa</property>

          <!-- 數(shù)據(jù)庫(kù)密碼-->

          <property name="connection.password"></property>

          上例的驅(qū)動(dòng)類使用的是jtds的驅(qū)動(dòng)類,因此讀者需要將jtdsjar(eg. jtds-1.2.jar)加入到classpath中。

          7. Oracle連接配置

          本小節(jié)講述一下Sql Server數(shù)據(jù)庫(kù)的hibernate連接設(shè)置,在此只給出連接部分的內(nèi)容,其余部分與2.2.1.5一樣,在此不再贅述。內(nèi)容如下:

          <!--驅(qū)動(dòng)程序-->

          <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>

          <!-- JDBC URL -->

          <property name="connection.url">jdbc:oracle:thin:@localhost:1521:dbname</property>

          <!-- 數(shù)據(jù)庫(kù)用戶名-->

          <property name="connection.username">test</property>

          <!-- 數(shù)據(jù)庫(kù)密碼-->

          <property name="connection.password">test</property>

          上例使用的驅(qū)動(dòng)類為:oracle.jdbc.driver.OracleDriver,開(kāi)發(fā)人員需要將相關(guān)的jar包(ojdbc14.jar)加入到classpath中。

           

          http://www.aygfsteel.com/amigoxie/archive/2007/12/29/171395.html

          posted @ 2008-11-15 22:03 smallfa 閱讀(619) | 評(píng)論 (0)編輯 收藏

          【Hibernate總結(jié)系列】使用舉例

           

          本節(jié)講述如何使用Hibernate實(shí)現(xiàn)記錄的增、刪、改和查功能。

          1 查詢

                 Hibernate中使用查詢時(shí),一般使用Hql查詢語(yǔ)句。

          HQLHibernate Query Language),即Hibernate的查詢語(yǔ)言跟SQL非常相像。不過(guò)HQLSQL的最根本的區(qū)別,就是它是面向?qū)ο蟮摹?/span>

          使用HQL時(shí)需要注意以下幾點(diǎn):

          l         大小寫(xiě)敏感

          因?yàn)?/span>HQL是面向?qū)ο蟮模鴮?duì)象類的名稱和屬性都是大小寫(xiě)敏感的,所以HQL是大小寫(xiě)敏感的。

          Eg.

          HQL語(yǔ)句:from Cat as cat where cat.id > 1;from Cat as cat where cat.ID > 1;是不一樣的,這點(diǎn)與SQL不同。

          l         from子句

          Eg. from Cat,該句返回Cat對(duì)象實(shí)例,開(kāi)發(fā)人員也可以給其加上別名,eg. from Cat as cat,對(duì)于多表查詢的情況,可參考如下:

          from Cat as cat, Dog as dog

          其它方面都與SQL類似,在此不再贅述。

          接下來(lái)講一個(gè)在Hibernate中查詢的例子。

          1.1簡(jiǎn)單查詢

          List list = session.createQuery("from User as user order by user.loginName").list();

          1.2帶單個(gè)參數(shù)的查詢

          List list = session.find("from User as user where user.loginName=?",

                                                                    loginName,

                                                                    Hibernate.STRING);

          1.3多個(gè)參數(shù)的查詢

          Eg1. 此例采用“?”占位符的方式

          String hql = "from User as user where user.loginName=? and user.orgId=? ";

          Query query = session.createQuery(hql);

          query.setParameter(1, 'amigo');

          query.setParameter(2, new Long(1)) ;

          List list = query .list();

          Eg2. 此例采用“:paramName”的方式

          String hql = "from User as user where user.loginName=:loginName and user.orgId=:orgId ";

          Query query = session.createQuery(hql);

          query.setParameter('loginName', 'amigo');

          query.setParameter('orgId', new Long(1)) ;

          List list = query .list();

          1.4查詢數(shù)量

          int count  = (Integer) session.createQuery("select count(*) from User").uniqueResult().intValue();

          1.5限制查詢起始值和數(shù)量的查詢

          這種一般是在記錄需要分頁(yè)的時(shí)候需要用到,例如,在如下的代碼中,限制查詢的開(kāi)始記錄的位置為50,最大查詢條數(shù)為50

          String hql = "from User as user order by user.loginName";

          int firstResult= 50;

          int maxResults = 50;

          Query query = session.createQuery(hql);

          query = query.setFirstResult(firstResult);

          query.setMaxResults(maxResults);

          1.6子查詢

          在某些情況下,也需要用到子查詢,例如在下面的例子中,User為用戶對(duì)象,UserRole為用戶與角色關(guān)聯(lián)對(duì)象。如下HQL語(yǔ)句將沒(méi)有分配角色的用戶對(duì)象查找出來(lái)。

          String hql = "from User user where user.loginName"

          + " not in(select ur.user.loginName from UserRole ur) ";

          List list = (session.createQuery(hql)).list();

          1.7原生SQL查詢

          對(duì)于某些復(fù)雜的查詢語(yǔ)句,需要調(diào)用某種特定的數(shù)據(jù)庫(kù)的特定函數(shù)才能解決,Hibernate雖然不推薦使用原生SQL語(yǔ)句來(lái)查詢,因?yàn)檫@將破壞數(shù)據(jù)庫(kù)的易移植性,但是Hibernate中也提供了使用原生SQL進(jìn)行查詢的方法,只需要獲得連接即可。

          Eg. 在下面的例子中,用到了Sql Server數(shù)據(jù)庫(kù)中的原生sql語(yǔ)句,如下所示:

          String timeUnit = "13";

          String sql = "select count(*) count, CONVERT(VARCHAR(" + timeUnit +"),  log.gen_datetime,121) timeUnit " + "from Log log";

          SQLQuery query = session.createSQLQuery(sql)

          .addScalar("count", Hibernate.INTEGER)

          .addScalar("timeUnit", Hibernate.STRING);

          List list = query.list();

          2 新增

                 在數(shù)據(jù)庫(kù)中新增記錄在Hibernate中不需要使用insert命令,只需要構(gòu)造新增的對(duì)象后,調(diào)用Session對(duì)象的save(…)方法即可。

          2.1新增單個(gè)對(duì)象

                 新增單個(gè)對(duì)象的實(shí)例如下,該實(shí)例將在用戶表中新增一條記錄。

          Session session = HibernateSessionFactory.getSession();

                   Transaction ts = null;

          try {

          ts = session.beginTransaction();

                            User user = new User();

                            user.setLoginName("amigo");

                            user.setFullName("阿蜜果");

                            ……

                            session.save(user) ;

                             ts.commit();

          } catch (Exception e) {

                            if (ts != null) {

          ts.rollback();

          }

          } finally {

                             HibernateSessionFactory.closeSession();

          }

          2.2批量新增對(duì)象

          對(duì)于批量新增對(duì)象的情況,需要在新增一部分對(duì)象后flushclear一次,例如,沒(méi)批量新增20個(gè)對(duì)象時(shí)手動(dòng)的flush一次,假設(shè)在list為一個(gè)用戶列表,里面包含很多User對(duì)象,那么要將實(shí)現(xiàn)這些對(duì)象的批量新增,可采用如下方法:

          Session session = HibernateSessionFactory.getSession();

          Transaction ts = null;

          try {

          ts = session.beginTransaction();

          for (int i = 0; i < list.size(); i++) {

                                      User user = (User) list.get(i);

                                      session.save(user) ;

                                      if (i % 20 == 0) {

                   session.flush();

                   session.clear();

          }

                             }

                             ts.commit();

          } catch (Exception e) {

                             if (ts != null) {

          ts.rollback();

          }

          } finally {

                             HibernateSessionFactory.closeSession();

          }

          3 更新

                 hibernate中,更新對(duì)象前不需要使用查詢語(yǔ)句:update…,一般需要在取得需要更新的持久化對(duì)象后,執(zhí)行Session對(duì)象的update(…)方法。例如:

          Session session = HibernateSessionFactory.getSession();

          Transaction ts = null;

          try {

          ts = session.beginTransaction();

          //取得持久化對(duì)象

                             User user = session.get(User.class, "amigo");

                             //對(duì)需要修改的屬性進(jìn)行修改

                             user.setFullName("阿蜜果");

                             ……

                             session.update(user) ;

                             ts.commit();

          } catch (Exception e) {

                             if (ts != null) {

          ts.rollback();

          }

          } finally {

                            HibernateSessionFactory.closeSession();

          }

          4 刪除

          4.1刪除單個(gè)對(duì)象

                 一般在取得某對(duì)象后,開(kāi)發(fā)人員可以調(diào)用Session對(duì)象的delete(…)方法刪除該對(duì)象。

          Eg. 下面的實(shí)例中取得loginName(主鍵)為“amigo”的User對(duì)象后,將它刪除。

          Session session = HibernateSessionFactory.getSession();

          Transaction ts = null;

          try {

          ts = session.beginTransaction();

          //取得持久化對(duì)象

                             User user = session.get(User.class, "amigo");

                             session.delete(user) ;

                             ts.commit();

          } catch (Exception e) {

                             if (ts != null) {

          ts.rollback();

          }

          } finally {

                             HibernateSessionFactory.closeSession();

          }

          4.2批量刪除對(duì)象

          對(duì)于批量刪除對(duì)象的情況,開(kāi)發(fā)人員可以在取得待刪除的對(duì)象列表后,一個(gè)一個(gè)的將對(duì)象刪除,對(duì)于每個(gè)對(duì)象的刪除方法,見(jiàn)3.4.1小節(jié)。開(kāi)發(fā)人員還可以hql語(yǔ)句來(lái)做批量刪除。

          Eg. 該實(shí)例通過(guò)delete語(yǔ)句來(lái)刪除記錄,除了loginName為“amigo”的對(duì)象為,其余都刪除,代碼如下所示:

          Session session = HibernateSessionFactory.getSession();

          Transaction ts = null;

          try {

          ts = session.beginTransaction();

          String hql = "delete User as user where user.loginName != 'amigo'";

          Query query = session.createQuery(hql);

          int count  = query.executeUpdate();

           ts.commit();

          System.out.println("delete count : " + count); //刪除條數(shù)

          } catch (Exception e) {

                             if (ts != null) {

          ts.rollback();

          }

          } finally {

                             HibernateSessionFactory.closeSession();

          }

          http://www.aygfsteel.com/amigoxie/archive/2008/01/01/171972.html

          posted @ 2008-11-15 21:58 smallfa 閱讀(262) | 評(píng)論 (0)編輯 收藏

          【Hibernate總結(jié)系列】常見(jiàn)異常總結(jié)(不斷補(bǔ)充)

           

                 本文總結(jié)Hibernate中常見(jiàn)的異常。

          1. net.sf.hibernate.MappingException

                 當(dāng)出現(xiàn)net.sf.hibernate.MappingException: Error reading resource:…異常時(shí)一般是因?yàn)橛成湮募霈F(xiàn)錯(cuò)誤。

                 當(dāng)出現(xiàn)net.sf.hibernate.MappingException: Resource: … not found是因?yàn)?/span>XML配置文件沒(méi)找到所致,有可能是放置目錄不正確,或者沒(méi)將其加入hibernate.cfg.xml中。

          2. net.sf.hibernate.PropertyNotFoundException

                 當(dāng)出現(xiàn)net.sf.hibernate.PropertyNotFoundException: Could not find a setter for property name in class …時(shí),原因一般是因?yàn)?/span>XML映射文件中的屬性與對(duì)應(yīng)的Java類中的屬性的gettersetter方法不一致。

          3. org.hibernate.id.IdentifierGenerationException

                 當(dāng)出現(xiàn)org.hibernate.id.IdentifierGenerationException: ids for this class must be manually assigned before calling save():異常時(shí),一般是因?yàn)?/span><id>元素配置不正確,<id>元素缺少其子元素<generator></generator>的配置引起。

                 解決方案:<id>元素映射了相應(yīng)數(shù)據(jù)庫(kù)表的主鍵字段,對(duì)其子元素<generator class="">,其中class的取值可以為incrementidentitysequencehilonative……等,更多的可參考hibernate參考文檔,一般取其值為native 。具體可參考2.2.2.1小節(jié)。

          4. a different object with the same identifier value was already associated with the session

                 當(dāng)出現(xiàn)a different object with the same identifier value was already associated with the session時(shí),一般是因?yàn)樵?/span>hibernate中同一個(gè)session里面有了兩個(gè)相同標(biāo)識(shí)但是是不同實(shí)體。

                 有如下幾種解決方案:

          1)使用session.clean(),如果在clean操作后面又進(jìn)行了saveOrUpdate(object)等改變數(shù)據(jù)狀態(tài)的操作,有可能會(huì)報(bào)出"Found two representations of same collection"異常。

          2)使用session.refresh(object),當(dāng)object不是數(shù)據(jù)庫(kù)中已有數(shù)據(jù)的對(duì)象的時(shí)候,不能使用session.refresh(object)因?yàn)樵摲椒ㄊ菑?/span>hibernatesession中去重新取object,如果session中沒(méi)有這個(gè)對(duì)象,則會(huì)報(bào)錯(cuò)所以當(dāng)你使用saveOrUpdate(object)之前還需要判斷一下。

          3session.merge(object)Hibernate里面自帶的方法,推薦使用。

          5. SQL Grammer Exception,Could not execute JDBC batch update

                 當(dāng)出現(xiàn)SQL Grammer Exception,Could not execute JDBC batch update異常時(shí),一般是由如下問(wèn)題引起:

          1SQL語(yǔ)句中存在語(yǔ)法錯(cuò)誤或是傳入的數(shù)據(jù)有誤;

          2)數(shù)據(jù)庫(kù)的配置不合法,或者說(shuō)是配置有誤。較容易出現(xiàn)的有數(shù)據(jù)表的映射文件(,hbm.xml文件)配置有誤;Hibernate.cfg.xml文件配置有誤;

          3 當(dāng)前的數(shù)據(jù)庫(kù)用戶權(quán)限不足,不能操作數(shù)據(jù)庫(kù)。以是以Oracle 數(shù)據(jù)庫(kù)為例,這種情況下在錯(cuò)誤提示中會(huì)顯示java.sql.BatchUpdateException: ORA-01031: insufficient privileges這樣的信息。

                 針對(duì)上面的各種原因,開(kāi)發(fā)人員可以找出對(duì)應(yīng)的解決方案。

          http://www.aygfsteel.com/amigoxie/category/19976.html

          posted @ 2008-11-15 21:52 smallfa 閱讀(285) | 評(píng)論 (0)編輯 收藏

          【Hibernate總結(jié)系列】....hbm.xml配置

           Hibernate中,各表的映射文件….hbm.xml可以通過(guò)工具生成,例如在使用MyEclipse開(kāi)發(fā)時(shí),它提供了自動(dòng)生成映射文件的工具。本節(jié)簡(jiǎn)單的講述一下這些配置文件的配置。

                 配置文件的基本結(jié)構(gòu)如下:

          <?xml version="1.0" encoding='UTF-8'?>

          <!DOCTYPE hibernate-mapping PUBLIC

                                      "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

                                      "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >

          <hibernate-mapping package="包名">

          <class name="類名" table="表名">

                            <id name="主鍵在java類中的字段名" column="對(duì)應(yīng)表中字段" type="類型 ">

                              <generator class="主鍵生成策略"/>

          </id>

                   ……

              </class>

          </hibernate-mapping>

          1. 主鍵(id

                 Hibernate的主鍵生成策略有如下幾種:

          1)  assigned

          主鍵由外部程序負(fù)責(zé)生成,在 save() 之前指定。

          2)  hilo

          通過(guò)hi/lo 算法實(shí)現(xiàn)的主鍵生成機(jī)制,需要額外的數(shù)據(jù)庫(kù)表或字段提供高位值來(lái)源。

          3)  seqhilo

          hilo 類似,通過(guò)hi/lo 算法實(shí)現(xiàn)的主鍵生成機(jī)制,需要數(shù)據(jù)庫(kù)中的 Sequence,適用于支持 Sequence 的數(shù)據(jù)庫(kù),如Oracle

          4)  increment

          主鍵按數(shù)值順序遞增。此方式的實(shí)現(xiàn)機(jī)制為在當(dāng)前應(yīng)用實(shí)例中維持一個(gè)變量,以保存著當(dāng)前的最大值,之后每次需要生成主鍵的時(shí)候?qū)⒋酥导?/span>1作為主鍵。這種方式可能產(chǎn)生的問(wèn)題是:不能在集群下使用。

          5)  identity

          采用數(shù)據(jù)庫(kù)提供的主鍵生成機(jī)制。如DB2、SQL Server、MySQL 中的主鍵生成機(jī)制。

          6)  sequence

          采用數(shù)據(jù)庫(kù)提供的 sequence 機(jī)制生成主鍵。如 Oralce 中的Sequence

          7)  native

          由 Hibernate 根據(jù)使用的數(shù)據(jù)庫(kù)自行判斷采用 identity、hilo、sequence 其中一種作為主鍵生成方式。

          8)  uuid.hex

          由 Hibernate 基于128 位 UUID 算法 生成16 進(jìn)制數(shù)值(編碼后以長(zhǎng)度32 的字符串表示)作為主鍵。

          9)  uuid.string

          uuid.hex 類似,只是生成的主鍵未進(jìn)行編碼(長(zhǎng)度16),不能應(yīng)用在 PostgreSQL 數(shù)據(jù)庫(kù)中。

          10) foreign

          使用另外一個(gè)相關(guān)聯(lián)的對(duì)象的標(biāo)識(shí)符作為主鍵。

          主鍵配置舉例如下:

          <id name="id" column="id" type="java.lang.Integer">

                       <generator class="native"/>

          </id>

          另外還可以擴(kuò)展Hibernate的類來(lái)做自己的主鍵生成策略,具體例子見(jiàn):http://www.javaeye.com/topic/93391

          2. 普通屬性(property

                 開(kāi)發(fā)人員可以打開(kāi)網(wǎng)址:http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd

          來(lái)查看hibernate3.0dtd信息,可看到property的定義如下:

          <!ELEMENT property (meta*,(column|formula)*,type?)>
                              <!ATTLIST property name CDATA #REQUIRED>
                              <!ATTLIST property node CDATA #IMPLIED>
                              <!ATTLIST property access CDATA #IMPLIED>
                              <!ATTLIST property type CDATA #IMPLIED>
                              <!ATTLIST property column CDATA #IMPLIED>
                              <!ATTLIST property length CDATA #IMPLIED>
                              <!ATTLIST property precision CDATA #IMPLIED>
                              <!ATTLIST property scale CDATA #IMPLIED>
                              <!ATTLIST property not-null (true|false) #IMPLIED>
                              <!ATTLIST property unique (true|false) "false">
                              <!ATTLIST property unique-key CDATA #IMPLIED>
                              <!ATTLIST property index CDATA #IMPLIED>                                                                                  <!-- include the columns spanned by this property in an index -->
                              <!ATTLIST property update (true|false) #IMPLIED>
                              <!ATTLIST property insert (true|false) #IMPLIED>
                              <!ATTLIST property optimistic-lock (true|false) "true">          <!-- only supported for properties of a class (not component) -->
                              <!ATTLIST property formula CDATA #IMPLIED>
                              <!ATTLIST property lazy (true|false) "false">
              <!ATTLIST property generated (never|insert|always) "never">

                 它的各屬性中比較常用的有:name(對(duì)應(yīng)的java類的屬性名稱)、column(對(duì)應(yīng)的表中的字段)、tyope(屬性的類型,eg.java.lang.String)、not-null(設(shè)置該屬性是否為空,為true時(shí)表示非空,默認(rèn)為false)和length(字段的長(zhǎng)度限制)

                   Eg1. <property name="accessname" column="accessName" type="java.lang.String" not-null="true" />

                   Eg2. <property name="state" column="state" type="java.lang.Byte" not-null="true" />

          Eg3. <property name="description" column="description" type="java.lang.String" />

          3. 一對(duì)多關(guān)系(<many-to-one…/><set…></set>

                 一對(duì)多關(guān)系一般是用在一個(gè)表與另一個(gè)表存在外鍵關(guān)聯(lián)的時(shí)候,例如用戶表的組織id與組織表存在外鍵關(guān)聯(lián),則“一”方為組織表,“多”方為用戶表,因?yàn)橐粋€(gè)組織可以包含多個(gè)用戶,而一個(gè)用戶只能隸屬于一個(gè)組織。

          對(duì)于存在一對(duì)多關(guān)系和多對(duì)一關(guān)系的雙方,需要在…hbm.xml中進(jìn)行相應(yīng)配置,這時(shí)在“一”方(例如:組織)需要在映射文件中添加<set…></set>元素,因?yàn)樗鄠€(gè)“多”方的對(duì)象,一般的格式如下:

          <set name="java映射類中對(duì)應(yīng)的屬性" inverse="true" lazy="true">

          <key column="表中對(duì)應(yīng)字段"/>

                        <one-to-many class="多方的類"/>

          </set>

                 Eg.

          <set name="userSet" inverse="true" lazy="true">

                            <key column="orgId"/>

          <one-to-many class="User"/>

          </set>

          “多”方(例如:用戶)隸屬于一個(gè)“一”方對(duì)象,一般的格式如下:

          <many-to-one name="java映射類中對(duì)應(yīng)的屬性" column="表中對(duì)應(yīng)字段" class="類名" not-null="true" />

          Eg.

          <many-to-one name="org" column="orgId" class="Organization" not-null="true" />

          4. 一對(duì)一關(guān)系(<one-to-one…/>

          一對(duì)一關(guān)系相對(duì)一對(duì)多關(guān)系來(lái)說(shuō)比較少見(jiàn),但也在某些情況下要用到,例如有一個(gè)用戶的基本信息表(USER)和一個(gè)用戶的密碼表(PASSWD)就存在一對(duì)一的關(guān)系。下面來(lái)看一下一對(duì)一關(guān)系在Hibernate的配置。

          其中主表(eg. 用戶的基本信息表)的配置如下:

          <one-to-one name="主表對(duì)象中子表對(duì)象的屬性名" class="子表對(duì)象的類名" cascade="save-update"/>

          Eg. <one-to-one name="password" class="com.amigo.dao.pojo.Passwd" cascade="save-update"/>

          子表(eg. 用戶的密碼表)的配置如下:

          <one-to-one name="子表對(duì)象中主表對(duì)象的屬性名" class="主表對(duì)象的類名" constrained="true" />

          Eg. <one-to-one name="user" class="com.amigo.dao.pojo.User " constrained="true" />

          5. 多對(duì)多關(guān)系(<many-to-many…/>

          在數(shù)據(jù)庫(kù)設(shè)計(jì)時(shí),一般將多對(duì)多關(guān)系轉(zhuǎn)換為兩個(gè)一對(duì)多(或多對(duì)一)關(guān)系,例如在基于角色的權(quán)限系統(tǒng)中,用戶和角色存在的關(guān)系就是典型的多對(duì)多關(guān)系,即一個(gè)用戶可以具有多個(gè)角色,而一個(gè)角色又可以為多個(gè)用戶所有,一般在設(shè)計(jì)時(shí),都會(huì)加一個(gè)用戶與角色的關(guān)聯(lián)表,該表與用戶表以及角色表都存在外鍵關(guān)聯(lián)。

          在本小節(jié)中講述的是沒(méi)有分解的多對(duì)多關(guān)系在Hibernate中如何配置。設(shè)置格式如下:

          <set name="java對(duì)象的屬性名" table="表名" cascade="all" outer-join="false">  

          <key column="表的對(duì)應(yīng)字段"/>  

          <many-to-many class="另一個(gè)表的對(duì)象類" column="另一個(gè)表的字段"/>  

          </set>  

          Eg. 上述的多對(duì)多關(guān)系可以表示為:

          t_user方:

          <set name="roleSet" table="t_user" cascade="all" outer-join="false">  

          <key column="roleId"/>  

          <many-to-many class="com.amigo.dao.pojo.Role" column="roleId"/>  

          </set>  

          t_role方:

          <set name="userSet" table="t_role" cascade="all" outer-join="false">  

          <key column="roleId"/>  

          <many-to-many class="com.amigo.dao.pojo.User" column="roleId"/>  

          </set>

          6. 完整實(shí)例

          在本小節(jié)中舉一些.hbm.xml映射文件的例子,讓開(kāi)發(fā)人員對(duì)其有一個(gè)感性的認(rèn)識(shí)。接下來(lái)講述一個(gè)用戶表(tbl_user)、用戶與角色關(guān)聯(lián)表(tbl_user_role)、角色表(tbl_role)以及組織表(tbl_organization)的例子。

          1tbl_user

          <?xml version="1.0" encoding='UTF-8'?>

          <!DOCTYPE hibernate-mapping PUBLIC

                                      "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

                                      "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >

          <hibernate-mapping package="com.amigo.dao.pojo">

              <class name="User" table="tbl_user">

                  <id name="loginname" column="loginName" type="java.lang.String">

                      <generator class="assigned"/>

                  </id>

           

                  <property name="name" column="name" type="java.lang.String" not-null="true" />

                  <property name="password" column="password" type="java.lang.String" not-null="true" />

                  <property name="mobile" column="mobile" type="java.lang.String" />

                  <property name="telephone" column="telephone" type="java.lang.String" />

                  <property name="email" column="email" type="java.lang.String" />

                  <property name="createtime" column="createTime" type="java.util.Date" not-null="true" />

                  <property name="lastlogintime" column="lastLoginTime" type="java.util.Date" />

                  <property name="logintimes" column="loginTimes" type="java.lang.Long" not-null="true" />

                  <property name="state" column="state" type="java.lang.Byte" not-null="true" />

                  <property name="description" column="description" type="java.lang.String" />

           

                  <many-to-one name="organization" column="orgId" class="Organization" not-null="true" />

                  <set name="userRoleSet" inverse="true" cascade="all-delete-orphan" lazy="true">

                      <key column="loginName"/>

                      <one-to-many class="UserRole"/>

                  </set>

          </hibernate-mapping>

          2tbl_organization

          <?xml version="1.0" encoding='UTF-8'?>

          <!DOCTYPE hibernate-mapping PUBLIC

                                      "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

                                      "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >

          <hibernate-mapping package="com.amigo.dao.pojo">

              <class name="Organization" table="tbl_organization">

                  <id name="orgid" column="orgId" type="java.lang.Long">

                      <generator class="native"/>

                  </id>

           

                  <property name="parentorgid" column="parentOrgId" type="java.lang.Long" not-null="true" />

                  <property name="orgname" column="orgName" type="java.lang.String" not-null="true" />

                  <property name="orgfullname" column="orgFullName" type="java.lang.String" />

                  <property name="orglevel" column="orgLevel" type="java.lang.Integer" not-null="true" />

                  <property name="state" column="state" type="java.lang.Byte" not-null="true" />

                  <property name="description" column="description" type="java.lang.String" />

                  <property name="creator" column="creator" type="java.lang.String" />

                  <property name="createtime" column="createTime" type="java.util.Date" />

                  <set name="userSet" inverse="true" lazy="true">

                      <key column="orgId"/>

                      <one-to-many class="User"/>

                  </set>

              </class>

          </hibernate-mapping>

          3tbl_user_role

          <?xml version="1.0" encoding='UTF-8'?>

          <!DOCTYPE hibernate-mapping PUBLIC

                                      "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

                                      "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >

          <hibernate-mapping package="com.cotel.netvote.dao.model">

              <class name="UserRole" table="tbl_user_role">

                  <id name="urid" column="urId" type="java.lang.Integer">

                      <generator class="native"/>

                  </id>

                  <many-to-one name="role" column="roleId" class="Role" not-null="true" />

                  <many-to-one name="user" column="loginName" class="User" not-null="true" />

              </class>

          </hibernate-mapping>

          4tbl_ role

          <?xml version="1.0" encoding='UTF-8'?>

          <!DOCTYPE hibernate-mapping PUBLIC

                                      "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

                                      "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >

          <hibernate-mapping package="com.cotel.netvote.dao.model">

              <class name="Role" table="tbl_role">

                  <id name="roleid" column="roleId" type="java.lang.Integer">

                      <generator class="native"/>

                  </id>

           

                  <property name="rolename" column="roleName" type="java.lang.String" not-null="true" />

                  <property name="createdate" column="createDate" type="java.util.Date" not-null="true" />

                  <property name="description" column="description" type="java.lang.String" />

           

                  <set name="userRoleSet" inverse="true" lazy="true" cascade="all">

                      <key column="roleId"/>

                      <one-to-many class="UserRole"/>

                  </set>

              </class>

          </hibernate-mapping>

          http://www.aygfsteel.com/amigoxie/archive/2007/12/31/171831.html

          posted @ 2008-11-15 21:17 smallfa 閱讀(417) | 評(píng)論 (0)編輯 收藏

          <2008年11月>
          2627282930311
          2345678
          9101112131415
          16171819202122
          23242526272829
          30123456

          導(dǎo)航

          統(tǒng)計(jì)

          公告

          smallfa
          博客園
          C++博客
          博客生活
          Blogjava
          足球博客
          微博
          Redsaga

          常用鏈接

          留言簿(2)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          相冊(cè)

          Ajax

          Blogs

          DB

          java

          Open source

          ORM

          Tools/Help

          vedio Tech

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 新丰县| 惠水县| 天长市| 长沙县| 肥乡县| 石门县| 民丰县| 武隆县| 康平县| 普格县| 兴化市| 巫溪县| 右玉县| 牙克石市| 北碚区| 永仁县| 吉林市| 清镇市| 浪卡子县| 元谋县| 沅陵县| 平江县| 黑河市| 东乌珠穆沁旗| 称多县| 东兴市| 司法| 成都市| 海林市| 巴楚县| 微山县| 泾源县| 盐亭县| 麻阳| 洛宁县| 龙陵县| 蒙城县| 夏邑县| 格尔木市| 阿拉尔市| 宿迁市|