guokehua(@yahoo.com.cn oy Java! 1010 33EntityEJB (2) 郭克华J2EE框架实战教学视频
oy Java! J guokehua@yahoo.com.cn 郭克华J2EE框架实战教学视频 33EntityEJB EntityEJB(2)
Entity Bean的生命周期 guokehua(@yahoo.com.cn Does not Exist set Entity Context unsetEntity Context 1010 Pooled ejbActivate paSsivate 1. create 2. ejbCreate 1. remove 3. ejbPostcreate ejbRemove Ready 郭克华J2EE框架实战教学视频
oy Java! J guokehua@yahoo.com.cn 郭克华J2EE框架实战教学视频 Entity Bean Entity Bean的生命周期
guokehua(@yahoo.com.cn 技术核心之一:用实体Bean实现添加 方法:只需在客户端调用本地接口的 create函 数,会返回一个远程接口,实际上就指向这 1010 个新Bean 底层调用顺序:构造函数(数据库连接) setsession Context((进入池状态) - ejb create(插 入记录)各个se函数(将值载入Bean) ejbPostcreate(进入准备状态) ejbstore(将数 据再更新一次,似乎不太必要,但容器会自 动调用) ·前提:构造函数里面写好了数据库连接 ejbCreate函数里面写好了数据库 insert语句; jbStore里面写好修改语句 郭克华J2EE框架实战教学视频
oy Java! J guokehua@yahoo.com.cn 郭克华J2EE框架实战教学视频 技术核心之一:用实体Bean实现添加 • 方法:只需在客户端调用本地接口的create 函 数,会返回一个远程接口,实际上就指向这 个新Bean • 底层调用顺序:构造函数 (数据库连接 )—— setSessionContext(进入池状态 )——ejbCreate( 插 入记录 )——各个set函数 (将值载入Bean)—— ejbPostCreate(进入准备状态 )——ejbStore(将数 据再更新一次,似乎不太必要,但容器会自 动调用 ) • 前提:构造函数里面写好了数据库连接; ejbCreate函数里面写好了数据库insert语句; ejbStore里面写好修改语句
guokehua(@yahoo.com.cn oy Java! 客户端实现 Properties pt= new Propertieso 1010 pt. put( Context. INITIAL CONTEXT FACTORY, weblo gic jndi. WLInitialContextFactory pt. put(Context PROVIDER URL, t3: //127.0.0.1: 7001; pt. put( Context. SECURITY PRINCIPAL, system") pt. put(Context. SECURITY CREDENTIALS, passwd"); Context ic= new InitialContext(pt) Object obj=ic lookup"BmPBeanremote") BMPRemoteHome gsh (BMPRemoteHome) PortableRemoteObject narrow(obj, B MPRemoteHome. class) BMPRemote qs= qsh create(参数); 郭克华J2EE框架实战教学视频
oy Java! J guokehua@yahoo.com.cn 郭克华J2EE框架实战教学视频 客户端实现 Properties pt = new Properties(); pt.put(Context.INITIAL_CONTEXT_FACTORY,"weblo gic.jndi.WLInitialContextFactory"); pt.put(Context.PROVIDER_URL,"t3://127.0.0.1:7001"); pt.put(Context.SECURITY_PRINCIPAL,"system"); pt.put(Context.SECURITY_CREDENTIALS,“passwd"); Context ic = new InitialContext(pt); Object obj = ic.lookup(“BMPBeanRemote”); BMPRemoteHome qsh = (BMPRemoteHome)PortableRemoteObject.narrow(obj,B MPRemoteHome.class); BMPRemote qs = qsh.create(参数);
guokehua(@yahoo.com.cn Oy J 技术核心之二:用实体Bean根据主键查询一条记录 ·方法:第一步:只需在客户端调用本地接口的 findBy Primary Key函数,会返回一个远程接口,实际 上就指向这个Bean;千万注意,此时Bean处于池状态, 只是一个具有主键的空壳,随时可能被代替;第二步 调用远程接口的get方法来取得值 1010 底层调用顺序:构造函数(数据库连接) setsession context(进入池状态) tg ejbfind By PrimaryKey(将主键读入空壳处于池状态 调用get函数— -ejbactivate(进入准备状态 ejbload(将数据填满空壳)- ejbstore(写回薮据库一次, 似乎无用) ·前提:构造函数里面写好了数据库连接; (/ Primary Key函数里面保证能将主键填入Bean eibFindB 主键给环境); ejbActivate函数保证从环境得到 键; ejbload保证写好了数据载入语句; ejbstore里 面写好修改语句 郭克华J2EE框架实战教学视频
oy Java! J guokehua@yahoo.com.cn 郭克华J2EE框架实战教学视频 技术核心之二:用实体Bean根据主键查询一条记录 • 方法:第一步:只需在客户端调用本地接口的 findByPrimaryKey函数,会返回一个远程接口,实际 上就指向这个Bean;千万注意,此时Bean处于池状态, 只是一个具有主键的空壳,随时可能被代替;第二步: 调用远程接口的get方法来取得值 • 底层调用顺序:构造函数 (数据库连接 )—— setSessionContext(进入池状态 )—— ejbfindByPrimaryKey(将主键读入空壳,处于池状态 ); 调用get函数——ejbActivate(进入准备状态 )—— ejbLoad(将数据填满空壳 )——ejbStore(写回数据库一次, 似乎无用 ) • 前提:构造函数里面写好了数据库连接; ejbFindByPrimaryKey函数里面保证能将主键填入Bean 中 (返回主键给环境 );ejbActivate函数保证从环境得到 主键;ejbLoad保证写好了数据载入语句;ejbStore 里 面写好修改语句
guokehua(@yahoo.com.cn 客户端实现 Properties pt= new Propertieso pt. put( Context. INITIAL CONTEXT FACTORY, " weblo gic jndi. WLInitialContextFactory") 0 pt. put(Context PROVIDER_URL, "33: //127.0.0.1: 7001") I pt. put(Context. SECURITY_PRINCIPAL, "system") pt. put(Context. SECURITY CREDENTIALS, passwd") Context ic=new InitialContext(pt) Object obj=ic lookup("BMPBean") BMPRemotehome gsh (BMPRemote Home)PortableRemoteObject narrow(obj, B MPRemoteHome. class) BMPRemote qs= qsh. findBy primary Key(参数) qs getXXX 郭克华J2EE框架实战教学视频
oy Java! J guokehua@yahoo.com.cn 郭克华J2EE框架实战教学视频 客户端实现 Properties pt = new Properties(); pt.put(Context.INITIAL_CONTEXT_FACTORY,"weblo gic.jndi.WLInitialContextFactory"); pt.put(Context.PROVIDER_URL,"t3://127.0.0.1:7001"); pt.put(Context.SECURITY_PRINCIPAL,"system"); pt.put(Context.SECURITY_CREDENTIALS,“passwd"); Context ic = new InitialContext(pt); Object obj = ic.lookup(“BMPBeanRemote”); BMPRemoteHome qsh = (BMPRemoteHome)PortableRemoteObject.narrow(obj,B MPRemoteHome.class); BMPRemote qs = qsh.findByPrimaryKey(参数); qs.getXXX
guokehua(@yahoo.com.cn 自a 技术核心之三:用实体Bean实现查询多条记录 方法:第一步:只需在客户端调用本地接口的 findXXx函数,会返回一个 Collection,实际上就指向 多个Bean;千万注意,此时Bean处于池状态,只是很 多具有主键的空壳,随时可能被代替;第二步:将 Collection里面的内容取出,得到一个个不同的Beam, 调用远程接口的get方法来取得值 ·底层调用顺序:构造函数(数据库连接) setSession Context(进入池状态) ejbfindXXX(将主键 读入空壳处于池状态):.调用ge函数 ejbactivate(进入准备状态)— - ejbload(将数据填满空 壳) -ejbStore(协会数据库一次,似乎无用) ·前提:构造函数里面写好了数据库连接; ejbFindXXx函数里面保证能将主键填入 Collection中 (返回主键给环境); ejbActivate函数保证从环境得到主 键; ejbload保证写好了数据载入语句; ejbstore里面 写好修改语句 郭克华J2EE框架实战教学视频
oy Java! J guokehua@yahoo.com.cn 郭克华J2EE框架实战教学视频 技术核心之三:用实体Bean实现查询多条记录 • 方法:第一步:只需在客户端调用本地接口的 findXXX函数,会返回一个Collection,实际上就指向 多个Bean;千万注意,此时Bean处于池状态,只是很 多具有主键的空壳,随时可能被代替;第二步:将 Collection里面的内容取出,得到一个个不同的Bean, 调用远程接口的get方法来取得值 • 底层调用顺序:构造函数 (数据库连接 )—— setSessionContext(进入池状态 )——ejbfindXXX(将主键 读入空壳,处于池状态 );调用get函数—— ejbActivate(进入准备状态 )——ejbLoad(将数据填满空 壳 )——ejbStore(协会数据库一次,似乎无用 ) • 前提:构造函数里面写好了数据库连接; ejbFindXXX函数里面保证能将主键填入Collection 中 (返回主键给环境 );ejbActivate函数保证从环境得到主 键;ejbLoad保证写好了数据载入语句;ejbStore里面 写好修改语句
guokehua(@yahoo.com.cn Y客户端实现 Properties pt=new Propertieso pt. put( Context. INITIAL CONTEXT FACTORY, weblogic jndi. WL InitialContextFactory") pt. put(Context PROVIDER URL, t3: //127.0.0.1: 7001) pt. put( Context. SECURITY PRINCIPAL, system) pt. put(Context. SECURITY_CREDENTIALS,"passwd");Context ic=new InitialContext(pt) Object obi ic lookup ("BMPBean Remote); BMPRemote Home gsh (BMPRemoteHome) PortableRemoteObject narrow(obj, BMPRemote Home.class); Collection c= qsh. findXXX(参数) Iterator ite=c iterator while(ite. hasNextO) BMPRemote br (BMPRemote)PortableRemoteObject narrow(ite nexto, BMPRemotec lass System. out. printIn(br. getXXX) 郭克华J2EE框架实战教学视频
oy Java! J guokehua@yahoo.com.cn 郭克华J2EE框架实战教学视频 客户端实现 Properties pt = new Properties(); pt.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WL InitialContextFactory"); pt.put(Context.PROVIDER_URL,"t3://127.0.0.1:7001"); pt.put(Context.SECURITY_PRINCIPAL,"system"); pt.put(Context.SECURITY_CREDENTIALS,“passwd"); Context ic = new InitialContext(pt); Object obj = ic.lookup(“BMPBeanRemote”); BMPRemoteHome qsh = (BMPRemoteHome)PortableRemoteObject.narrow(obj,BMPRemote Home.class); Collection c = qsh.findXXX(参数); Iterator ite = c.iterator(); while(ite.hasNext()){ BMPRemote br = (BMPRemote)PortableRemoteObject.narrow(ite.next(),BMPRemote.c lass); System.out.println(br.getXXX);
guokenua(@yahoo.com.cn 技术核心之四:用实体Bean实现修改 方法:第一步:只需在客户端调用本地接口的 findBy Primary Key函数,会返回一个远程接口,实际 上就指向这个Bean;千万注意,此时Bean处于池状态, 只是一个具有主键的空壳,随时可能被代替;第二步: 调用远程接口的set方法来设置值 底层调用顺序:构造函数(数据库连接)—一 set session Context((进入池状态 ejbfindBy Primary Key(将主键读入空壳处于池状态) 调用set函数— - ejbActivate(进入准备状态 ejbLoad(将数据填满空壳,似乎无用)—- ejb store(保存 进入数据库) 前提:构造函数里面写好了数据库连接; ejbFindBy Primary Key函数里面保证能将主键填入Bean 中(返回主键给环境); ejbActivate函数保证从环境得到 主键; ejbload保证写好了数据载入语句; ejbStore里 面写好修改语句 郭克华J2EE框架实战教学视频
oy Java! J guokehua@yahoo.com.cn 郭克华J2EE框架实战教学视频 技术核心之四:用实体Bean实现修改 • 方法:第一步:只需在客户端调用本地接口的 findByPrimaryKey函数,会返回一个远程接口,实际 上就指向这个Bean;千万注意,此时Bean处于池状态, 只是一个具有主键的空壳,随时可能被代替;第二步: 调用远程接口的set方法来设置值 • 底层调用顺序:构造函数 (数据库连接 )—— setSessionContext(进入池状态 )—— ejbfindByPrimaryKey(将主键读入空壳,处于池状态 ); 调用set函数——ejbActivate(进入准备状态 )—— ejbLoad(将数据填满空壳,似乎无用 )——ejbStore(保存 进入数据库 ) • 前提:构造函数里面写好了数据库连接; ejbFindByPrimaryKey函数里面保证能将主键填入Bean 中 (返回主键给环境 );ejbActivate函数保证从环境得到 主键;ejbLoad保证写好了数据载入语句;ejbStore 里 面写好修改语句
guokenua(@yahoo.com.cn Oy JC 客户端实现 Properties pt=new Properties( pt. put(Context. INITIAL CONTEXT FACTORY, " weblo gic jndi. WLInitialContextFactory") pt. put( Context PROVIDER URL, t3: //127.0.0.1: 7001) 1010 pt. put(Context. SECURITY PRINCIPAL, system") pt. put( Context. SECURITY CREDENTIALS, passwd"; Context ic =new InitialContext(pt) Object obj=ic lookup("BMPBean remote") BMPRemoteHome gsh (BMPRemote Home) PortableRemoteObject narrow(obj, B MPRemoteHome.class) BMPRemote qs= qsh. findBy Primary Key(参数) qs. setXXX 郭克华J2EE框架实战教学视频
oy Java! J guokehua@yahoo.com.cn 郭克华J2EE框架实战教学视频 客户端实现 Properties pt = new Properties(); pt.put(Context.INITIAL_CONTEXT_FACTORY,"weblo gic.jndi.WLInitialContextFactory"); pt.put(Context.PROVIDER_URL,"t3://127.0.0.1:7001"); pt.put(Context.SECURITY_PRINCIPAL,"system"); pt.put(Context.SECURITY_CREDENTIALS,“passwd"); Context ic = new InitialContext(pt); Object obj = ic.lookup(“BMPBeanRemote”); BMPRemoteHome qsh = (BMPRemoteHome)PortableRemoteObject.narrow(obj,B MPRemoteHome.class); BMPRemote qs = qsh.findByPrimaryKey(参数); qs.setXXX