EJB3.0实体及其几种连接关系

如果将一个类定义为实体类,则该类需符合以下要求:

1,必须用注释 javax.persistence.Entity  声明该类;

2,该类必须有一个 public 或者 protected 的 无参构造函数,也可以有其他构造函数,但前者是必须的,后者是可选的;

3,该类以及该类中的方法,持久成员变量一定不能声明为 fianl;

4,如果该类的实例需要作为值进行传递(如通过会话bean的 remote接口定义的方法进行传递),则该类必须实

     现 Serializable 接口;

5,实体类可能继承实体类和非实体类,但该实体类必须继承实体类;

6,实体类中的持久成员变量必须声明为 private,protected 或者 package-private,并且只能通过该实体类中的成员方法

     访问持久成员变量。

 

 

可以作为实体类持久成员变量的类型如下:

1,java 的 8 种基本类型;

2,java.lang.String;

其他 serializable 类型:

3,8 种基本类型的包装类型;

4,java.math.BigInteger

5,java.math.BigDecimal

6,java.util.Date

7,java.util.Calendar

8,java.sql.Date

9,java.sql.Time

10,java.sql.TimeStamp

11,自定义的 serializable 类型

12,byte[]

13,Byte[]

14,char[]

15,Character[]

16,枚举类型

17,其他实体类或实体类的集合

18,嵌入类

 

 

实体类集合可用的集合类型如下:

1,java.util.Collection

2,java.util.Set

3,java.util.List

4,java.util.Map

 

 

可作为实体类主键的类型如下:

1,基本类型及其包装类;

2,java.lang.String;

3,java.util.Date (映射 temporal 类型必须为 DATE)

4,java.sql.Date

 

 

主键类的要求如下:

1,类的修饰符必须为 public;

2,类的属性必须为 private,protected 或者 package-private;

3,类必须有一个 public 的默认构造函数;

4,类必须重写 hashCode() 和 equals(Object other) 方法;

5,类必须 serializable;

6,组合主键必须描述和映射到实体类的多个域或属性上,或者映射到嵌入类;

7,主键类的属性的属性名和属性类型必须与映射到的实体类的对应属性相同;

 

 

实体之间的连接关系:

实体之间有四种连接关系:

one-to-one, one-to-many, many-to-one, 和 many-to-many,并且实体之间的这些关系可以是双向关系或单向关系。

关系的方向可以是双向的或单向的。双向关系有关系的拥有端和逆端,单向关系仅仅有关系的拥有端。

 

实体双向关系必须符合以下要求:

1,双向关系的逆端必须指定 @OneToOne@OneToMany, 或 @ManyToMany 注释中的 mappedBy 属性,且该属性指定的

     值必须与关系拥有端实体类指示的逆端成员变量名字相同;

2,many-to-one 双向关系的 many 端一定不能指定 mappedBy 属性,因为该端一定是双向关系的拥有端;

3,one-to-one 双向关系中 关系拥有端是包含外键的实体类;

4,many-to-many  双向关系中 关系拥有端和关系逆端可以任意指定。

 

单向关系就是只在关系一端的实体类上指定关系。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值