JSF页面通过受管Bean访问数据库.ppt

  1. 1、本文档共33页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
JSF页面通过受管Bean访问数据库

总结 直接通过受管Bean访问数据库的要点如下: 从WEB容器注入实体管理器对象 @PersistenceContext(unitName = jpaTestPU) private EntityManager em; 2. 注入用户事务管理器: @Resource private javax.transaction.UserTransaction utx; 3. 用实体管理器实现实体与数据库的转换 entityObjct = new Student(); 创建新实体对象 em.persist(entityObject);保存实体对象到数据库 query=em.createQuery()创建查询对象 ListStudent Items=query.getResultList();得取查询结果 4. 通过Session对象实现同一会话中不同页面/受管Bean之间的数据共享和交换。 问题? 直接在受管Bean中访问数据库有哪些优缺点? 特点: 所有业务都在WEB容器中进行 客户的Http请求和响应,业务逻辑的处理,与数据库连接的建立和拆除,事务处理。 优点:很少的Java类,结构简单。 缺点: 当并发用户很多时,会出现什么情况? 需要建立大量与数据库的连接 需要大量的内存为每个用户服务 WEB容器承担巨大运行负载 不同用户之间有大量重复空闲的内存占用,如受管Bean中操作数据库的方法。 解决办法: 应用EJB体系架构 使用独立的应用服务器(EJB容器) 请学习下一讲:JSF+EJB+JPA访问数据库。 JSF页面通过受管Bean访问数据库 本讲原代码:06jpaTest.zip 提纲 创建数据库表和实体类 通过JSF向表中添加数据 通过JSF显示数据列表 实现记录间的导航 删除记录 按条件查询 将查询结果与其它页面共享 在受管Bean中用JPA访问数据库的系统结构示意图: 受管Bean (XXXController) 。。。 数据* 实体管理器 DB 表/记录 实体(集) 客户1会话 受管Bean WEB容器 持久性上下文 实体(集) JSF页面 JSF页面 http http 受管Bean (XXXController) 数据* 客户n会话 受管Bean 持久性上下文 实体(集) JSF页面 JSF页面 数据项* 数据项* 1.创建数据库表和实体类 在示例数据库中创建一个简单的表Student, 仅包含id,name两个字段 将id设定为key 创建一个使用JavaServerFaces(JSF2)框架的WEB应用项目 设项目名为jpaTest 根据Student表创建实体类Student.class 应用netbeans的向导,基于数据库生成实体类 同时创建持久性单元 1.1 实体类 @Entity @Table(name = STUDENT) public class Student implements Serializable { private static final long serialVersionUID = 1L; @Id @Basic(optional = false) @Column(name = ID) private String id; @Column(name = NAME) private String name; … } 2.通过JSF页面向表中添加数据 基本的JSF由两个部分构成:Facelets页面文件和用Java实现的受管Bean 创建受管Bean, 定义一个Student类型的实例成员current,设置其setters/getters 添加用JPA访问数据库的代码 实现添加实体的功能 创建添加实体的JSF页面 2.1 支持访问数据库的受管Bean @ManagedBean @SessionScoped public class StudentMB { //从WEB容器注入实体管理器对象,引用持久性单元jpaTestPU @PersistenceContext(unitName = jpaTestPU) private EntityManager em; //引用用户管理的事务管理器 @Resource private javax.transaction.UserTransaction utx; Student current; protected void persist(Object object) { try { utx.begin(); em.persist(ob

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档