




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1Java EE运用技术根底2回想:EJBJAR、WAR和EAREJB:32+1会话BeanSLSB SFSB会话Bean部署3回想:EJBJNDI编程:JNDI类编程过程javax.naming.Contextinterface其中INITIAL_CONTEXT_FACTORY 和PROVIDER_URL 。javax.naming.Naminginterfacejavax.naming.InitialContextclass其中lookup、list、bind() 、createSubcontext()、unbind Java.util.Propertesclass其中setPropert
2、ies和getProperties、list/设置初始化上下文的参数,主要是设置JNDI驱动的类名/java.naming.factory.initial和提供命名效力的的URL -vider.url,/ java.naming.factory.initial的值因提供JNDI效力器的不同而不同,/vider.url的值包括提供命名效力的主机地址和端口号。Properties p=new Properties();p.setProperty(java.naming.factory.initial, erfaces
3、.NamingContextFactory);p.setProperty(vider.url, localhost:1099);/ 初始化上下文环境,生成一个上下文实例InitialContext jndiContext = new InitialContext(p);Object lookupObject=jndiContext.lookup(“jndiname);4回想:EJB着重说一下Jboss EJB JNDI称号默许的命名规那么:1假设 EJB 打包进后缀为*.ear的 JavaEE发布文件,默许的 JNDI途径称号是访问本地接口:EAR-FILE-BA
4、SE-NAME/EJB-CLASS-NAME/local访问远程接口:EAR-FILE-BASE-NAME/EJB-CLASS-NAME/remote例:EJB HelloEjb打包进名为HelloEjb.ear的JavaEE运用,访问它远程接口的 JNDI名是:HelloEjb/HelloEjbBean/remote2假设 EJB 运用打包成后缀为*.jar的发布文件, 默许的 JNDI途径称号是访问本地接口:EJB-CLASS-NAME/local访问远程接口:EJB-CLASS-NAME/remote例: HelloEjb 运用打包成 HelloEjb.jar 文件,访问它远程接口的 J
5、NDI称号是: HelloEjbBean/remote另外有一点要留意:EJB-CLASS-NAME 是不带包名的,如 .ujn.test.HelloEjbBean只需取HelloEjbBean。5回想:音讯驱动Bean音讯驱动BeanProducer1Producer2TopicConsumer1Consumer2Producer1Producer2QueueConsumer16回想:音讯驱动Bean7回想:音讯驱动Bean8第9章 JAVA 耐久API 9学习要点: 实体Bean实体类实体的生命周期事务处置直接支配实体数据并发访问和锁查找实体和Query API命名查询EJB-
6、QL言语10第9章 JAVA 耐久API 9.1 Java耐久化 API 概述9.2 数据库同步119.1 Java耐久化 API 概述9.1.1 实体Bean9.1.2 实体类9.1.3 实体的生命周期9.1.4 事务处置129.1.1 实体Bean实体Bean有着一组属性并且每个属性与数据库表中的每个字段一一对应。公开get和set方法供外界访问。 每一个属性对应数据库表中的一个字段,这样一个Bean实例就对应了表中的一条记录。 并不是固定的一个实例对应一条记录 。139.1.1 实体Bean坚持实体Bean可以手工完成耐久化操作 可以让EJB容器完成耐久化操作 实体bean和对话bean
7、的比较实体bean不允许保管每个客户端的信息。会话bean允许保管客户端的形状信息。实体bean允许保管记录的,会话bean既可以保管客户端的信息又可以保管数据库记录的信息。 会话bean也不能提供在一样或不同的EJB类调用间进展全局的事务控制。实体Bean的分类1CMP类型的实体Bean2BMP类型的实体Bean149.1.2 实体类 实体类用于表示数据库中的表,实体类的编写主要确定如下信息:该实体与数据库中的哪个表对应;实体类中的属性与表中的哪个字段对应;实体类中的哪个属性是主键。159.1.2 实体类编写实体类的主要知识点声明该类为实体类:Entity声明该实体类与哪个表对应:Table
8、(name = userinfo)声明该实体类与表中的哪个列对应,如:声明主键,如:Column(name = userid, nullable = false) private String userid;Column(name = username, nullable = false) private String username;Column(name = userpass, nullable = false) private String userpass;Column(name = usertype, nullable = false) private char usertype;
9、 IdGeneratedValue(strategy=GenerationType.AUTO)169.1.3 实体的生命周期 受管新建删除分别new()persist()persist()remove()终止PersistenceContextmerge()17第9章 JAVA 耐久API 9.1 Java耐久化 API 概述9.2 数据库同步189.2 数据库同步9.2.1 直接支配实体数据9.2.3 查找实体和Query API9.2.4 命名查询9.2.5 EJB-QL言语199.2.1 直接支配实体数据实体数据RDBMS实 体耐久化提供者O/R Mapping现有运用直接修正数据库20
10、9.2.3 查找实体和Query API find()操作的方法签名。EntityManager API的运用步骤:从EntityManager获得javax.persistence.Query实例。自定义Query实例。比如,设置查询参数、控制结果集的大小。执行查询。 运用EJB-QL和SQL创建查询的EntityManager操作:/* 经过主键进展查找 */public T find(Class entityClass, Object primaryKey);/* 创建执行EJB QL语句的Query */public Query createQuery(String ejbqlStri
11、ng);/* 创建执行原生SQL语句的Query */public Query createNativeQuery(String sqlString);219.2.3 查找实体和Query API从数据库中前往一切Account实体的简单EJB-QL查询实例。重载createNativeQuery()方法。将SQL结果集数据映射到实体,从而前往给客户。public List listAccounts() Query query = manager.createQuery(SELECT a FROM Account a);return query.getResultList();public Q
12、uery createNativeQuery(String sqlString, Class resultClass);public Query createNativeQuery(String sqlString, String resultSetMapping);229.2.4 命名查询 能够需求在整个耐久化单元中运用单个查询语句,或者需求为部署者或管理员提供变卦查询语句的便利,这时我们可以运用静态查询Static Query,静态查询也被称之为命名查询Named Query。 239.2.4 命名查询 从外部的命名查询字符串创建Query对象,需求运用EntityManager提供的如下
13、操作。在调用createNamedQuery之前,开发者必需定义好相应的命名查询。比如,在如下给出的listAccounts()方法中运用了这一操作。/* 创建命名查询EJB QL或原生SQL */public Query createNamedQuery(String name);public List listAccounts() Query query = manager.createNamedQuery(findThem);return query.getResultList();249.2.5 EJB-QL言语 EJB-QL 用来在CMP类型的EJB中描画 finders和selec
14、t 方法。设计这种言语的目的是严厉地描画内存对象的查询,而不是数据库的查询。 但是EJB-QL的语法与 SQL非常类似。它有三个根本语句: SELECT、FROM、WHERE。经过这几个语句可以实现各种各样的组合。 259.2.5 EJB-QL言语 常用语法:当处置一个select方法时,前往类型 ( SELECT语句) 可以不用是 OBJECT(x)。 可以为恣意类型的恣意值。例如如下: SELECT OBJECT(variable) FROM abstractSchemaName AS variable WHERE value comparison valueSELECT DISTINCT
15、 value FROM abstractSchemaName AS variable WHERE . 26回想:Hibernate开发步骤:导入JAR包+hibernate.cfg.xmlPOJO类映射文件:*.hbm.xml,需求在hibernate.cfg.xml中声明DAO层接口和实现类目录构造参考WEB-INF/classes/hibernate.cfg.xml*.model.pojo类 + *.model.映射文件*.hbm.xml *.DAO.DAO层接口和实现类27JPA开发步骤:配置文件 persistence.xml 编写带标注的实体类编写DAO层类目录构造:META-INF
16、/persistence.xml实体Bean:带注释的POJO类DAO层接口和实现类会话Bean28例子:开发JPA29开发JPA步骤:1. 创建一个工程,并添加 JPA CapabilitiesJPA 开发功能 ; 2. 运用 DB Explorer 视图来选中表并反向工程生成 JPA 代码。30开发JPA预备任务:新建XSB表在MyEclipse Database Explorer视图下,建立一个MySQL数据库的衔接略列名描述数据类型可空默认值说明XH学号Char(6)无主键XM姓名Char(8)无XB性别bit无1:男,0:女CSSJ出生时间datetime无ZY_ID专业IDint无
17、ZXF总学分int无BZ备注Varchar(200)无ZP照片mediumblob无31开发JPA新建一个Java Project:hellojpa32开发JPA添加JPA的开发才干33开发JPA新建package:cn.ujn.jpa.dao切换到MyEclipse Database Explorer视图下,选中表xsb并反向工程生成 JPA 代码34开发JPA切换回MyEclipse Java Enterprise视图下,查看生成的代码:35开发JPA编写测试类:新建类TestJPA.java36开发JPATestJPA.java代码如下:public class TestJPA publ
18、ic static void main(String args) IXsbDAO xsbdao = new XsbDAO();Xsb xsb = new Xsb();xsb.setXh(202101);xsb.setXm(刘鹍);xsb.setXb(Byte.valueOf(0);xsb.setZyId(123);xsb.setCssj(Date.valueOf(1980-01-01);xsb.setZxf(170);xsb.setBz(备注);EntityManagerHelper.beginTransaction();xsbdao.save(xsb);EntityManagerHelper
19、mit();List xslist = xsbdao.findAll();for (Xsb xs : xslist) String xb = xs.getXb().toString().equals(0) ? 男 : 女;System.out.println(姓名: + xs.getXm() + 学号: + xs.getXh()+ 性别: + xb);System.out.println(-);37开发JPA运转结果如下38例子:开发实体Bean39开发实体Bean预备任务:新建XSB表在MyEclipse Database Explorer视图下,建立一个MySQL数据库的衔接略列名描述数据
20、类型可空默认值说明XH学号Char(6)无主键XM姓名Char(8)无XB性别bit无1:男,0:女CSSJ出生时间datetime无ZY_ID专业IDint无ZXF总学分int无BZ备注Varchar(200)无ZP照片mediumblob无40开发实体Bean预备任务:新建JNDI Data Source找到Data Source的模板,途径如以下图所示,找到mysql-ds.xml。41开发实体Bean更改后代码:修正后,拷贝mysql-ds.xml到jboss-4.2.3.GAserverdefaultdeploy下,重启JBoss mysqlDS jdbc:mysqllocalhos
21、t:3306/javaee com.mysql.jdbc.Driver root root org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter mySQL 42开发实体Bean新建EJB Project:helloEntityBean43开发实体Bean新建package:cn.ujn.ejb.entity切换到MyEclipse Database Explorer视图下,选中表xsb并反向工程生成EJB3代码44开发实体Bean查看生成的代码:45开发实体Bean打包,发布到JBoss中新建Java Project:testEntityBean在该工程的属性中,修正Java Build Path,添加JBoss client下的jar包46开发实体Bean在testEntityBean中新建package:cn.ujn.ejb.entity把helloEntityBean工程中的Xsb.java和接口XsbFacadeRemote.java拷贝到cn.ujn.ejb.entity中47开发实体Bean编写测试类新建perties新建测试类带main方法,代码如下:java.naming.factory.initia
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年初中诗词中考真题及答案
- 大学生物‘实验教学’实践研究申报书
- 中国正壬烷项目经营分析报告
- 2025年水井钻机市场调查报告
- 2025新《森林法》知识竞赛题库及答案
- 外墙岩棉板板外墙保温专项施工方案
- 2025年机械工程师职称考试题及参考答案
- 房地产项目可行性分析报告(格式稿)
- 2025年游艇驾驶员考前通关必练题库含答案
- 2025年普法知识竞赛题库及答案
- 郁南县龙运砂场有限公司新建两个2000吨级码头建设项目环境影响报告书
- 物理课件电源和电流
- 乌合之众课件
- CNG加气站设计与施工规范
- 【公开课】气压带和风带对气候的影响(课件)(人教版2019选择性必修1)
- 搜索引擎营销案例分析
- 分布式光伏发电并网调试方案
- 静脉采血操作流程及评分标准
- 幼儿园中班社会教案《我会乘坐地铁》PPT课件【幼儿教案】
- 吉塔行星模拟课程
- 电网基建工程造价管理研究论文
评论
0/150
提交评论