3:数据库序列Sequence
像Oracle这种数据库支持序列生成主键的策略,那么就可以使用JPA的Sequence作为主键的生成策略。代码如下:
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.SEQUENCE)
public Integer getId() {
return id;
}
|
MySql暂时不支持序列这种主键策略,所以遇到MySql这种数据库的时候,不能使用SEQUENCE主键策略。
4:Identity生成器
有些数据库支持Identity字段作为生成器,MS SQL支持,主键创建Identity,实体标注如下:
@Id
@Column(name = "id")
@GeneratedValue(strategy=GenerationType.IDENTITY)
public Integer getId() {
return id;
}
|
单字段主键的问题,我们暂时先讨论这里,下面我们一起看看复合主键。
表结构如下图所示:
根据这个表对应生成的实体对下代码如下:
package eo;
import javax.persistence.Column;
import javax.persistence.Embeddable;
/**
* TbStudentsId entity. @author MyEclipse Persistence Tools
*/
@Embeddable
public class TbStudentsId implements java.io.Serializable {
// Fields
private String name;
private String no;
// Constructors
/** default constructor */
public TbStudentsId() {
}
/** full constructor */
public TbStudentsId(String name, String no) {
this.name = name;
this.no = no;
}
// Property accessors
@Column(name = "name", nullable = false)
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
@Column(name = "no", nullable = false)
public String getNo() {
return this.no;
}
public void setNo(String no) {
this.no = no;
}
public boolean equals(Object other) {
if ((this == other))
return true;
if ((other == null))
return false;
if (!(other instanceof TbStudentsId))
return false;
TbStudentsId castOther = (TbStudentsId) other;
return ((this.getName() == castOther.getName()) || (this.getName() != null
&& castOther.getName() != null && this.getName().equals(
castOther.getName())))
&& ((this.getNo() == castOther.getNo()) || (this.getNo() != null
&& castOther.getNo() != null && this.getNo().equals(
castOther.getNo())));
}
public int hashCode() {
int result = 17;
result = 37 * result
+ (getName() == null ? 0 : this.getName().hashCode());
result = 37 * result + (getNo() == null ? 0 : this.getNo().hashCode());
return result;
}
}
|
- 大小: 28.8 KB
分享到:
相关推荐
### JPA主键生成策略详解 #### 一、概述 持久化对象的主键生成机制在JPA(Java Persistence API)中占据着重要的位置。它不仅关乎数据的唯一标识符如何确定,还与数据的存储效率及应用逻辑紧密相关。JPA通过`@...
在EJB(Enterprise JavaBeans)框架中,JPA被广泛使用,提供了一种面向对象的方式来处理数据库交互。本篇笔记主要聚焦于JPA的关联映射,这是JPA中一个重要的概念,用于定义实体之间的关系。 关联映射允许我们将...
### JPA学习笔记-EJB-02JPA属性注解 #### 一、引言 在上一篇文章中,我们简要介绍了Java Persistence API (JPA)的基础知识,包括它的基本部署和操作流程,从而让我们对JPA有了初步的认识。本文将继续深入探讨JPA的...
### JPA实体对象状态 #### 一、实体对象的状态分类 在Java Persistence API (JPA) 中,实体对象的状态管理是实现数据持久化的基础之一。根据实体对象与实体管理器(EntityManager)之间的交互关系,实体对象可以...
### JavaEE5学习笔记05-EJB之会话Bean总结 #### EJB(Enterprise JavaBeans)简介 EJB(Enterprise JavaBeans)是Java EE平台的一部分,用于开发和部署可重用的服务组件。EJB规范定义了如何编写、部署以及管理企业...
### JPA学习文档知识点概述 #### 1. JPA简介 - **定义**: JPA (Java Persistence API) 是由Sun官方提出的一种Java持久化规范,旨在简化Java应用程序中关系型数据库的操作过程。其核心目标是统一现有的ORM (Object-...
### JPA 学习笔记详解 #### 一、JPA 概述 Java Persistence API (JPA) 是 Sun 公司提出的一种 Java 持久层标准,它为 Java 开发者提供了一种对象关系映射 (ORM) 的工具来管理 Java 应用程序中的关系型数据。JPA ...
总结来说,本文档涵盖了Spring JPA的基础配置和使用方法,包括所需的依赖库、持久化配置文件`persistence.xml`的编写、实体类的定义以及实体间关系的映射。通过这些知识点的学习,可以更好地理解和掌握Spring JPA的...
### EJB学习笔记4:深入理解实体与JPA #### 实体的概念与作用 实体,在企业级Java开发中,特别是EJB(Enterprise JavaBeans)框架下,指的是具有持久化能力的POJO(Plain Old Java Object)类。不同于实体Bean...
在深入探讨《ejb学习笔记》这一主题之前,我们首先需要理解什么是EJB(Enterprise JavaBeans)。EJB是Java平台为企业级应用开发提供的一套组件模型,它属于J2EE(Java 2 Platform, Enterprise Edition)的一部分,...
EJB 3.0 版本引入了许多改进,简化了API,降低了学习曲线,使其更易于使用。 在MVC(模型-视图-控制器)架构中,EJB 主要用于开发业务层。它负责处理数据和业务逻辑,而视图层则展示数据,控制器则协调视图和模型...
**EJB3.0 学习笔记** EJB(Enterprise JavaBeans)是Java EE平台中的核心组件,用于构建可扩展的、安全的、事务处理的分布式应用程序。EJB3.0是EJB的一个重大更新,引入了许多改进,使得开发过程更为简化,降低了...
- `@GeneratedValue`: 控制主键生成策略,如自动递增或UUID生成。 3. **会话Bean(Session Beans)**: - `@Stateless`: 无状态会话Bean,适用于不保存客户端上下文的情况,服务器可以自由地复用和销毁实例。 - ...
【EJB学习笔记】 EJB,全称为Enterprise Java Beans,是Java平台上的一个标准,用于开发和部署服务器端的分布式组件。它基于Java语言,为创建高效能、安全且可扩展的企业级应用提供了框架。EJB规范由Java ...
从最初的EJB 1.0到EJB 2.x,再到EJB 3.0,其复杂性和学习曲线逐渐降低。EJB 3.0引入了注解,极大地简化了代码,并且与JPA、JSF等其他Java EE技术更好地集成。最新的EJB 3.2版本继续优化了API,提高了开发效率。 **...