上次简单介绍了JPA的基本部署和操作过程,算是认识JPA了,下面我们继续学习JPA吧,我们从JPA的注解标记@Table和@Column开始逐渐介绍。
@Table标签介绍:
@Table标签和@Entity一样都是标记在类的前面,这个标签代表了该标记的实体类与数据库中表的关联。
如下实体代码:
package eo;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.UniqueConstraint;
/**
* 映射到tb_contact表<br>
* name字段和email字段的值不能同时相同<br>
* ejbjpa是对应的数据库名
*
* @author 刘岩
*/
@Entity
@Table(name = "tb_contact", schema = "ejbjpa", uniqueConstraints = { @UniqueConstraint(columnNames = {
"name", "email" }) })
public class ContactEO implements Serializable {
public ContactEO() {
super();
}
@Id
private Integer id;
@Column
private String name;
@Column
private String email;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
|
注释对于@Table标签的说明已经很明白了,name说明了数据库的表名,schema是数据库的名称,uniqueConstraints是唯一性限制,里面通过@UniqueConstraint注解限制了name和email必须不能同时相同的限制。
此类所生成的sql脚本为:
CREATE TABLE `NewTable` (
`id` int(11) NOT NULL ,
`name` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`email` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
PRIMARY KEY (`id`),
UNIQUE INDEX `name` USING BTREE (`name`) ,
UNIQUE INDEX `email` USING BTREE (`email`)
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
ROW_FORMAT=COMPACT
;
|
下面介绍,也是最常用的@Column注解,它就是标注在实体类的属性上或者getXXX()前面的,主要就是映射实体属性和数据库的字段的。
一般的字段注解就不用说了,上面的代码已经展现了,我们用一些其他的注解属性看看,代码如下:
@Column(name = "mess", nullable = false, length = 300, unique = false)
private String message;
@Column(precision = 12, scale = 2)
private Double price;
@Lob
@Basic(fetch = FetchType.LAZY)
@Column(name = "picture")
private byte[] picture;
|
message属性映射到了数据库的mess字段,不能为空,长度为300字符,并且默认的就是可以不唯一;price是双精度字段,长度为12,精度为2(像9187219100.22是有效的值);picture是存储二进制文件的字段,一般存储图片这种流信息,所以在加载策略上也用到了@Basic(fetch = FetchType.LAZY),代表懒加载,提高查询效率。
那么这3个新的属性在sql语句中create的体现就是:
`mess` varchar(300) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
`price` double(12,2) NULL DEFAULT NULL ,
`picture` blob NULL DEFAULT NULL ,
|
下面我们自己写一个DAO类来操作ContactEO这个实体。
DAO接口和实现类代码如下:
接口
package dao;
import javax.ejb.Remote;
import eo.ContactEO;
/**
* ContactEO操作接口
* @author 刘岩
*/
@Remote
public interface IContactService {
public void saveContact(ContactEO contactEO);
}
|
实现类
package dao.impl;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import dao.IContactService;
import eo.ContactEO;
/**
* 实现类
* @author 刘岩
*/
@Stateless
public class ContactServiceImpl implements IContactService {
@PersistenceContext(unitName = "JPAEJBPU")
private EntityManager entityManager;
@Override
public void saveContact(ContactEO contactEO) {
entityManager.persist(contactEO);
}
}
|
- 大小: 94.3 KB
分享到:
相关推荐
### JPA学习笔记-EJB-02JPA属性注解 #### 一、引言 在上一篇文章中,我们简要介绍了Java Persistence API (JPA)的基础知识,包括它的基本部署和操作流程,从而让我们对JPA有了初步的认识。本文将继续深入探讨JPA的...
在实体类代码中,我们可以看到如何使用JPA注解来实现这些关联映射。例如,在UxAdmin类中,使用`@ManyToMany`注解定义了与UxRole的多对多关系,`@JoinTable`注解指定了中间表的名称和外键列。类似地,UxRole类中也...
JPA通过`@GeneratedValue`注解来指定主键生成策略,提供了多种灵活的方案供开发者选择。 #### 二、单字段主键类型生成策略 在JPA中,单字段主键类型的生成策略主要包括以下四种: 1. **AUTO(自动自增生成)** ...
1. **实体监听器注解** 实体监听器通过一系列注解来定义,包括: - `@PrePersist`:在持久化实体之前调用。 - `@PostPersist`:在持久化实体之后调用。 - `@PreUpdate`:在更新实体之前调用。 - `@PostUpdate`...
### JPA 学习笔记详解 #### 一、JPA 概述 Java Persistence API (JPA) 是 Sun 公司提出的一种 Java 持久层标准,它为 Java 开发者提供了一种对象关系映射 (ORM) 的工具来管理 Java 应用程序中的关系型数据。JPA ...
### JPA学习文档知识点概述 #### 1. JPA简介 - **定义**: JPA (Java Persistence API) 是由Sun官方提出的一种Java持久化规范,旨在简化Java应用程序中关系型数据库的操作过程。其核心目标是统一现有的ORM (Object-...
### Spring 使用 JPA 的知识点详解 #### 一、Spring与JPA简介 Spring框架与Java Persistence API (JPA)的结合...通过这些知识点的学习,可以更好地理解和掌握Spring JPA的使用方法,为后续的实际开发打下坚实的基础。
在深入探讨《ejb学习笔记》这一主题之前,我们首先需要理解什么是EJB(Enterprise JavaBeans)。EJB是Java平台为企业级应用开发提供的一套组件模型,它属于J2EE(Java 2 Platform, Enterprise Edition)的一部分,...
**EJB3.0 学习笔记** EJB(Enterprise JavaBeans)是Java EE平台中的核心组件,用于构建可扩展的、安全的、事务处理的分布式应用程序。EJB3.0是EJB的一个重大更新,引入了许多改进,使得开发过程更为简化,降低了...
### EJB学习笔记4:深入理解实体与JPA #### 实体的概念与作用 实体,在企业级Java开发中,特别是EJB(Enterprise JavaBeans)框架下,指的是具有持久化能力的POJO(Plain Old Java Object)类。不同于实体Bean...
EJB 3.0 版本引入了许多改进,简化了API,降低了学习曲线,使其更易于使用。 在MVC(模型-视图-控制器)架构中,EJB 主要用于开发业务层。它负责处理数据和业务逻辑,而视图层则展示数据,控制器则协调视图和模型...
【EJB学习笔记】 EJB,全称为Enterprise Java Beans,是Java平台上的一个标准,用于开发和部署服务器端的分布式组件。它基于Java语言,为创建高效能、安全且可扩展的企业级应用提供了框架。EJB规范由Java ...
1. **EJB组件类型** - **会话bean(Session Beans)**:代表单个客户端的交互,并且可以是无状态或有状态的。无状态会话bean在处理完请求后不会保留任何信息,而有状态会话bean则可以记住客户端的状态。 - **实体...
1. **事务管理**:EJB提供了强大的事务管理能力,可以自动处理事务的ACID属性,确保数据一致性。 2. **安全性**:通过JAAS(Java Authentication and Authorization Service)实现用户身份验证和权限控制,保护应用...