当前位置: 首页 > news >正文

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://www.cnblogs.com/-10086/archive/2012/09/15/2687040.html

相关文章:

  • text-overflow:ellipsis溢出显示省略号兼容所有浏览器的解决办法
  • 场景中的物体显示 为BoundingBox
  • PHP程序员最常犯的11个MySQL错误
  • css书写顺序
  • 创建Metro风格的WPF界面
  • java command
  • [转载]详解Cassandra配置文件配置项
  • 编写一个函数比较两个整数大小,但不能使用任何比较操作符
  • gridControl控件显示交叉表
  • linux 的 sem 参数
  • iOS 6编程-在iPhone和iPad上运行的通用应用程序
  • UVA 993 Product of digits
  • 黑马程序员-6 泛型
  • Pair Project 总结 Part1
  • poj 1149(最大流,构图)
  • 【RocksDB】TransactionDB源码分析
  • bootstrap创建登录注册页面
  • CSS居中完全指南——构建CSS居中决策树
  • ES学习笔记(10)--ES6中的函数和数组补漏
  • java第三方包学习之lombok
  • java概述
  • Node.js 新计划:使用 V8 snapshot 将启动速度提升 8 倍
  • Python_OOP
  • Selenium实战教程系列(二)---元素定位
  • spring boot 整合mybatis 无法输出sql的问题
  • vue.js框架原理浅析
  • 个人博客开发系列:评论功能之GitHub账号OAuth授权
  • 汉诺塔算法
  • 猫头鹰的深夜翻译:JDK9 NotNullOrElse方法
  • 每天10道Java面试题,跟我走,offer有!
  • 数据仓库的几种建模方法
  • 一些css基础学习笔记
  • 一些关于Rust在2019年的思考
  • 在Docker Swarm上部署Apache Storm:第1部分
  • ​LeetCode解法汇总307. 区域和检索 - 数组可修改
  • ​LeetCode解法汇总518. 零钱兑换 II
  • ​sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块​
  • ​无人机石油管道巡检方案新亮点:灵活准确又高效
  • #FPGA(基础知识)
  • $.ajax中的eval及dataType
  • %3cli%3e连接html页面,html+canvas实现屏幕截取
  • (1)(1.13) SiK无线电高级配置(五)
  • (10)ATF MMU转换表
  • (11)工业界推荐系统-小红书推荐场景及内部实践【粗排三塔模型】
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (Pytorch框架)神经网络输出维度调试,做出我们自己的网络来!!(详细教程~)
  • (附源码)springboot课程在线考试系统 毕业设计 655127
  • (附源码)ssm经济信息门户网站 毕业设计 141634
  • (欧拉)openEuler系统添加网卡文件配置流程、(欧拉)openEuler系统手动配置ipv6地址流程、(欧拉)openEuler系统网络管理说明
  • (转)原始图像数据和PDF中的图像数据
  • *** 2003
  • .NET CLR基本术语
  • .Net IE10 _doPostBack 未定义
  • .NET/C# 项目如何优雅地设置条件编译符号?
  • .NET/C# 在 64 位进程中读取 32 位进程重定向后的注册表