Java持久化API(JPA)开发中如何使用实体
1个回答
展开全部
二、字段和属性
任何一个实体的状态都是由它的字段值或者属性值所定义的。当进行检索或者存储的实体的时候,你能决定 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
@EntitypublicclassPlayer implements Serializable {privateLong id;privateString lastName;privateString firstName;privateintjerseyNumber;privateString lastSpokenWords;/** Creates a new instance of Player*/publicPlayer() {}/*** Gets the id of this Player. The persistence provider should
* autogenerate a unique id for new player objects.
* @return the id*/@Id@GeneratedValuepublicLong getId() {returnthis
.id;}/*** Sets the id of this Player to the specified value.
* @param id the new id*/publicvoidsetId(Long id) {this
.id=id;}publicString getLastName() {returnlastName;}publicvoidsetLastName(String name) {lastName=name;}//
...//some code excluded for brevity//
.../*** Returns the last words spoken by this player.
* We don't want to persist that!*/@TransientpublicString getLastSpokenWords() {returnlastSpokenWords;}publicvoidsetLastSpokenWords(String lastWords) {
lastSpokenWords=lastWords;}//
...//some code excluded for brevity//
...}实体的主键是 id属性,并且该属性正确的被 Id声明。主键得值可以自动生成。自动生成id的行为还没有完全被指定,但是如果你增加对主键的 GeneratedValue声明的话,就会自动产生一个键。
@Id@GeneratedValuepublicLong getId() {
通常是明确的标识属性和字段,而不应该把它们设置为持久化的。使用声明Transient来标识过渡(transient)属性。你也可以使用语言关键字transient来标识字段。属性和字段被Transient所声明后,将不会是在数据库中持久化存储。上面的Player代码事例中,你会注意到
lastSpokenWords属性使用了Transient声明。字段被Java语言关键字所标识的话,将不会被串行化或者持久化。
任何一个实体的状态都是由它的字段值或者属性值所定义的。当进行检索或者存储的实体的时候,你能决定 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
@EntitypublicclassPlayer implements Serializable {privateLong id;privateString lastName;privateString firstName;privateintjerseyNumber;privateString lastSpokenWords;/** Creates a new instance of Player*/publicPlayer() {}/*** Gets the id of this Player. The persistence provider should
* autogenerate a unique id for new player objects.
* @return the id*/@Id@GeneratedValuepublicLong getId() {returnthis
.id;}/*** Sets the id of this Player to the specified value.
* @param id the new id*/publicvoidsetId(Long id) {this
.id=id;}publicString getLastName() {returnlastName;}publicvoidsetLastName(String name) {lastName=name;}//
...//some code excluded for brevity//
.../*** Returns the last words spoken by this player.
* We don't want to persist that!*/@TransientpublicString getLastSpokenWords() {returnlastSpokenWords;}publicvoidsetLastSpokenWords(String lastWords) {
lastSpokenWords=lastWords;}//
...//some code excluded for brevity//
...}实体的主键是 id属性,并且该属性正确的被 Id声明。主键得值可以自动生成。自动生成id的行为还没有完全被指定,但是如果你增加对主键的 GeneratedValue声明的话,就会自动产生一个键。
@Id@GeneratedValuepublicLong getId() {
通常是明确的标识属性和字段,而不应该把它们设置为持久化的。使用声明Transient来标识过渡(transient)属性。你也可以使用语言关键字transient来标识字段。属性和字段被Transient所声明后,将不会是在数据库中持久化存储。上面的Player代码事例中,你会注意到
lastSpokenWords属性使用了Transient声明。字段被Java语言关键字所标识的话,将不会被串行化或者持久化。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询