二、字段和属性
任何一个实体的状态都是由它的字段值或者属性值所定义的。当进行检索或者存储的实体的时候,你能决定 Java持久化AP是否使用你的变量字段或者 getters 和 setters 方法。如果你声明了那些事例变量,持久化方案提供工具(persistence provider)将直接访问事例变量。如果你声明为 JavaBean风格的 getter 和setter方法,持久化方案提供工具将会在加载或者存储这些持久化状态时使用getter 和setter方法。你应该选择其中一种风格,目前的规范中,混合使用者这两种风格是不合法的。目前的持久化规范给我们演示了一些例子,这些例子中使用的是getters 和 setters 方法,因此这篇文章将沿用这个约定。
你可以使用大多数的基本类型作为你的持久化字段,包括基本类型,基本类型包装,字符串和许多其它的类型。你应该查一下该API规范,看看它所允许的字段类型。
所有的实体必须要有一个主键。主键是单独唯一的字段或者多字段组合标识。本文使用的单个字段主键,当然更具需要,你可以将多个字段作为你的主键。标识单个字段主键用 Id声明。
主键字段必须是下面类型中的一种:
基本类型(如 int、long等)
基本类型的包装(如nteger、 Long等)
java.lang.String
java.util.Date
java.sql.Date
下面的代码事例定义了 Player类。这个例子演示了你如何使用四种不同的声明:Entity,Id, GeneratedValue 和Transient。
通常是明确的标识属性和字段,而不应该把它们设置为持久化的。使用声明 Transient来标识过渡( transient)属性。你也可以使用语言关键字 transient来标识字段。属性和字段被 Transient所声明后,将不会是在数据库中持久化存储。上面的 Player代码事例中,你会注意到 lastSpokenWords属性使用了Transient声明。字段被Java语言关键字所标识的话,将不会被串行化或者持久化。字段或者属性以 Transient标识将不会在数据库中持久化。
来自:http://www.qqread.com/java/2007/11/w381044.html @Entity public class Player implements Serializable { private Long id; private String lastName; private String firstName; private int jerseyNumber; private String lastSpokenWords; /** Creates a new instance of Player */ public Player() { } /** * Gets the id of this Player. The persistence provider should * autogenerate a unique id for new player objects. * @return the id */ @Id @GeneratedValue public Long getId() { return this.id; } /** * Sets the id of this Player to the specified value. * @param id the new id */ public void setId(Long id) { this.id = id; } public String getLastName() { return lastName; } public void setLastName(String name) { lastName = name; } // ... // some code excluded for brevity // ... /** * Returns the last words spoken by this player. * We don't want to persist that! */ @Transient public String getLastSpokenWords() { return lastSpokenWords; } public void setLastSpokenWords(String lastWords) { lastSpokenWords = lastWords; } // ... // some code excluded for brevity // ... }
实体的主键是 id属性,并且该属性正确的被 Id声明。主键得值可以自动生成。自动生成id的行为还没有完全被指定,但是如果你增加对主键的 GeneratedValue声明的话,就会自动产生一个键。
@Id @GeneratedValue public Long getId() {
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
相关专题
- Java环境安装配置 (5668篇文章)
- Java编程开发手册 (8321篇文章)
- Wlan组网----家庭专题 (4217篇文章)
- Java API (108篇文章)
- Java基础开发篇 (583篇文章)
- 精通Hibernate之映射继承关系(四) (0次浏览)
- 何不将Java与.NET合二为一? (0次浏览)
- Hibernate的JNDI名称绑定分析 (0次浏览)
- 精通Hibernate之映射继承关系(一) (0次浏览)
- 精通Hibernate之映射继承关系(二) (0次浏览)
- 美国计算机教授语出惊人:Java对学生有害 (0次浏览)
- JDK 6 JRE 6 Update 4 (0次浏览)
- 三步教你改善Java代码质量 (0次浏览)
- Java语言入门 简述Java语言回收机制 (0次浏览)
- 2008年Java开发者最迫切的五个期望 (0次浏览)



