EJB之JPA(UUID与TABLE影射策略)
上一章我们了解了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策略.下一章是关于属性映射.