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

转载于:https://my.oschina.net/u/158347/blog/349996

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值