2010-04-24 32 views
0

我有一類這樣的:Google App Engine JDO如何定義實例字段?

import java.io.*; 
import java.util.*; 

public class Contact_Info_Entry implements Serializable 
{ 
    public static final long serialVersionUID=26362862L; 
    String Contact_Id,First_Name="",Last_Name="",Company_Name="",Branch_Name="",Address_1="",Address_2="",City="",State="",Zip="",Country="",E_Mail="",Phone; 
    int I_1,I_2; 
    float F_1,F_2; 
    boolean B_1,B_2; 
    GregorianCalendar Date_1, Date_2; 
    Vector<String> A_Vector=new Vector<String>(); 

    public Contact_Info_Entry() { } 

...... 
} 

如果我想將它轉化爲JDO類,做我需要它的自我定義每個字段或者我可以一次做一組?

比如我必須做出這樣的:

@PersistenceCapable(identityType=IdentityType.APPLICATION) 
public class Contact_Info_Entry implements Serializable 
{ 
    @PrimaryKey 
    @Persistent(valueStrategy=IdGeneratorStrategy.IDENTITY) 
    private Long id; 
    @Persistent 
    public static final long serialVersionUID=26362862L; 
    @Persistent 
    String Contact_Id; 
    @Persistent 
    String First_Name; 
    @Persistent 
    String Last_Name; 
...... 
    @Persistent 
    int I_1; 
    @Persistent 
    int I_2; 
... 
    @Persistent 
    float F_1; 
... 
    @Persistent 
    boolean B_1; 
    @Persistent 
    boolean B_2; 
    @Persistent 
    GregorianCalendar Date_1; 
... 
    @Persistent 
    Vector<String> A_Vector=new Vector<String>(); 

    public Contact_Info_Entry() { } 

...... 
} 

或者,我可以在這樣的時間做1組:

@PersistenceCapable(identityType=IdentityType.APPLICATION) 
public class Contact_Info_Entry implements Serializable 
{ 
    @PrimaryKey 
    @Persistent(valueStrategy=IdGeneratorStrategy.IDENTITY) 
    private Long id; 
    @Persistent 
    public static final long serialVersionUID=26362862L; 
    @Persistent 
    String Contact_Id,First_Name,Last_Name=""; 
...... 
    @Persistent 
    int I_1=0,I_2=1; 
... 
    @Persistent 
    float F_1; 
... 
    @Persistent 
    boolean B_1,B_2; 
    @Persistent 
    GregorianCalendar Date_1; 
... 
    @Persistent 
    Vector<String> A_Vector=new Vector<String>(); 

    public Contact_Info_Entry() { } 

...... 
} 

或者,我可以跳過「@Persistent」全部像這樣:

import java.io.*; 
import java.util.*; 

@PersistenceCapable(identityType=IdentityType.APPLICATION) 
public class Contact_Info_Entry implements Serializable 
{ 
    public static final long serialVersionUID=26362862L; 
    String Contact_Id,First_Name="",Last_Name="",Company_Name="",Branch_Name="",Address_1="",Address_2="",City="",State="",Zip="",Country="", 
     E_Mail="",Phone; 
    int I_1,I_2; 
    float F_1,F_2; 
    boolean B_1,B_2; 
    GregorianCalendar Date_1, Date_2; 
    Vector<String> A_Vector=new Vector<String>(); 

    public Contact_Info_Entry() { } 

...... 
} 

哪個正確?

Frank

回答

1

您不需要使用@Persistent註釋每個字段。絕大多數類型(原語,它們的包裝器,String等等)默認是持久的。只需寫出你的班級,因爲你的班級應該是。閱讀 http://www.datanucleus.org/products/accessplatform_1_1/jdo/types.html

你不能堅持靜態字段 http://www.datanucleus.org/products/accessplatform_1_1/jdo/fields_properties.html

@Persistent的一切谷歌的文檔的使用完全是誤導

至於在同一行,以及是否標註適用於多個字段的聲明對於所有人,我假設編譯器會將註釋應用於該行的所有字段,但這與Java有關,以及編譯器如何實現註釋而不是JDO特有的任何註釋。

+1

謝謝。我從上面的url注意到,在SCO類型表中,GregorianCalendar默認不是持久的,所以在我的示例中,我只需要刪除「@Persistent GregorianCalendar Date_1,Date_2;」因爲所有其他字段默認是持久的,我是否正確? – Frank 2010-04-24 13:39:45

+0

這是正確的 – DataNucleus 2010-04-24 15:11:14

相關問題