科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道用Java EE 5实现的网上书店实例

用Java EE 5实现的网上书店实例

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本教程介绍了如何使用NetBeans IDE以及GlassFish构建一个典型的Java EE 5应用实例。

作者:李力 来源:Csdn博客 2007年11月18日

关键字:

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共12页)

创建实体类

实体类用于表示要创建的关系数据库中的表。下面为bookshop数据库中的三张表创建实体类,实体类包括命名的查询标注、表示列的字段以及表示外键的关系。

1、右键单击“BookshopApp-ejb”项目节点,然后选择“新建”>“文件/文件夹”。

2、从“持久性”类别中,选择“通过数据库生成实体类”,然后单击“下一步”。

3、下一个窗口中,“数据源”选择”jdbc/bookshopDS”,点击”全部添加”按钮,将”可用表”中的三张表(CUSTOMER, PRODUCT, PURCHASE_ORDER)添加到”选定表”中,点击”下一步”按钮。

4、下一个窗口中,输入包名“bookshop.entities”,点击完成。

图9

生成的Product实体类的部分代码如下:

......
@Entity
@Table(name = "PRODUCT")
@NamedQueries( ...{
@NamedQuery(name = "Product.findByProductId",

query = "SELECT p FROM Product p WHERE p.productId = :productId"),
@NamedQuery(name = "Product.findByProductName",

query = "SELECT p FROM Product p WHERE p.productName = :productName"),
@NamedQuery(name = "Product.findByPurchaseCost",

query = "SELECT p FROM Product p WHERE p.purchaseCost = :purchaseCost")
})
public class Product implements Serializable ...{

@Id
@Column(name = "PRODUCT_ID", nullable = false)
private Integer productId;

@Column(name = "PRODUCT_NAME")
private String productName;

@Column(name = "PURCHASE_COST")
private Long purchaseCost;
......

实体类是一个简单的 Java 类。 @Entity 标注以将该类定义为实体类,其它标注的解释和说明可以查看相关文档。

EJB层

使用新的 EJB 3.0 API,可以减少并简化开发者需要完成的工作量,从而可以更轻松地进行软件开发。换句话说,就是使用了更少的类和代码。这是因为现在容器承担了更多的工作,从而实现了这一目的。下面是新 EJB 3.0 API 的一些功能和优点:

只需很少的类和接口。您不再需要 EJB 组件的 Home 接口和对象接口,因为现在容器负责公开必要的方法。您只需提供业务接口。您可以使用标注来声明 EJB 组件,并且通过容器来管理事务。
不再需要部署描述符。您可以在类中直接使用标注,为容器提供以前在部署描述符中定义的依赖关系和配置信息。如果没有任何特殊说明,容器将使用缺省规则来处理最常见的情况。
查找简单。您可以通过 EJBContext 直接在类中查找 JNDI 名称空间中的对象。
简化了对象关系映射。新的 Java 持久性 API 允许您使用 POJO 中的标注将 Java 对象映射到关系数据库,从而使对象关系映射变得更简单透明。

在 IDE 中,您可以对 Enterprise Beans 进行编码,就像对其他 Java 类进行编码一样,方法是:使用代码完成和编辑器提示实现正确的方法并使类与其接口保持同步。您不必使用特殊命令和对话框生成诸如业务方法或 Web 服务操作之类的内容,虽然这些命令仍可以帮助您熟悉 Java EE 5 代码的语法。

创建会话Bean

为 Product实体类创建一个会话Bean。

1、右键单击 EJB 模块,然后选择“新建”>“文件/文件夹”。

2、从“持久性”类别中,选择“实体类的会话 Bean”,然后单击“下一步”。

3、从可用的实体类列表中,选择 "Product",单击“添加”,然后单击“下一步”。

图10

包名设置为“bookshop.ejb”,选择“创建本地接口“。

5、单击“完成”。

单击“完成”后,将创建会话Bean 类和接口(ProductFacade.java,ProductFacadeLocal.java)。

ProductFacade.java代码如下:

package bookshop.ejb;

import bookshop.entities.Product;
import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

/** *//**
*
* @author Sun
*/
@Stateless
public class ProductFacade implements ProductFacadeLocal ...{

@PersistenceContext
private EntityManager em;

/** *//** Creates a new instance of ProductFacade */
public ProductFacade() ...{
}

public void create(Product product) ...{
em.persist(product);
}

public void edit(Product product) ...{
em.merge(product);
}

public void destroy(Product product) ...{
em.merge(product);
em.remove(product);
}

public Product find(Object pk) ...{
return (Product) em.find(Product.class, pk);
}

public List findAll() ...{
return em.createQuery("select object(o) from Product as o").getResultList();
}   
}

其中,标注 @Stateless 用于将类声明为无态会话 Bean 组件。标注@PersistenceContext表明,PersistenceContext 资源已直接注入到会话 Bean 组件中。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章