Weblogic EJB 学习笔记(3)精

编辑实体bean的高级课程
1. 怎样开发主健类
ejb的主健类主要用做持久存储和ejb容器中的唯一标识符.
通常主健类的字段直接映射到数据库中的主健字段.
如果主健只是由单个实体bean字段组成.且其数据类型是基本的java类.如string,则bean作者不必开发自定义的主健类.
只需要在配置描述器中指定类的名字和主健字段即可

如果把主健映射到一个用户定义的类型,或者映射到多个字段,则bean的作者必须写出自定义的主健类.

主健类必须实现 java.io.serializable,而且包含主健字段.

对于cmp,字段名必须匹配实体bean中的相应的主健字段名,这将使ejb容器能够把适当的cmp字段赋值到主健类中的相应字段中.

2. 实现hashcode()方法
hashcode() 方法的实现原理是,利用主健字段,经适的处理后,生成并返回一个整数. 这个生成的整数称为散列码,用作表格的索引.
对于一个给定的主健,hashcode()方法的返回值应当总是一样的. 常见做法: 执行"异或" 操作.

3. 实现 equals() 方法
正确地实现equals()方法也需要一定的技巧. 任何equals() 方法的第一行都应当检查传递进来的引用是否是"this", 检查equals()
方法是否是针对自己的调用. 通常做法: 当容器有一个主健对象时,她要检查这个主健对象是否已经存在于数据结构中.

接着,equals() 方法需要检查传递进来的主健类的类型. 如果主健类是中继类(final),可以使用instanceof 进行简单的检查.
否则,传递进来的参数也许是主健类的子类.在这种情况下,equals() 方法必须使用getClass.equals, 以确保类的类型是匹配的

建议主健类采用终极类. (instanceof 效率要高一些)

最后,equals() 方法需要需要比较传递进来的对象的所有值. 如果所有值是相同的,说明对象也是相同的
注意: 要先比较散列码.

4 实体bean的继承和异构
实体bean 可以利用java的继承和异构的特性.

5. 继承的限制
尽管ejb 规范允许组件之间的继承,但夜游一些细微的规则限制了怎样设计和实现一个继承的ejb.
ejb的规则要求,本地接口的create() 方法返回的远程接口不能是一个子类,也不能是超类. 实体bean 的ejbreate() 方法也
必须返回主健类型,也不能是一个子类,也不能是超类.
类似的findByPrimaryKey()方法必须使用主健类型作为参数返回远程接口.
这些要求限制了bean作者对继承的实现.

6. 继承和异构的设计模式

注意: 具有继承和异构特性的实体bean,很重要一点就是要确定一般情况下究竟都需要使用哪一些属性.

7 . 接口的继承

通过bean类的继承性,bean作者只需要在一个地方实现业务方法,其它实体bean就可以共享类中的方法了.

8 使用多个bean类
为本地和远程接口创建一个基本接口,不是达到异构共享的唯一方法. 另一个常见的做法是
使用等同的本地和远程接口,但采用不同的bean类实现其中的业务方法.
这种做法类似于使用一个具有若干不同实现的接口.
好处: 客户不知道或根本不管正在使用哪一种实现,客户机只对接口进行操作.

9. 实体bean 与锁

实体bean 不是可重入的或多线程的组件,每个实体bean实例也没有多线程控制的能力。
一次实体bean 类中的方法也不是同步化的。
实体bean实例不能是多线程的,所以ejb容器必须串行地执行所有的容器方法和业务方法。
这意味着当业务方法正在执行时,ejb容器不能再调用其它方法,比如 ejbPassivate()方法。

并发控制:
一种做法是对每一个事务都激活实体bean实例。同过数据库的访问锁的方式进行并发处理。
一种方法是,每一个主健只保持一个实体bean实例,这样一次只有一个事务可以访问实体bean。一旦
前一个事务提交或回滚,才允许另一个事务使用这个实体bean实例。
并发控制策略:
数据库并发控制:
除非特别情况,应尽量使用默认的数据库并发控制。
排它性并发控制:

转载于:https://www.cnblogs.com/hibernate3-example/archive/2012/05/09/2492799.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/274830.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Lerna 运行流程剖析

大家好,我是若川。持续组织了6个月源码共读活动,感兴趣的可以点此加我微信 ruochuan12 参与,每周大家一起学习200行左右的源码,共同进步。同时极力推荐订阅我写的《学习源码整体架构系列》 包含20余篇源码文章。历史面试系列Lerna…

手动创建线程池 效果会更好_创建更好的,可访问的焦点效果

手动创建线程池 效果会更好Most browsers has their own default, outline style for the :focus psuedo-class.大多数浏览器对于:focus psuedo-class具有其默认的轮廓样式。 Chrome’s default outline styleChrome浏览器的默认轮廓样式 This outline style is cr…

C++builder enum类型

C/C code #pragmaoption push -b-enumTThreadPriority { tpIdle, tpLowest, tpLower, tpNormal, tpHigher, tpHighest, tpTimeCritical }; //这是字节型的.理论上说这是可能的最小整形.可以是1Byte, 2Bytes, 4Bytes...#pragmaoption pop#pragmaoption push -benumTThreadPriori…

chrome浏览器世界之窗浏览器的收藏夹在哪?

今天心血来潮,用一个查重软件删除重复文件,结果把chrome浏览器和世界之窗浏览器的收藏夹给删除了,导致我保存的好多网页都没有了,在浏览器本身和网上都没有找到这两个浏览器默认的收藏夹在哪个位置,只好用DiskGenius 把…

Vue3究竟好在哪里 等推荐

话不多说,这一次花了几小时精心为大家挑选了30余篇好文,供大家阅读学习,提升自己的技术视野以及扩展自己的知识储备。本文阅读技巧,先粗看标题,感兴趣可以都关注一波,一起共同进步。前端从进阶到入院框架原…

eazy ui 复选框单选_UI备忘单:单选按钮,复选框和其他选择器

eazy ui 复选框单选重点 (Top highlight)Pick me! Pick me! No, pick me! In today’s cheat sheet we will be looking at selectors and how they differ. Unlike most of my other cheat sheets, this will focus on two components (radio buttons and checkboxes) side by…

过滤词

<?xml version"1.0" encoding"GB2312"?>-<wordList> <word>,</word> <word>.</word> <word><</word> <word>></word> <word>?</word> <word>/</word> <…

VS2010 VC Project的default Include设置

http://blog.csdn.net/jeffchen/article/details/5491435 VS2010与以往的版本一个最大的不同是&#xff1a;VC Directory设置的位置和以前的版本不一样。VS2010之前&#xff0c;VC Directory的设置都是在IDE的Tools->Options中设置的&#xff1b;VS2010改为&#xff0c;分别…

初级中级高级_初级职位,(半)高级职位

初级中级高级As a recent hire at my new job, as expected, a lot of things seemed scary and overwhelming. The scariest part was not the unfamiliarity with certain tasks or certain tools, but in communicating with higher-level coworkers, managers and bosses. …

如何写好技术文章(看张鑫旭老师的直播总结

大家好&#xff0c;我是若川。持续组织了6个月源码共读活动&#xff0c;感兴趣的可以点此加我微信 ruochuan12 参与&#xff0c;每周大家一起学习200行左右的源码&#xff0c;共同进步。同时极力推荐订阅我写的《学习源码整体架构系列》 包含20余篇源码文章。历史面试系列本文是…

Fact Table and Dimension Table In My Opinion

23转载于:https://www.cnblogs.com/answeryou/archive/2012/05/10/2495122.html

iOS 流媒体 基本使用 和方法注意

项目里面需要添加视频方法 我自定义 选用的是 avplayer 没选择 MediaPlayer 原因很简单 , avplayer 会更容易扩展 有篇博客 也很好地说明了 使用avplayer的优越性 blog.csdn.net/think12/article/details/8549438在iOS開發上&#xff0c;如果遇到需要播放影片&#xff0c;…

figma下载_迁移至Figma

figma下载Being an intuitive and user-friendly tool and having the possibility of real-time collaboration are some of the main reasons people choose to use Figma. But the migration process to Figma may sometimes be painful or time-consuming. 人们选择使用Fig…

metaWeblog 相关的参数

Function: Creates a new post on your blog. tags如果没会自动那一个 但是categroies如果与已经建立的不同,就会忽略掉的 可以用 string.replace(\n,).split(,) Parameters: Blog ID – For use in multisite installations, typically 0 for single sites Username – WordPr…

TypeScript 常用的新玩法

大家好&#xff0c;我是若川。持续组织了6个月源码共读活动&#xff0c;感兴趣的可以点此加我微信 ruochuan12 参与&#xff0c;每周大家一起学习200行左右的源码&#xff0c;共同进步。同时极力推荐订阅我写的《学习源码整体架构系列》 包含20余篇源码文章。历史面试系列上周分…

《Programming in Lua 3》读书笔记(十二)

日期&#xff1a;2014.7.14 PartⅡ Object-Oriented ProgrammingLua中实现面向对象编程。“如同OOP对象&#xff0c;table拥有状态&#xff1b;如同OOP对象&#xff0c;table拥有标识符---self&#xff0c;用来与其他变量做区分&#xff0c;而且两个table拥有同样的值也是…

(转)AS3中的stage,this,root的区别

要了解这个问题就要先对flash中的显示对象结构有一个大概的了解&#xff1a; 第一级&#xff1a;舞台&#xff1b; 第二级&#xff1a;当前SWF&#xff1b; 第三级&#xff1a;各种容器及可视对象&#xff08;如&#xff1a;文本框&#xff0c;位图……&#xff09;&#xff1b…

面试官是怎样高效面试的(面试官的“套路”

大家好&#xff0c;我是若川。持续组织了6个月源码共读活动&#xff0c;感兴趣的可以点此加我微信 ruochuan12 参与&#xff0c;每周大家一起学习200行左右的源码&#xff0c;共同进步。同时极力推荐订阅我写的《学习源码整体架构系列》 包含20余篇源码文章。历史面试系列最近正…

微服务负载均衡实现高可用_使用负载平衡实现大容量可用性

微服务负载均衡实现高可用Written by Yona Gidalevitz由Yona Gidalevitz撰写 Most users of the web are blissfully unaware of the sheer scale of the process responsible for bringing content across the Internet. There are literally miles of Internet between you …

Visual Studio 2008自带的Windows 系统使用的各种图标、光标和动画文件

1&#xff0c;Visual Studio 2008自带的1000多个 Windows 系统使用的各种图标、光标和动画文件 在Visual Studio 2008的安装目录下&#xff0c; /Microsoft Visual Studio 9.0/Common7/VS2008ImageLibrary/2052文件夹下面&#xff0c;有一个VS2008ImageLibrary.zip&#xff0c;…