EJB初学日记(5)

本文对比了两种在Java实体类中定义主键的不同方式,并解释了这两种方式对数据库表结构产生的细微影响。
2007年10月10日 07:09:00

以前看到一本书上写的,有关定义实体BEAN的一些细节,直到今天才知道其中的差别

代码1:

/*
* Test.java
*
* Created on 2006年12月15日, 上午12:06
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/

package com.hadeslee.entity;

import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

/**
* Entity class Test
*
*
@author lbf
*/
@Entity
public class Test implements Serializable {
private Long id;
private String name,sex,age;
private int idCard;
/** Creates a new instance of Test */
public Test() {
}

/**
* Gets the id of this Test.
*
@return the id
*/
@Id
@GeneratedValue(strategy
= GenerationType.AUTO)
public Long getId() {
return this .id;
}

/**
* Sets the id of this Test to the specified value.
*
@param id the new id
*/
public void setId(Long id) {
this .id = id;
}
public void setNameID( int ids){
this .idCard = ids;
}
public int getNameID(){
return idCard;
}

/**
* Returns a hash code value for the object. This implementation computes
* a hash code value based on the id fields in this object.
*
@return a hash code value for this object.
*/
@Override
public int hashCode() {
int hash = 0 ;
hash
+= ( this .id != null ? this .id.hashCode() : 0 );
return hash;
}

/**
* Determines whether another object is equal to this Test. The result is
* true if and only if the argument is not null and is a Test object that
* has the same id field values as this object.
*
@param object the reference object with which to compare
*
@return true if this object is the same as the argument;
* false otherwise.
*/
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if ( ! (object instanceof Test)) {
return false ;
}
Test other
= (Test)object;
if ( this .id != other.id && ( this .id == null || ! this .id.equals(other.id))) return false ;
return true ;
}

/**
* Returns a string representation of the object. This implementation constructs
* that representation based on the id fields.
*
@return a string representation of the object.
*/
@Override
public String toString() {
return " com.hadeslee.entity.Test[id= " + id + " ] " ;
}

public String getName() {
return name;
}

public void setName(String name) {
this .name = name;
}

public String getSex() {
return sex;
}

public void setSex(String sex) {
this .sex = sex;
}

public String getAge() {
return age;
}

public void setAge(String age) {
this .age = age;
}

}

代码2:

/*
* Test.java
*
* Created on 2006年12月15日, 上午12:06
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/

package com.hadeslee.entity;

import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

/**
* Entity class Test
*
*
@author lbf
*/
@Entity
public class Test implements Serializable {
@Id
@GeneratedValue(strategy
= GenerationType.AUTO)
private Long id;
private String name,sex,age;
private int idCard;
/** Creates a new instance of Test */
public Test() {
}

/**
* Gets the id of this Test.
*
@return the id
*/

public Long getId() {
return this .id;
}

/**
* Sets the id of this Test to the specified value.
*
@param id the new id
*/
public void setId(Long id) {
this .id = id;
}
public void setNameID( int ids){
this .idCard = ids;
}
public int getNameID(){
return idCard;
}

/**
* Returns a hash code value for the object. This implementation computes
* a hash code value based on the id fields in this object.
*
@return a hash code value for this object.
*/
@Override
public int hashCode() {
int hash = 0 ;
hash
+= ( this .id != null ? this .id.hashCode() : 0 );
return hash;
}

/**
* Determines whether another object is equal to this Test. The result is
* true if and only if the argument is not null and is a Test object that
* has the same id field values as this object.
*
@param object the reference object with which to compare
*
@return true if this object is the same as the argument;
* false otherwise.
*/
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if ( ! (object instanceof Test)) {
return false ;
}
Test other
= (Test)object;
if ( this .id != other.id && ( this .id == null || ! this .id.equals(other.id))) return false ;
return true ;
}

/**
* Returns a string representation of the object. This implementation constructs
* that representation based on the id fields.
*
@return a string representation of the object.
*/
@Override
public String toString() {
return " com.hadeslee.entity.Test[id= " + id + " ] " ;
}

public String getName() {
return name;
}

public void setName(String name) {
this .name = name;
}

public String getSex() {
return sex;
}

public void setSex(String sex) {
this .sex = sex;
}

public String getAge() {
return age;
}

public void setAge(String age) {
this .age = age;
}

}


代码1和代码2唯一的差别就是@Id的注释地方不同了

同样是注释主键,当在直接用在变量上注释时,如果其它的成员变量没有指定名字,则数据库生成的表的各列名字将以定义的成员变量的变量名为准

当用在getter方法注释时,则数据库生成的表的各列名字将取getXXXX的XXXX名字,将不再取定义的成员变量名

像上面的例子中,代码1会有IdCard这一列,则代码2取而代之的将是NameID这一列.这看上去是一个小小的差别,但是了解了终究是好事.呵 呵.终于懂清楚在get上注释和直接在成员变量上注释的差别了,一般来说是不会有什么差别的,一般标准 的JAVABEAN都是成员变量名和getter,setter签名一样的.

来自:千里冰封



Trackback: http://tb.blog.youkuaiyun.com/TrackBack.aspx?PostId=1817696


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值