2012-08-09 68 views
0

假设我有一类这样的如何将Java引用类型映射到数据库列类型

@Entity 
public class Customer implements Serializable { 
    private int id; 
    private String firstName; 
    private String lastName; 
    private Referee referee; 
    private Collection<Address> addresses; 
    private Collection<Account> accounts; 
    ..... 
} //end of class Customer 

@Entity 
public class Referee implements Serializable { 
    private int id; 
    private String name; 
    private String comments; 
    .... 
} //end of class Referee 

@Entity 
public class Account implements Serializable { 
    private int id; 
    private double balance; 
    private String accountType; 
    ... 
} 

@Entity 
public class Address implements Serializable { 
    private int id; 
    private String addressLine; 
    private String country; 
    private String postCode; 
    ... 
} 

现在,如果我在名客户的数据库做表。那么我将使用什么类型的Referee,Collection<Address>Collection<Account>。如果我使用列ID,那么它的类型将是INTEGER,字符串更改为VARCHAR,但是我用于收集和裁判的类型是什么? 谢谢

回答

0

裁判字段将是数据库中的整数,因为它必须存储类型为int的Referee类的id字段。

集合也将基于id的类。对于1至N关系,可以使用N侧的列。因此,如果客户拥有多个地址,但地址永远不会超过一个客户,那么您可以在地址表中存储客户的ID以存储关系。如果它是N到M,您将需要一个额外的所谓的连接表,存储客户ID +地址ID的paires。账户同样的故事。

顺便说一句,许多JPA提供者可以为你生成表格,看看他们的手册如何。

如果你是JPA的新手,你应该得到一本关于它的好书。一些教程不会给你足够的深度知识以使用它。我个人读过Pro EJB 3:Java持久性API。

在学习JPA时,NetBeans IDE可以提供很好的帮助,它会给你很多有用的提示,用于注释你的实体。例如,它会注意到您的收藏需要额外的注释,并会为您提供一对多或多对多以及单向或双向的选择。

+0

我在下面的书EJB3开发者指南。另外我正在学习本教程[链接] http://netbeans.dzone.com/articles/develop-java-ee-6-app-jsf2?page=0.2。是的,我是JPA的新手。我有许多客户和地址之间的关系,以及客户和客户之间的关系。 – Basit 2012-08-09 11:16:24

相关问题