EJB初学日记(6)

实体BEAN的关联

今天自己写了一个例子,有关实体BEAN的关联问题,我写的这个例子是一对多的情况,一是人,多是狗,一个人可以养多条狗,每条狗都必须有一个主 人,在删除主人的时候,狗就没有存在的必要了,所以狗也要跟着删除,可是删除狗的时候,主人却可以在.一开始我实现的时候,删除狗的操作是错误的,我以为 直接把Person里面的Dog删掉,然后更新Person就可以了,谁知不是这样的,你在增加了Person中的狗的时候,你更新Person就可以把 狗加进来了,可是当你把Person里面的狗删除掉时,再更新Person,数据库里面的狗却不会少.而要你显示的调用em.remove()去删除你想 删除的狗,并且你对这狗不能设置为级联删除,否则你删除狗的时候把人也删掉了,这当然不是我们希望看到的.

下面附上代码

package com.hadeslee.session;   
   
 
import com.hadeslee.entity.Person;   
 
import java.util.List;   
 
import javax.ejb.Remote;   
   
   
 
/**  
  * This is the business interface for PersonDAO enterprise bean.  
 
*/  
 @Remote  
 
public interface PersonDAORemote {   
    
public void insertPerson(Person p);   
    
public List getAllPersons();   
    
public Person findPerson(long id);   
    
public void deletePerson(long id);   
 }   

 package com.hadeslee.session;   
   
 
import com.hadeslee.entity.Dog;   
 
import com.hadeslee.entity.Person;   
 
import java.util.List;   
 
import javax.ejb.Remote;   
   
   
 
/**  
  * This is the business interface for PersonToDogs     enterprise bean.  
  
*/  
 @Remote  
public interface PersonToDogsRemote extends PersonDAORemote{   
     
public void addDog(Person p,Dog dog);   
     
public Person removeDog(Person p,Dog dog);   
     
public List getDogs(Person p);   
     
public Person getOwner(Dog dog);   
 }   

   /*  
   * PersonDAOBean.java  
   *  
   * Created on 2006年12月13日, 下午3:53  
   *  
   * To change this template, choose Tools | Template Manager  
   * and open the template in the editor.  
   
*/  
    
  
package com.hadeslee.session;   
    
  
import com.hadeslee.entity.Person;   
import java.util.List;   
 
import javax.ejb.Stateful;   
import javax.persistence.Query;   
 
import javax.persistence.EntityManager;   
 
import javax.persistence.PersistenceContext;   
   
 
/**  
  *  
  * 
@author lbf  
  
*/  
 @Stateful  
public class PersonDAOBean implements com.hadeslee.session.PersonDAORemote {   
   @PersistenceContext  
    
protected EntityManager em;   
  
/** Creates a new instance of PersonDAOBean */  
    
public PersonDAOBean() {   
    }   
  
    
public void insertPerson(Person p) {   
       em.persist(p);   
       System.out.println(
"保存成功");   
   }   
 
    
public List getAllPersons() {   
      Query query
=em.createQuery("select p from Person p order by p.id");   
          
return query.getResultList();   
    }   
   
     
public Person findPerson(long id) {   
        
return em.find(Person.class,id);   
       }   
       
public void deletePerson(long id){   
         em.remove(em.find(Person.
class,id));   
     }   
     
}  

   1.  /*  
   2.  * PersonToDogsBean.java  
   3.  *  
   4.  * Created on 2006年12月13日, 下午4:50  
   5.  *  
   6.  * To change this template, choose Tools | Template Manager  
   7.  * and open the template in the editor.  
   8.  
*/  
   
9.   
  
10. package com.hadeslee.session;   
  
11.   
  
12. import com.hadeslee.entity.Dog;   
  
13. import com.hadeslee.entity.Person;   
  
14. import java.util.List;   
  
15. import javax.ejb.Stateless;   
  
16. import javax.persistence.Query;   
  
17.   
  
18. /**  
  19.  *  
  20.  * 
@author lbf  
  21.  
*/  
  
22. @Stateless  
  
23. public class PersonToDogsBean extends PersonDAOBean implements com.hadeslee.session.PersonToDogsRemote {   
  
24.        
  
25.     /** Creates a new instance of PersonToDogsBean */  
  
26.     public PersonToDogsBean() {   
  
27.     }   
  
28.   
  
29.     public void addDog(Person p, Dog dog) {   
  
30.         p.addDog(dog);   
  
31.         em.merge(p);   
  
32.     }   
  
33.   
  
34.     public Person removeDog(Person p, Dog dog) {   
  
35.         //em.remove(dog);   
  36.         p.removeDog(dog);   
  
37.         System.out.println("此时P的大小是:"+p.getDogs().size());   
  
38.         em.merge(p);   
  
39.         return p;   
  
40.     }   
  
41.   
  
42.     public List getDogs(Person p) {   
  
43.         return p.getDogs();   
  
44.     }   
  
45.   
  
46.     public Person getOwner(Dog dog) {   
  
47.         Query query=em.createQuery("select p from Person p where p.id=?1");   
  
48.         query.setParameter(1,dog.getOwner().getId());   
  
49.         return (Person)query.getSingleResult();   
  
50.     }   
  
51.        
  
52. } 
目前的代码是不能正常删除的,要正常删除狗的话,必须把em.remove() 那句话还原,然把再把em.merge()那句话注释起来才行 还有一个现象,那就是我在对远程对象进行了操作以后,并不会反映到我的本地对象,比如我调用了删除人里面的一条狗,在远程或者在数据库里面确实是删 掉了,可是我在调用人的时候,里面还是有那么的狗,这样就会产生不同步的现象,为了消除这种现象,我把接口写了一个,改为进行了删除操作的时候,它会再次 返回Person对象,这个时候就可以保证远程对象和本地对象的一致性了. 增加代码没写,所以每次增加了狗后,调用Person对象时,依然是增加前一样的,也就是说,当我持有了远程对象发过来的本地对象后,如果我不对其 进行操作,无论你怎么调用远程方法,此方法会对其有影响的,JVM都不会返回一个最新的给你,而你用的永远是第一次传过来的那个以象,所以,在远程对象传 输中,必须要注意同步性,要么就每次都从远程去取最新的对象,要么就先对本地对象做同样的操作,比如前面的addDog动作,先在本地执行一遍,然后远程 执行远程的,这样就可以同步了,不过我觉得如果是网络允许的情况下,还是每次对对象操作后都能返回最新的对象好一些,免得手工去保持和远程对象的同步,这 样不可靠.
 一对多目前只看到了这么多,接下来要看一下多对多的情况.
SillyTavern 酒馆在 Mac 和 Linux 上的部署教程(含启动器安装方法) SillyTavern 是一个支持多种大模型聊天接口的本地前端项目,适用于 MacOS 和 Linux 系统。本文提供了两种部署方式:手动安装和使用 SillyTavern Launcher 安装器。手动安装需要先安装 Git 和 NodeJS,然后克隆项目源码并运行启动脚本。使用 Launcher 则更为简便,适合新手用户,能够自动安装依赖和配置环境。部署完成后,用户可以通过浏览器访问本地服务器,加载角色卡片并连接大模型 API,享受二次元角色扮演聊天的乐趣。无论是开发者还是终端用户,都能轻松完成 Sil 阅读详情

相关推荐

ctx->cvdl->cuvidGetDecoderCaps(&ctx->caps8) failed -> CUDA_ERROR_DEINITIALIZED: driver shutting down

ffplay -vcodec h264_cuvid sample_720p-2.h264 [quantum6@freeswitch freeswitch]$ ffplay -vcodec h264_cuvid sample_720p-2.h264 ffplay version 4.3.1 Copyright (c) 2003-2020 the FFmpeg developers built with gcc 4.8.5 (GCC) 20150623 (Red Hat 4.8.5-44) .

柳鲲鹏 2404

EJB初学日记(6)

2007年10月10日 07:08:00 实体BEAN的关联 今天自己写了一个例子,有关实体BEAN的关联问题,我写的这个例子是一对多的情况,一是人,多是狗,一个人可以养多条狗,每条狗都必须有一个主 人,在删除主人的时候,狗就没有存在的必要了,所以狗也要跟着删除,可是删除狗的时候,主人却可以在.一开始我实现的时候,删除狗的操作是错误的,我以为 直接把Person里面的Dog删掉,然后更新

秦梦瑶的专栏 406

akshare 布林通道策略

import datetime import pandas as pd import backtrader as bt import matplotlib.pyplot as plt from datetime import datetime import matplotlib import akshare as ak %matplotlib inline class Boll_strategy(bt.Strategy): #自定义参数,每次买入1800手 params=(('size'.

qq_26742269的博客 5338

EJB初学日记(1)

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

秦梦瑶的专栏 444

VSCode+Typst零配置写作指南:5分钟搞定论文排版环境(含实时预览技巧)

本文介绍如何利用VSCode和Typst快速搭建零配置的论文排版环境,5分钟内实现高效写作与实时预览。Typst作为轻量级排版工具,结合LaTeX的精度与现代化语法,显著提升学术写作效率,特别适合需要频繁调整格式的研究人员。

weixin_30642561的博客 109

Jetson系列目标检测及推流

使用硬件编码,gstreamer推rtsp流至平台

xiao__run的博客 2710

EJB初学日记(3)

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

秦梦瑶的专栏 339

4、教育数据挖掘:公共数据集与研究进展

本文综述了教育数据挖掘(EDM)领域的研究进展与公共数据集应用情况。从2013年至2020年,EDM在电子学习系统、大规模开放在线课程(MOOC)等方面快速发展,涵盖了多种研究任务、工具与方法。文章梳理了UCI、Mendeley、DataShop等平台的公开数据集,分析了其特点与局限性,并介绍了KDD Cup、Kaggle等竞赛中的教育数据集及其评价指标。同时,探讨了多模态、心理行为等特色数据集的应用场景。最后指出当前EDM面临的主要挑战是缺乏系统性数据集综述、数据预处理复杂及可重复性不足,呼吁加强数据共享

rgv2345678的博客 171

EJB初学日记(2)

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

千里冰封 145

Sprd Android 13 备忘 OTA升级app没更新到目标版本,恢复出厂才生效修改这个值

【代码】Sprd Android 13 备忘 OTA升级app没更新到目标版本,恢复出厂才生效修改这个值。

m0_60898338的博客 679

大模型技术全景与核心概念解析:从基础原理到AI智能体架构(实时更新中)

本文系统解析了大模型技术的核心概念与架构。首先介绍了LLM(大语言模型)、LLMOps(模型运维)、AIGC(生成内容)、AGI(通用AI)等基础概念,重点阐述了大模型的工作原理,包括预处理、推理和后处理三个阶段。深入讲解了Token分词、FLOPs计算、Embedding向量表示等关键技术,并分析了LoRA微调、MoE架构等前沿方法。文章还探讨了AI智能体的发展前景,为理解大模型技术提供了全景视角。

算法工程师 1233

EJB初学日记(4)

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

秦梦瑶的专栏 469

SAP Fiori 会话超时全解析:从 Launchpad 到 Identity Authentication 的统一策略

SAP Fiori会话超时机制解析与配置策略 本文深入探讨SAP Fiori项目中的会话超时机制,分析其对系统安全和用户体验的双重影响。文章系统拆解了SAP Fiori Launchpad与SAP Cloud Identity Services之间的会话超时工作原理,重点介绍了两种超时机制:服务器驱动的超时(通过SESSION_TIMEOUT_STOP_DATA_REFRESH参数控制)和UI驱动的超时(通过SESSION_TIMEOUT_INTERVAL_IN_MINUTES参数控制)。文中结合制造业产线

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 213

EJB初学日记(5)

以前看到一本书上写的,有关定义实体BEAN的一些细节,直到今天才知道其中的差别 代码1: /*     * Test.java     *     * Created on 2006年12月15日, 上午12:06     *     * To change this template, choose Tools | Template Manager     * and open the te...

千里冰封 139

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

J2EE初学

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

千里冰封 161

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Java日记(1) 一. 认识Java

Java日记(1)Date:2004-2-25标题:初涉Java注:出水奇芭问有源,E网情深觅仙踪。一.     认识JavaJava的由来和发展历程这里不再累述,顺便找本Java方面的书籍都会有介绍。Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标

brightsome的专栏 932

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

@Id字段映射和方法映射

http://www.blogjava.net/hadeslee/archive/2007/09/11/144275.html EJB初学日记(5) 以前看到一本书上写的,有关定义实体BEAN的一些细节,直到今天才知道其中的差别 代码1: /* * Test.java * * Created on 2006年12月15日, 上午12:06 * ...

weixin_30455661的博客 462

博客学习日记-2014/12/11

关于Java学习的新的开始 之前跟一个阿里巴巴工作的姐夫聊起他在阿里巴巴的工作,他从事于Java编程。对于Java编程,我之前的实习经历,让我对它还是有一定的了解,但是现在想想自己的理解还是过于肤浅。之前只是在实习的过程中,看到身边的工程师在写Java程序,涉及到JSP、servlet、一些框架(Spring、Hibernate、StrutsII)等等,感觉java就是在做网页,同时也感觉那些框

jingjbuer的专栏 656

Rails工作效率和Java运行平台

  Rails工作效率和Java运行平台——读《JRuby实战》(Practical JRuby on Rails Web 2.0 Projects) 有感在Web软件开发方面,Rails框架正在以其惊人的速度快速的发展,并且越来越赢得企业的高度重视。今天,很少有哪个框架能够以如此大的效率和如此少的代码完成其基于浏览器软件的开发工作。最重要的是,这个框架还为我们

图灵教育 3130

06-Tomcat详解

06-Tomcat详解1、JavaWeb的概念2、Web 资源的分类3、常用的 Web 服务器4、Tomcat 服务器和 Servlet 版本的对应关系5、Tomcat 的使用6、IDEA整合Tomcat服务器7、IDEA 中动态 web 工程的操作 1、JavaWeb的概念 什么是JavaWeb JavaWeb 是指,所有通过 Java 语言编写可以通过浏览器访问的程序的总称,叫 JavaWeb。 JavaWeb 是基于请求和响应来开发的。 什么是请求 请求是指客户端给服务器发送数据,叫请求 Reque

仰望与追逐的博客 448

JavaWeb(五):Tomcat

文章目录1. JavaWeb概念2. Web资源的分类3. 常用Web服务器4. Tomcat 服务器和Servlet 版本的对应关系5. Tomcat 的使用5.1 安装5.2 目录介绍5.3 如何启动Tomcat服务器5.4 Tomcat停止5.5 如何修改Tomcat 的端口号5.6 部暑web 工程到Tomcat 中5.7 手拖html 页面到浏览器和在浏览器中输入http://ip:端口号/工程名/访问的区别5.8 ROOT 的工程的访问,以及默认index.html 页面的访问6. IDEA 整

平什么阿的博客 530
上一篇: 利用POI操作EXCEL文档(2)
下一篇: JAVA元数据注释初探
hadeslbf
博客等级 码龄20年 1粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值