EJB学习日记(8)

实体BEAN的七种关系之---------一对一单向

一对一单向,顾名思义,就是只要求从A方到达B方,而不需要从B方到达A方,典型的例子就是,一个人对应一个地址,因为现实生活中,一个地址可能住很多人,所以一般我们只需要根据人查到它的地址,而不太会需要从一个地址去查谁住在那里,不过,真的有这种需求的话,我们就要以用另外一种关系来实现了,这个以后再讲

首先我们声明一个人的实体类,Person

/*
 * Person.java
 * 
 * Created on 2007-9-15, 0:11:58
 * 
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 
*/

package lbf.entitybean.test1;

import java.io.Serializable;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;

/**
 *
 * 
@author Admin
 
*/
@Entity
public class Person implements Serializable {
    
private static final long serialVersionUID = 1L;
    
private Long id;
    
private String name;
    
private String sex;
    
private int age;
    
private Address address;
    
    @OneToOne(cascade
=CascadeType.ALL,optional=true)
    
public Address getAddress() {
        
return address;
    }

    
public void setAddress(Address address) {
        
this.address = address;
    }
    
public int getAge() {
        
return age;
    }

    
public void setAge(int age) {
        
this.age = age;
    }

    
public String getName() {
        
return name;
    }

    
public void setName(String name) {
        
this.name = name;
    }

    
public String getSex() {
        
return sex;
    }

    
public void setSex(String sex) {
        
this.sex = sex;
    }
    
public void setId(Long id) {
        
this.id = id;
    }

    @Id
    @GeneratedValue(strategy 
= GenerationType.AUTO)
    
public Long getId() {
        
return id;
    }

}

再来看看Address的实体BEAN定义
/*
 * Address.java
 * 
 * Created on 2007-9-15, 0:13:50
 * 
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 
*/

package lbf.entitybean.test1;

import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

/**
 *
 * 
@author Admin
 
*/
@Entity
public class Address implements Serializable {
    
private static final long serialVersionUID = 1L;
    
private Long id;
    
private String country,province,city,street;
    
private int postcode;
    
public String getCity() {
        
return city;
    }

    
public void setCity(String city) {
        
this.city = city;
    }

    
public String getCountry() {
        
return country;
    }

    
public void setCountry(String country) {
        
this.country = country;
    }

    
public int getPostcode() {
        
return postcode;
    }

    
public void setPostcode(int postcode) {
        
this.postcode = postcode;
    }

    
public String getStreet() {
        
return street;
    }

    
public void setStreet(String street) {
        
this.street = street;
    }
    
public void setId(Long id) {
        
this.id = id;
    }

    @Id
    @GeneratedValue(strategy 
= GenerationType.AUTO)
    
public Long getId() {
        
return id;
    }

}

以上便是两个类的定义,从Person里面我们可以看到如下的代码

@OneToOne(cascade=CascadeType.ALL,optional=true)
    public Address getAddress() {
        return address;
    }
在这里的@OneToOne就是注释是一对一的关系,其中cascade是表示级联的关系,是级联删除还是级联更新,还是所有,我们这里选择的是所有,这样的好处就是,我们在插入Person的时候,就顺带的把Person里面包含的Address一起插入数据库里面,当我们删除Person的时候,也是把这个Person对应的Address从数据库里面删除,否则就需要我们人工的删除两遍或者插入两遍等等,optional表示这个成员是不是可选的,我们这里是可选的,也就是说一个人可以没有地址(比如流浪汉:)).
然后我们发现,在Address里面只有一些简单的EntityBean的注释,并没有表示关系的注释,这是因为本例是一对一单向的实现,Person里面有 Address,而Address却什么都不知道,它对应到数据库里面只是一张简单的表而已,Person对应到数据库里面就有一个指向Address的外键.我们也可以增加注释指定外键的列的名字,如下:
@OneToOne(cascade=CascadeType.ALL,optional=true)
@JoinColumn(name="addressID")
    public Address getAddress() {
        return address;
    }
如果我们不加的话,也是可以通过的,在JBOSS里面,它会自动帮你生成你指向这个类的类名加上下划线再加上id的列,也就是默认列名是:address_id.

如果是主键相关联的话,那么可以运用如下注释

@OneToOne(cascade={CascadeType.ALL})
   @PrimaryKeyJoinColumn

   public Address getAddress( ) {
      return homeAddress;
   }
它表示两张表的关联是根据两张表的主键的

以下是一些注释的定义,我们看一下可以了解一下这些注释有哪些方法,
public @interface JoinColumn
{
   String name( ) 
default "";
   String referencedColumnName( ) 
default "";
   
boolean unique( ) default false;
   
boolean nullable( ) default true;
   
boolean insertable( ) default true;
   
boolean updatable( ) default true;
   String columnDefinition( ) 
default "";
   String table( ) 
default "";
}

public @interface OneToOne
{
   Class targetEntity( ) 
default void.class;
   CascadeType[] cascade( ) 
default {};
   FetchType 
 fetch( ) 
default EAGER;
   
boolean optional( ) default true;
   String mappedBy( ) 
default "";
}

public @interface PrimaryKeyJoinColumn
{
   String name( ) 
default "";
   String referencedColumnName( ) 
default "";
   String columnDefinition( ) 
default "";
}


好了,一对一单向差不多就这么些吧,明天再看一下一对一双向的情况.
【原理图PCB专题】案例:双排0.5mm间距座子转单排0.5mm间距座子Layout方案分析 本文提供一种分析思路,并通过实际案例来进行Layout方案分析的讲解。 阅读详情

相关推荐

Android BluetoothSocket

BluetoothSocket是Android中用于在蓝牙设备之间进行数据传输的一种Socket。它提供了一种类似于TCP/IP协议的数据传输方式,可以在两个设备之间建立一个虚拟的通信管道,使得两个设备之间可以进行数据的传输和接收。BluetoothSocket可以用于客户端和服务端之间的通信,通过BluetoothSocket可以实现数据的双向传输。

liuning1985622的博客 1477

EJB初学日记(1)

2007年10月10日 07:40:00 今天终于还是下定决心看看EJB,看着SPRING看了两天,觉得一点头绪都没有,我不是一个讲究速成的人,但是总是感觉和它们的理念不太一样,唉,真可怜,都怪自己,初学JAVA的时候就把J2SE看得太重了.在学习了J2SE一整年之后,发现JAVA的应用还远远没有掌握,我学习一年的结果就是刚刚对JAVA有所了解而已,回首这一年的路,挺艰难的,但 是现在以一

秦梦瑶的专栏 444

高通量测序数据分析:RNA-seq

深度测序相关数据库与数据格式 SRA toolkit 一、NCBI 和EBI、DDBJ组成INSDC,数据内容相同所以找NCBI就行。 (一)NCBI常用数据库 GenBank:遗传序列数据库,收集了所有公开的DNA序列及其注释 GEO (Gene Expression Omnibus) :收集整理各种表达芯片数据,后来加入了甲基化、lncRNA、miRNA、CNV等其他芯片,还有高通量测序数据...

qq_41134363的博客 3万+

jboss-seam(jsf+ejb3)学习日记1

 昨天晚上把jboss-seam体验了下,感觉还可以,很简单,很容易实现,几乎把EJB3.0+jsf(myfaces)傻瓜化,这里把过程记录下.先下载eclipse+jboss IDE2+JBOSS AS我的版本分别是:JBossIDE-2.0.0.ALPHA-ALL.zipeclipse-SDK-3.2-win32.zipjboss-4.0.4.GA-Patch1-ins

lzlr1324的专栏 1854

VH6501实战:手把手教你用CANoe脚本精准触发CAN总线干扰(附避坑点)

本文详细介绍了使用VH6501和CANoe脚本精准触发CAN总线干扰的实战技巧,包括触发位置控制、ValidityMask配置和干扰序列设置等关键步骤。通过具体代码示例和常见问题排查指南,帮助工程师避开实际应用中的常见陷阱,提升CAN总线干扰测试的准确性和效率。

weixin_33709219的博客 369

Spine动画在Unity里卡顿、闪烁、排序错乱?这些性能优化与渲染问题一次讲清

本文深入解析了Spine动画在Unity中常见的卡顿、闪烁和排序错乱问题,提供了全面的性能优化与渲染解决方案。从性能瓶颈诊断到材质合并、动态合批优化,再到层级错乱与Alpha闪烁的处理,帮助开发者提升动画表现和运行效率。特别针对Unity和Spine的协同工作进行了详细的技术探讨。

weixin_29967445的博客 379

EJB异常日记

er.java:134)@Remote和@Local必须指定接口的class,也就是value值例如:@Remote(HelloWorld.class)  //申明是一个远程接口,不写默认是本地接口@Local(HelloWorldLocal.class)  //申明是一个本地接口Exception in thread "main" javax.ejb.EJBException: Invalid (i.e. remote) invocation of local interface (n

computerstep 159

Coding Plan:程序员真实工作的可执行编码决策框架

Coding Plan 是一种面向工程实践的编码决策方法论,它超越传统学习路径,聚焦于代码在真实业务系统中的上下文对齐、影响控制与可演进性保障。其核心在于将模糊的开发直觉转化为可度量、可验证、可协作的日常动作,涵盖目标对齐、上下文锁定、验证闭环、协作契约和演进预留五大锚点。结合2026年AI辅助编码新范式,它强调将大模型作为‘上下文翻译器’而非代码生成器,并通过分钟级工作块、技术债主动发行、可观测性前置等机制,显著提升交付确定性与系统长期健康度。本文详解该框架的底层逻辑与落地实践。

weixin_33326218的博客 438

EJB初学日记(3)

2007年10月10日 07:10:00 今天主要是看了一下拦截器的实现,在EJB3.0里面,实现拦截非常简单.加一个注释就可以了,这样就可以随时监视某个方法的调用了,拦截器可以是拦截某一个方法也可以是拦截一个类的所有方法的.具体如下 首先写一个拦截器方法,拦截器方法并不需要实现什么接口,只要符合一定的规范就可以了,规范是: Object xxxxx(InvocationContext

秦梦瑶的专栏 339

Navicat16/17数据库密码安全解析与实战解密指南

本文详细解析了Navicat 16/17版本中数据库密码的加密机制,并提供了实用的密码找回指南。通过导出连接文件获取加密密文,利用基于AES-128-CBC算法的本地HTML工具,可安全、离线地解密遗忘的密码。文章强调该方法仅适用于合法恢复自有密码,并给出了操作步骤与安全建议。

weixin_28835583的博客 466

YOLOv11改进 | 主干/Backbone篇 | 轻量级移动端网络ShuffleNetV2(附代码+修改教程)

本文给大家带来的改进内容是ShuffleNetV2,这是一种为移动设备设计的高效CNN架构。其在ShuffleNetV1的基础上强调除了FLOPs之外,还应考虑速度、内存访问成本和平台特性。(我在YOLOv11n上修改该主干降低了GFLOPs,但是参数量还是有一定上涨,其非常适合轻量化的读者来使用,同时精度也有一定程度的上涨)。本文通过介绍其主要框架原理,然后教你如何添加该网络结构到网络模型中。

Snu77的博客 3387

EJB初学日记(2)

其实在学习EJB之前,就听说过EJB,有人说他很复杂,也有人说一般般而已,但是几乎所有的人都说EJB3.0确实是简单了许多. 一般讲起JAVA EE,一般人都认为是应用在网页里面的,甚至有人把JAVA EE和JSP等同起来,要知道,JAVA EE是一个很庞大的结构,而JSP只是里面一部份中的一部份而已. 今天我就把JAVA EE的EJB应用到JAVA SE中看一看,在JBOSS里面布署好EJB,...

千里冰封 145

【深度学习新浪潮】Nano Banana(Gemini 2.5 Flash Image)技术解析与开发者实操指南

重新定义了 AI 图像生成的产业标准。它不仅是“平民化的视觉工厂”,更是推动内容生产从“创意试错”转向“精准制造”的关键工具。未来,随着视频生成能力的加入(谷歌计划支持“文字指令 - 动态场景 - 多平台适配”全流程),Nano Banana 有望进一步颠覆影视、广告等领域的创作范式。:批量生成多场景图,模特姿态自然,服装褶皱和材质细节高度一致,节省 90% 拍摄成本。模型的非正式代号,是一款革命性的 AI 图像生成与编辑工具,主打。:生成细节丰富的厨师特写,光影自然,皮肤纹理和刀具反光逼真。

专注:太空算力、AI infra、异构调度、大模型成本工程 889

EJB初学日记(4)

2007年10月10日 07:09:00 关于session bean的一些问题 EJB里面,session bean是占了挺重要的地位的,一些重要的事情都是交给session bean来处理的session BEAN一般用于操作一些对外的方法,供客户调用.会话BEAN分两种,一种 是有状态的会话BEAN,一种 是无状态的会话BEAN,它们有什么不同呢?有状态的会话BEAN,会记录每一个调

秦梦瑶的专栏 469

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

EJB学习日记(20)

2007年10月12日 01:06:00 非实体的基类映射最近我们都说了很多继承方面的映射策略,可是有时候我们却需要继承一个非实体的类,这个类存在于我们的工程项目中,但是我们又不希望它成为一个实体类,这个时候怎么办呢?这个时候我们可以用@javax.persistence.MappedSuperclass来注释它,我们现在就修改一下我们前几天的例子,把Person类定义成一个不持久化的类。

秦梦瑶的专栏 510

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

abp学习日记 初记

文章目录ABP本系列学习日志对ABP的认识DDD推荐一个文章 ABP 学习abp的最好的网站(官网) 本系列学习日志 构建中 对ABP的认识 最开始是在博客园中看到有个博友写了一个套类库,提到了这个词 abp,查了一下当时理解的就是一套别人写好的基础操作的框架,做点反射啊,基类抽象啊,没啥了不起的,嗤之以鼻,开始了自己的框架编写,当时还是用的老三层 DAL,BLL,API(也有用UI的),后来了解...

iml6yu的博客 393

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

EJB学习日记(18)

2007年10月10日 06:55:00 继承映射策略之----每个具体类一张表 昨天我们看了继承关系中的实现,昨天是用一张表保存所有级别的类,今天我们来了解一下第二种实现方法,每一个类一个单独的表的实现,在数据库我们的例子表现如下: create table Person ( id integer primary key not null, firstName varcha

秦梦瑶的专栏 337

EJB学习日记(7)

2007年10月10日 07:06:00 七种映射关系简介 在实体BEAN中,互相之间的关系有七种,分别是如下七种 1,一对一单向 2,一对一双向 3,一对多单向 4,一对多双向 5,多对一单向 6,多对多单向 7,多对多双向 大家可能发现,为什么没有多对一双向呢?其实多对一的双向,就是一对多的双向,道理是一样的. 今天把典型的应用场哈举个例子,改天再用代码来说话 1,一对一单向.

秦梦瑶的专栏 394

EJB学习日记(15)

2007年10月10日 06:59:00 EJB中的集合映射 我们在前面的一对多以及多对多的情况可以看到,我们会需要对集合进行映射,对于基于List的映射我们在前面已经看过了。但是如果我们想对Map进映射呢,那该怎么办?其实JPA已经帮我们设计好了。那就是利用@MapKey来进行注释。我们还是先要看看MapKey的代码吧:package javax.persistence; @Targe

秦梦瑶的专栏 415

从EJB容器得到的分布式灵感

一个C#分布式容器的开发日记1.思考由于公司的业务需要,我从DELPHI转向JAVA,,没办法,只有重拾书本.(混口饭,不容易呀)刚才时,自己还有一点抵触的思想,毕竟自己一直都对JAVA没兴趣,不然也不会业余学习DONET了.可是看到EJB时,我突然想到一些东西在delphi中开发分布式程序需要借助MIDAS,一切都基于在DCOM上的东西,虽然便捷,但是不能达到EJB中提出的-

Erice的专栏 1152

EJB学习日记(16)

2007年10月10日 06:57:00 实体之间的级联关系我们在以前的七种关系映射中经常会在注释中看到如下方法:cascade(),它表示级联,也就是有关联的一些实体,当我们对其中的一些进行操作的 时候,与它相关联的实体应该怎么办。这样时候,就需要我们定义cascade的属性了,cascade一共有五种属性,我们可以用其中的一种,也可以用其 中的多种混合,其中可用的属性如下: publi

秦梦瑶的专栏 428
上一篇: 男人25岁前的忠告
下一篇: EJB学习日记(9)
hadeslbf
博客等级 码龄20年 1粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值