上一章我们了解了EJB的生成ID生成策略和基本的save操作.这一章我们研究一下UUID和table策略.
UUID
package com.cnblogs.pojo;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import org.hibernate.annotations.GenericGenerator;
/**
* 定义这是一个entityBean
*
* @author asus
*
*/
@Entity
@Table(name = "person1")// 映射表名称为person
public class Person implements Serializable {// 实现可序列化接口.方便远程调用
/**
* 由于EJB3不支持UUID.所以我们需要用hiberante生成.所以我们需要在类路径下面添加一个包.
* 这个包在JBOSSHOME\common\lib下的hibernate-annotations.jar.把这个包引入就可以了.
*/
@Id
@GeneratedValue(generator="uuidgenerator")
@GenericGenerator(name="uuidgenerator",strategy="uuid")
private String id;
@Column(name = "username", unique = false)
private String name;
@Column(name = "password", nullable = false)
private String passwd;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPasswd() {
return passwd;
}
public void setPasswd(String passwd) {
this.passwd = passwd;
}
}
table映射策略
table策略的好处就是方便数据移植,所有的数据库都支持.
使用table策略.主键必须是int或者Long类型.不能是String类型.
package com.cnblogs.pojo;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.TableGenerator;
/**
* 定义这是一个entityBean
*
* @author asus
*
*/
@Entity
@Table(name = "person")// 映射表名称为person
public class Person implements Serializable {// 实现可序列化接口.方便远程调用
/**
* Table生成策略:
*
* T_ID_GEN表
* -------
* ID_COULMN_NAME NEXT_ID
* User_ID 3
* Person_ID 6
* 不同的类的ID 10
* -------
*/
@Id
@TableGenerator(
name="userGenerator", //定义Table策略的名称
table="T_ID_GEN", //定义在Table策略中使用的表名,数据库会自动建表.
pkColumnName="ID_COLUMN_NAME", //用来区分不同的表的ID的字段名称
pkColumnValue="User_ID", //用来区分不同的表的ID的值 也就是不同的类要有不同的id_coulmn_name
valueColumnName="NEXT_ID", //下一个ID的值所存放的字段的名称
allocationSize=1 //ID的递增值.如果是1 第一条数据的ID就是1.第2条是2.
//如果值为2,第一条数据是1,第2条是3,第3条是5
)
@GeneratedValue(strategy=GenerationType.TABLE,generator="userGenerator")
private int id;
@Column(name = "username", unique = false)
private String name;
@Column(name = "password", nullable = false)
private String passwd;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPasswd() {
return passwd;
}
public void setPasswd(String passwd) {
this.passwd = passwd;
}
}
以上就是关于UUID和TABLE策略.下一章是关于属性映射.