夢(mèng)開始的地方

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            4 隨筆 :: 0 文章 :: 3 評(píng)論 :: 0 Trackbacks

          2006年10月17日 #

           Hibernate 的 一對(duì)一因映射關(guān)系,one-to-one的配置,有一些疑問
           舉例說明
          ?? Person.java
          ? class Person{
          ??private Mark mark;
          ? private int personId;
          ??private name;
          ?//get 和 set 方法深省略

          }
          ??
          ?Mark.java
          class Mark{
          private int markid;
          private Person;
          //get和 set方法省略
          }
          //映射文件
          Person.hbm.xml
          <class name="test.Person" table="person">
          ?<id name="personId" type="integer">
          ??????????? <column name="personId" />
          ??????????? <generator class="increment" />
          ??? </id>
          <one-to-one name="address" class="test.Mark" cascade="save-update" />
          </class>


          Mark.hbm.xml
          <class name="test.Mark" table="mark">
          ??<id name="markId" type="integer">
          ??????????? <column name="addressId" />
          ??????????? <generator class="increment" />
          ??</id>
          <one-to-one name="address" class="test.Person" />
          </class>

          我的需求是:
          增加或者修改表person表時(shí),同時(shí)更新表mark表內(nèi)容,而且不使用共享主鍵,每個(gè)表都有獨(dú)立的主鍵,我這樣配置時(shí),始終報(bào)錯(cuò),希望高手指點(diǎn)~在線等
          posted @ 2006-10-17 18:42 Dushengjun 閱讀(371) | 評(píng)論 (0)編輯 收藏

          2006年9月20日 #

          ?????? 在使用windows系統(tǒng)時(shí),我們會(huì)發(fā)現(xiàn),一種類型的文件總是可以用指定的應(yīng)用程序打開,如:doc文件,雙擊可以打開文件,在使用delphi開發(fā)應(yīng)用程序時(shí),同樣需要實(shí)現(xiàn)上邊的功能,其核心就獲取系統(tǒng)當(dāng)前的文件,而ParamStr函數(shù)起到了非常重要的作用,先面我們簡(jiǎn)單用 Delphi開發(fā)以個(gè)應(yīng)用程序來說明問題:
          首先,用 delphi新建立一個(gè)工程,然后分別創(chuàng)建窗體MainFrm,MyMDIChildForm,添加相應(yīng)的控件,如下圖

          ?????????? ?
          ?????????????????????????????????????? ??? MainFrm

          ???????????????
          ????????????????????????????????????????? ? MyMDIChildForm



          代碼如下:
          Unit1.pas(對(duì)應(yīng)于MainFrm窗體)
          unit Unit1;

          interface

          uses
          ? Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
          ? Dialogs, Menus,Unit2, ComCtrls;

          type
          ? TMainFrm = class(TForm)
          ??? MainMenu1: TMainMenu;
          ??? ItemNew: TMenuItem;
          ??? N1: TMenuItem;
          ??? N2: TMenuItem;
          ??? N3: TMenuItem;
          ??? OpenDialog1: TOpenDialog;
          ??? StatusBar1: TStatusBar;
          ??? procedure ItemNewClick(Sender: TObject);
          ??? procedure N3Click(Sender: TObject);
          ??? procedure FormShow(Sender: TObject);
          ??? function CreateMDI():TMyMDIChildForm;
          ? private
          ??? { Private declarations }
          ? public
          ??? { Public declarations }
          ? end;

          var
          ? MainFrm: TMainFrm;

          implementation


          {$R *.dfm}

          procedure TMainFrm.ItemNewClick(Sender: TObject);
          var
          child: TMyMDIChildForm;
          begin
          ?child:= TMyMDIChildForm.create(Self);
          end;

          procedure TMainFrm.N3Click(Sender: TObject);

          begin
          ? if opendialog1.Execute then
          ?? begin

          ????? CreateMDI.RichEdit1.Lines.LoadFromFile(opendialog1.FileName);
          ????? Self.StatusBar1.Panels[1].Text:=opendialog1.FileName;
          ?? end;

          end;

          procedure TMainFrm.FormShow(Sender: TObject);
          var
          ?FileName:String;
          begin
          ?? FileName:=ParamStr(1);
          ?? if FileExists(FileName) then
          ??? begin
          ????? CreateMDI.RichEdit1.Lines.LoadFromFile(FileName);
          ??? end;
          end;

          ?

          function TMainFrm.CreateMDI: TMyMDIChildForm;
          var
          child: TMyMDIChildForm;
          begin
          ??? child:= TMyMDIChildForm.create(Self);
          ??? Result:=child;
          end;

          end.
          unit2.pas(對(duì)應(yīng)于MyMDIChildForm窗體)
          unit Unit2;

          interface

          uses
          ? Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
          ? Dialogs, StdCtrls, ComCtrls;

          type
          ? TMyMDIChildForm = class(TForm)
          ??? RichEdit1: TRichEdit;
          ??? procedure FormClose(Sender: TObject; var Action: TCloseAction);
          ? private
          ??? { Private declarations }
          ? public
          ??? { Public declarations }
          ? end;

          var
          ? MyMDIChildForm: TMyMDIChildForm;

          implementation

          {$R *.dfm}

          procedure TMyMDIChildForm.FormClose(Sender: TObject;
          ? var Action: TCloseAction);
          begin
          ?Action:=caFree;
          end;

          end.
          這樣我們實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的記事本程序,運(yùn)行結(jié)果如下圖:


          ??????????????


          然后,我們將工程保存,并生成最終的EXE文件,然后我們?cè)赪indows系統(tǒng)目錄任意創(chuàng)建一個(gè)文件,
          如下圖ResumeAction.java文件

          ?????????????????????????

          然后將它的打開方式設(shè)置成我們自己的可執(zhí)行程序
          ???????????????????????????????????

          然后再雙擊此文件,程序正確運(yùn)行,并將它打開了!
          ????????????

          程序的核心就是paramStr函數(shù),它獲得了系統(tǒng)接口,得到了當(dāng)前的文件名稱!

          點(diǎn)擊下載

          posted @ 2006-09-20 22:00 Dushengjun 閱讀(609) | 評(píng)論 (0)編輯 收藏

          2006年9月11日 #

          ?????? Spring是當(dāng)前比較流行的基于Java語言的MVC框架,所謂框架也就是它已經(jīng)實(shí)現(xiàn)好了諸多東西,使java開發(fā)人員能把精力盡量放在業(yè)務(wù)邏輯上.
          ?????? Spring技術(shù)的特點(diǎn)是IOC, 即反向注入,主要應(yīng)用的是XML技術(shù)和POJO(簡(jiǎn)單Java對(duì)象),Spring要達(dá)到的目的其實(shí)很簡(jiǎn)單,就是盡量簡(jiǎn)化原來Java中的地層數(shù)據(jù)訪問的問題,眾所周知,傳統(tǒng)的使用Java訪問地層數(shù)據(jù)庫的方法是使用JDBC,如下的代碼:
          ?? try{
          ?????? }catch(SQLException e){
          ?????????????????? Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");/以MS SQL SERVER為例
          ?????????????????? Connection conn=DriverManager.getConnection(connurl,username,password);
          ???????????????? ? Statement stmt=conn.createStatement();
          ??????????????? ? ?ResultSet rs=stmt.executeQuery(sql);
          ???????? //實(shí)現(xiàn)業(yè)務(wù)邏輯的代碼
          ???????????????????System.out.println("產(chǎn)生異常:"+e);
          ????????? }
          可以看到為了訪問數(shù)據(jù)庫,我們需要這么多多余的模式的代碼,而且又要拋出不同的異常,代碼可維護(hù)性比較差,而且不利于開發(fā)人員把精力投放到最終的業(yè)務(wù)邏輯上.上邊的功能如果選擇使用Spring實(shí)現(xiàn),那就變得的非常簡(jiǎn)單了:
          ??<bean id="datasource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
          ??<property name="url" value="${database.url}"></property>
          ??<property name="driverClassName" value="${database.driver}"></property>
          ??<property name="username" value="${database.user}"></property>
          ??<property name="password" value="${database.password}"></property>
          ?</bean>??
          我們只需要培植上文的XML文件,然后在真正使用數(shù)據(jù)庫時(shí),用
          ????? ApplicationContext?? ctx=new?? FileSystemXmlApplicationContext("beans.xml");
          ??????? DriverManagerDataSource ds=(DriverManagerDataSource)ctx.getBean("datasource");
          兩條語句完成數(shù)據(jù)源的獲得,這就簡(jiǎn)化掉了相當(dāng)多的模式代碼,讓我們更加關(guān)心業(yè)務(wù)邏輯的實(shí)現(xiàn)了~?
          ?????
          posted @ 2006-09-11 13:16 Dushengjun 閱讀(957) | 評(píng)論 (3)編輯 收藏

          2006年9月7日 #

          ??? 最近兩天,很巧,又寫delphi的電子郵件客戶端,還寫了Java的電子郵件發(fā)送的小程序,一個(gè)是工作需要,另一個(gè)則是幫朋友的忙,有點(diǎn)巧.
          1.Java的電子有件發(fā)送程序
          SendMailBean.java
          package adu.com.kingsoft;
          import java.util.Date;
          import java.util.Properties;
          import javax.mail.Message;
          import javax.mail.Session;
          import javax.mail.Transport;
          import javax.mail.internet.InternetAddress;
          import javax.mail.internet.MimeMessage;
          public class SendMailBean {
          ??? private String form;
          ??? private String to;
          ??? private String hostName;
          ??? private String port;
          ??? private String userName;
          ??? private String password;
          ??? private String subject;
          ??? private String body;
          ??? public String getBody() {
          ??????? return body;
          ??? }
          ??? public void setBody(String body) {
          ??????? this.body = body;
          ??? }
          ??? public String getSubject() {
          ??????? return subject;
          ??? }
          ??? public void setSubject(String subject) {
          ??????? this.subject = subject;
          ??? }
          ??? public String getForm() {
          ??????? return form;
          ??? }
          ??? public void setForm(String form) {
          ??????? this.form = form;
          ??? }
          ??? public String getHostName() {
          ??????? return hostName;
          ??? }
          ??? public void setHostName(String hostName) {
          ??????? this.hostName = hostName;
          ??? }
          ??? public String getPassword() {
          ??????? return password;
          ??? }
          ??? public void setPassword(String password) {
          ??????? this.password = password;
          ??? }
          ??? public String getPort() {
          ??????? return port;
          ??? }
          ??? public void setPort(String port) {
          ??????? this.port = port;
          ??? }
          ??? public String getTo() {
          ??????? return to;
          ??? }
          ??? public void setTo(String to) {
          ??????? this.to = to;
          ??? }
          ??? public String getUserName() {
          ??????? return userName;
          ??? }
          ??? public void setUserName(String userName) {
          ??????? this.userName = userName;
          ??? }
          ??? public boolean sendMail(){
          ????????? Properties props=new Properties();
          ??????? //? props.put("mail.smtp.protocol","smtp");
          ????????? props.put("mail.smtp.host",hostName);
          ????????? props.put("mail.smtp.auth","true");
          ????????? props.put("mail.smpt.port",port);????
          ????????? Session mailsession=Session.getInstance(props,null); //得到一個(gè)發(fā)送郵件的會(huì)話
          ?????????
          ????????? Message msg=new MimeMessage(mailsession);
          ????????? try{
          ?????????? msg.setFrom(new InternetAddress(this.getForm()));
          ?????????? msg.setRecipients(Message.RecipientType.TO,InternetAddress.parse(this.getTo()));
          ?????????? msg.setSubject(this.getSubject());
          ?????????? msg.setSentDate(new Date());
          ?????????? msg.setText(this.getBody());
          ?????????? Transport transport = mailsession.getTransport("smtp");
          ?????????? transport.connect(this.getHostName(),this.getUserName(),this.getPassword());
          ?????????? transport.sendMessage(msg,msg.getRecipients(Message.RecipientType.TO));
          ????????? // System.out.println("郵件以成功發(fā)送到dushengjun@gmail.com");
          ?????????? transport.close();
          ?????????? return true;
          ????????? }catch(Exception e)
          ????????? {
          ????????????? System.out.println("產(chǎn)生異常:"+e);
          ????????????? return false;
          ????????? }
          ??? }
          }
          ?
          JavaMailApp .java
          package adu.com.kingsoft;
          import java.util.Date;
          import java.util.Properties;
          public class JavaMailApp {
          ???
          ??? /**
          ???? * @param args
          ???? */
          ??? public static void main(String[] args) {
          ?????? System.out.println("正在準(zhǔn)備發(fā)送.....");
          ?????? SendMailBean smb=new SendMailBean();
          ?????? smb.setUserName("dushengjun");
          ?????? smb.setForm("dushengjun@kingsoft.net");
          ?????? smb.setHostName("mail.kingsoft.net");
          ?????? smb.setPassword("***************");
          ?????? smb.setPort("25");
          ?????? smb.setTo("dushengjun@gmail.com");
          ?????? smb.setSubject("你好");
          ?????? smb.setBody("你好 Java");
          ?????? if(smb.sendMail())
          ?????? System.out.println("發(fā)送成功");
          ?????? else
          ?????????? System.out.println("發(fā)送失敗");
          ??? }
          }
          同時(shí)將如下的包加到classpath中:
          activation.jar,dsn.jar,imap.jar,mailapi.jar,pop3.jar,smtp.jar
          可以測(cè)試了,運(yùn)行一下JavaMailApp 吧
          ?
          2.Delphi的電子郵件客戶端實(shí)現(xiàn)
          ?
          unit Unit1;
          interface
          uses
          ? Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
          ? Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
          ? IdTCPClient, IdMessageClient, IdSMTP, IdMessage, ComCtrls;
          type
          ? TForm1 = class(TForm)
          ??? idSMTP: TIdSMTP;
          ??? Button1: TButton;
          ??? idMessage: TIdMessage;
          ??? letter_subject: TEdit;
          ??? me_content: TRichEdit;
          ??? Label1: TLabel;
          ??? Label2: TLabel;
          ??? Label3: TLabel;
          ??? receiver_address: TEdit;
          ??? Label4: TLabel;
          ??? me_address: TEdit;
          ??? me_pwd: TLabel;
          ??? mypassword: TEdit;
          ??? Label5: TLabel;
          ??? me_port: TEdit;
          ??? myHostName: TEdit;
          ??? Label6: TLabel;
          ??? Edit1: TEdit;
          ??? Label7: TLabel;
          ??? Button2: TButton;
          ??? OpenDialog1: TOpenDialog;
          ??? procedure Button1Click(Sender: TObject);
          ??? procedure Button2Click(Sender: TObject);
          ? private
          ??? { Private declarations }
          ? public
          ??? { Public declarations }
          ? end;
          var
          ? Form1: TForm1;
          implementation
          {$R *.dfm}
          procedure?? TForm1.Button1Click(Sender:?? TObject);
          var
          ?subject?????????? :String;
          ?rec_address?????? :String;
          ?self_address????? :String;
          ?password????????? :String;
          ?content?????????? :String;
          ?port????????????? :Integer;
          ?hostName????????? :String;
          begin
          subject:=letter_subject.Text;
          rec_address:=receiver_address.Text;
          self_address:=me_address.Text;
          port:=StrToInt(me_port.Text);
          password:=mypassword.text;
          hostName:=myHostName.Text;
          content:=me_content.text;
          ????? if idMessage?? =?? NIL??? then
          ????????? idMessage.Create(Form1);??
          ????? if idSMTP=NIL?? then
          ????????? idSMTP.Create(Form1);
          ??????? TIdAttachment.Create(IdMessage.MessageParts,edit1.Text);
          ?????? IdMessage.Body.Assign(me_content.lines);
          ?????? IdMessage.From.Text := self_address;
          ?????? IdMessage.ReplyTo.EMailAddresses := self_address;
          ?????? IdMessage.Recipients.EMailAddresses := rec_address;
          ?????? IdMessage.Subject := subject;
          ????? idSMTP.AuthenticationType?? :=?? atLogin;
          ???? // idSMTP.AuthenticationType:=atNone;
          ????? idSMTP.Username?? :=?? self_address;
          ????? idSMTP.Password?? :=?? password;
          ????? idSMTP.Host?????????? :=hostName;
          ????? idSMTP.Port?????????? :=?? port;
          ????? try
          ????????? idSMTP.Connect;
          ????????? idSMTP.Send(idMessage);
          ???????? //idSMTP.DisconnectSocket;
          ????????? idSMTP.Disconnect;
          ????????? //idSMTP.Destroy;
          ????????? showmessage('send?? mail?? ok');
          ????? except
          ????????? //idSMTP.Destroy;
          ????????? //idMessage.Destroy;??
          ????????? showmessage('mail?? send?? false');??
          ????? end;??
          ? end;
          procedure TForm1.Button2Click(Sender: TObject);
          begin
          ?if(openDialog1.Execute) then
          ? begin
          ?? Edit1.Text:=opendialog1.FileName;
          ? end;
          end;
          end.
          ?

          ?
          posted @ 2006-09-07 12:39 Dushengjun 閱讀(306) | 評(píng)論 (0)編輯 收藏

          僅列出標(biāo)題  
          主站蜘蛛池模板: 泾源县| 余江县| 聂荣县| 凉城县| 喀喇沁旗| 连江县| 张掖市| 清苑县| 宁德市| 申扎县| 资中县| 防城港市| 岑巩县| 元朗区| 乌兰察布市| 威远县| 台江县| 六枝特区| 巩留县| 兰坪| 东乡县| 友谊县| 子洲县| 辉县市| 五大连池市| 正宁县| 鄂州市| 禄劝| 洛阳市| 曲水县| 新巴尔虎右旗| 旅游| 沂源县| 迭部县| 佛学| 黑龙江省| 崇仁县| 垦利县| 沁阳市| 阜阳市| 綦江县|