`
suhuanzheng7784877
  • 浏览: 704026 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
Ff8d036b-05a9-33b5-828a-2633bb68b7e6
读金庸故事,品程序人生
浏览量:47744
社区版块
存档分类
最新评论

JPA学习笔记-EJB-02JPA属性注解--1

阅读更多

上次简单介绍了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注解限制了nameemail必须不能同时相同的限制。

此类所生成的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属性注解

    ### JPA学习笔记-EJB-02JPA属性注解 #### 一、引言 在上一篇文章中,我们简要介绍了Java Persistence API (JPA)的基础知识,包括它的基本部署和操作流程,从而让我们对JPA有了初步的认识。本文将继续深入探讨JPA的...

    JPA学习笔记-EJB-04JPA关联映射总结

    在实体类代码中,我们可以看到如何使用JPA注解来实现这些关联映射。例如,在UxAdmin类中,使用`@ManyToMany`注解定义了与UxRole的多对多关系,`@JoinTable`注解指定了中间表的名称和外键列。类似地,UxRole类中也...

    JPA学习笔记-EJB-03JPA主键生成策略总结

    JPA通过`@GeneratedValue`注解来指定主键生成策略,提供了多种灵活的方案供开发者选择。 #### 二、单字段主键类型生成策略 在JPA中,单字段主键类型的生成策略主要包括以下四种: 1. **AUTO(自动自增生成)** ...

    JPA学习笔记-EJB-05JPA实体对象状态和实体对象的高级操作

    1. **实体监听器注解** 实体监听器通过一系列注解来定义,包括: - `@PrePersist`:在持久化实体之前调用。 - `@PostPersist`:在持久化实体之后调用。 - `@PreUpdate`:在更新实体之前调用。 - `@PostUpdate`...

    jpa学习笔记

    ### JPA 学习笔记详解 #### 一、JPA 概述 Java Persistence API (JPA) 是 Sun 公司提出的一种 Java 持久层标准,它为 Java 开发者提供了一种对象关系映射 (ORM) 的工具来管理 Java 应用程序中的关系型数据。JPA ...

    JPA学习文档笔记

    ### JPA学习文档知识点概述 #### 1. JPA简介 - **定义**: JPA (Java Persistence API) 是由Sun官方提出的一种Java持久化规范,旨在简化Java应用程序中关系型数据库的操作过程。其核心目标是统一现有的ORM (Object-...

    spring 使用 Jpa的笔记

    ### Spring 使用 JPA 的知识点详解 #### 一、Spring与JPA简介 Spring框架与Java Persistence API (JPA)的结合...通过这些知识点的学习,可以更好地理解和掌握Spring JPA的使用方法,为后续的实际开发打下坚实的基础。

    ejb学习笔记

    在深入探讨《ejb学习笔记》这一主题之前,我们首先需要理解什么是EJB(Enterprise JavaBeans)。EJB是Java平台为企业级应用开发提供的一套组件模型,它属于J2EE(Java 2 Platform, Enterprise Edition)的一部分,...

    EJB3.0 学习笔记

    **EJB3.0 学习笔记** EJB(Enterprise JavaBeans)是Java EE平台中的核心组件,用于构建可扩展的、安全的、事务处理的分布式应用程序。EJB3.0是EJB的一个重大更新,引入了许多改进,使得开发过程更为简化,降低了...

    ejb 学习笔记4

    ### EJB学习笔记4:深入理解实体与JPA #### 实体的概念与作用 实体,在企业级Java开发中,特别是EJB(Enterprise JavaBeans)框架下,指的是具有持久化能力的POJO(Plain Old Java Object)类。不同于实体Bean...

    EJB3.0 - 学习笔记

    EJB 3.0 版本引入了许多改进,简化了API,降低了学习曲线,使其更易于使用。 在MVC(模型-视图-控制器)架构中,EJB 主要用于开发业务层。它负责处理数据和业务逻辑,而视图层则展示数据,控制器则协调视图和模型...

    EJB学习笔记.doc

    【EJB学习笔记】 EJB,全称为Enterprise Java Beans,是Java平台上的一个标准,用于开发和部署服务器端的分布式组件。它基于Java语言,为创建高效能、安全且可扩展的企业级应用提供了框架。EJB规范由Java ...

    EJB概述 学习笔记

    1. **EJB组件类型** - **会话bean(Session Beans)**:代表单个客户端的交互,并且可以是无状态或有状态的。无状态会话bean在处理完请求后不会保留任何信息,而有状态会话bean则可以记住客户端的状态。 - **实体...

    EJB学习笔记.rar

    1. **事务管理**:EJB提供了强大的事务管理能力,可以自动处理事务的ACID属性,确保数据一致性。 2. **安全性**:通过JAAS(Java Authentication and Authorization Service)实现用户身份验证和权限控制,保护应用...

Global site tag (gtag.js) - Google Analytics