MyEclipse6Java开发中文教程 @ Temporal:如果属性是时间类型,因为数据表对时间类型有更严格的划分,所以必 须指定具体时间类型。在 Javax, persistence TemporalType枚举中定义了3种时间类型 1)DATE:等于 java. sql Date 2)TME:等于 java. sql.Time; 3) TIMESTAMP:等于java.sq. Timestamp 用法示例 @ Column(name BIRTHDAY @Temporal(Tempora/Type DATE) 。同样的这个标注不是必须的,但是它没有默认值,所以必须指定一个取值。 常用的这些标注基本上已经介绍完毕,那么一个最简单的实体定义代码示例如下 @EI public class Myuser implements java. io Serializable i @ld private Integer id; 。在这种情况下,所有的取值都采用默认值,表名和实体名相对应,而变量名及其类型则和 数据库表的列相对应。所以说标注方式大大简化了JPA的开发 为了不使读者疑惑,我们还必须介绍属性标注的两种位置:标注在属性( property)和标 注在变量(fed上。到底采用那种位置,取决于@d标注出现的位置。而且一旦采用了一种 标注方式后,就不能再混合使用了。例如 @ld @Column private Integer id 这种方式就是fed方式,那么所有其它的列定义都应该标在变量上。 而 @|d @Column Public Integer getlo return. 这样的方式就是属性方式。默认情况下,JPA采用的是属性定义的方式,也就是根据方法来 确定有哪些属性 @ Transient:实体bean中所有的非stac非 transient的属性都可以被持久化,除非 你将其注解为@ Transient。所有没有定义注解的属性等价于在其上面添加了@ Basic注解。 虽然默认情况一般都工作的很好,然而实际开发中有一种情况可能会出现:在实体类中提供 了一个算总帐的方法,但是这个总帐属性却没有和数据库的任何列对应,这时候你就可以通 过@ Transient标注使它不会保存到数据库中,类似的也可以这样来不保存其它的属性到数 据库中。例如 @Transient Public double getTota/Cost(.) 其它可以标在属性上的标注还有 @Lob;表示属性将被持久化为Blob或者Cob类型(大数据类型,例如超过10MB的数据), 具体取决于属性的类型。 java. sql Clob, Character,char和 java. lang String这些类型 的属性都被持久化为Cob类型;而 java. sql Blob,Byte,byte和 Serializable类型则被 刘长炯著MyEclipse 6 Java 开发中文教程 11 刘长炯著 @Temporal:如果属性是时间类型,因为数据表对时间类型有更严格的划分,所以必 须指定具体时间类型。在 javax.persistence.TemporalType 枚举中定义了 3 种时间类型: 1) DATE :等于 java.sql.Date; 2) TIME :等于 java.sql.Time; 3) TIMESTAMP :等于 java.sql.Timestamp。 用法示例: @Column(name = "BIRTHDAY") @Temporal(TemporalType.DATE) 。同样的这个标注不是必须的,但是它没有默认值,所以必须指定一个取值。 常用的这些标注基本上已经介绍完毕,那么一个最简单的实体定义代码示例如下: @Entity public class Myuser implements java.io.Serializable { @Id private Integer id; …. 。在这种情况下,所有的取值都采用默认值,表名和实体名相对应,而变量名及其类型则和 数据库表的列相对应。所以说标注方式大大简化了 JPA 的开发。 为了不使读者疑惑,我们还必须介绍属性标注的两种位置:标注在属性(property)和标 注在变量(field)上。到底采用那种位置,取决于@Id 标注出现的位置。而且一旦采用了一种 标注方式后,就不能再混合使用了。例如: @Id @Column private Integer id; 这种方式就是 field 方式,那么所有其它的列定义都应该标在变量上。 而: @Id @Column Public Integer getId() { return …} 这样的方式就是属性方式。默认情况下,JPA 采用的是属性定义的方式,也就是根据方法来 确定有哪些属性。 @Transient:实体 bean 中所有的非 static 非 transient 的属性都可以被持久化,除非 你将其注解为@Transient。所有没有定义注解的属性等价于在其上面添加了@Basic 注解。 虽然默认情况一般都工作的很好,然而实际开发中有一种情况可能会出现:在实体类中提供 了一个算总帐的方法,但是这个总帐属性却没有和数据库的任何列对应,这时候你就可以通 过@Transient 标注使它不会保存到数据库中,类似的也可以这样来不保存其它的属性到数 据库中。例如: @Transient Public double getTotalCost() {…} 。 其它可以标在属性上的标注还有: @Lob:表示属性将被持久化为 Blob 或者 Clob 类型(大数据类型,例如超过 10MB 的数据), 具体取决于属性的类型。java.sql.Clob,Character[],char[] 和 java.lang.String 这些类型 的属性都被持久化为 Clob 类型;而 java.sql.Blob,Byte[],byte[] 和 Serializable 类型则被