夢開始的地方

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            4 隨筆 :: 0 文章 :: 3 評論 :: 0 Trackbacks

          2006年9月7日 #

           Hibernate 的 一對一因映射關系,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表時,同時更新表mark表內容,而且不使用共享主鍵,每個表都有獨立的主鍵,我這樣配置時,始終報錯,希望高手指點~在線等
          posted @ 2006-10-17 18:42 Dushengjun 閱讀(371) | 評論 (0)編輯 收藏

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

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

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



          代碼如下:
          Unit1.pas(對應于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(對應于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.
          這樣我們實現了一個簡單的記事本程序,運行結果如下圖:


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


          然后,我們將工程保存,并生成最終的EXE文件,然后我們在Windows系統目錄任意創建一個文件,
          如下圖ResumeAction.java文件

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

          然后將它的打開方式設置成我們自己的可執行程序
          ???????????????????????????????????

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

          程序的核心就是paramStr函數,它獲得了系統接口,得到了當前的文件名稱!

          點擊下載

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

          ?????? Spring是當前比較流行的基于Java語言的MVC框架,所謂框架也就是它已經實現好了諸多東西,使java開發人員能把精力盡量放在業務邏輯上.
          ?????? Spring技術的特點是IOC, 即反向注入,主要應用的是XML技術和POJO(簡單Java對象),Spring要達到的目的其實很簡單,就是盡量簡化原來Java中的地層數據訪問的問題,眾所周知,傳統的使用Java訪問地層數據庫的方法是使用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);
          ???????? //實現業務邏輯的代碼
          ???????????????????System.out.println("產生異常:"+e);
          ????????? }
          可以看到為了訪問數據庫,我們需要這么多多余的模式的代碼,而且又要拋出不同的異常,代碼可維護性比較差,而且不利于開發人員把精力投放到最終的業務邏輯上.上邊的功能如果選擇使用Spring實現,那就變得的非常簡單了:
          ??<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文件,然后在真正使用數據庫時,用
          ????? ApplicationContext?? ctx=new?? FileSystemXmlApplicationContext("beans.xml");
          ??????? DriverManagerDataSource ds=(DriverManagerDataSource)ctx.getBean("datasource");
          兩條語句完成數據源的獲得,這就簡化掉了相當多的模式代碼,讓我們更加關心業務邏輯的實現了~?
          ?????
          posted @ 2006-09-11 13:16 Dushengjun 閱讀(956) | 評論 (3)編輯 收藏

          ??? 最近兩天,很巧,又寫delphi的電子郵件客戶端,還寫了Java的電子郵件發送的小程序,一個是工作需要,另一個則是幫朋友的忙,有點巧.
          1.Java的電子有件發送程序
          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); //得到一個發送郵件的會話
          ?????????
          ????????? 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("郵件以成功發送到dushengjun@gmail.com");
          ?????????? transport.close();
          ?????????? return true;
          ????????? }catch(Exception e)
          ????????? {
          ????????????? System.out.println("產生異常:"+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("正在準備發送.....");
          ?????? 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("發送成功");
          ?????? else
          ?????????? System.out.println("發送失敗");
          ??? }
          }
          同時將如下的包加到classpath中:
          activation.jar,dsn.jar,imap.jar,mailapi.jar,pop3.jar,smtp.jar
          可以測試了,運行一下JavaMailApp 吧
          ?
          2.Delphi的電子郵件客戶端實現
          ?
          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 閱讀(305) | 評論 (0)編輯 收藏

          主站蜘蛛池模板: 安福县| 尼勒克县| 莱州市| 杂多县| 扎赉特旗| 历史| 游戏| 辽宁省| 黔西县| 容城县| 金寨县| 崇阳县| 东丽区| 招远市| 蒙城县| 青浦区| 利津县| 柘荣县| 龙南县| 包头市| 德惠市| 台东市| 镇坪县| 永顺县| 太仆寺旗| 海淀区| 潼南县| 宁远县| 柳林县| 剑川县| 土默特右旗| 正蓝旗| 大邑县| 五河县| 邵阳县| 镇远县| 西畴县| 隆子县| 三穗县| 亚东县| 南溪县|