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策略.下一章是关于属性映射.

posted @ 2012-09-15 22:40  宁静致远_  阅读(1788)  评论(0编辑  收藏  举报