MyEclipse 3.15 Style——在线购买低至75折!火爆开抢>>
本教程介绍了MyEclipse中的一些基于JPA的功能。 阅读本教程时,了解JPA和实体映射如何与注释一起工作的基本概念将会很有帮助。 在本教程中,您将学习如何:
持续时间:30分钟
没有MyEclipse? 现在下载
JPA Facet最常添加到Java或Web项目中。在本教程中,您将使用一个简单的Java项目来了解JPA如何工作。
注意:您可以下载本教程中开发的项目,然后导入到你的工作区中。
1. 单击下拉菜单,然后选择Java Project。
2. 在Project Name字段中输入SampleJPAProject,接受默认选项,然后单击Finish。
3. 单击图标,然后选择MyEclipse Database Explorer来打开透视图。
4. 在DB Browser中选择MyEclipse Derby connection,然后单击下面的图标。
注意:因为您需要选择要使用的连接,所以在设置数据库连接之前无法添加JPA Facet。
5. 切换回MyEclipse Java Enterprise透视图,右键单击项目,然后选择MyEclipse> Project Facets>Install JPA Facet。
6. 在Target Runtime下拉列表中选择MyEclipse Generic Java Runtime,然后单击Next。
7. 从平台下拉列表中选择一个平台,如果JPA实现类型默认为用户库,请选择与所选平台对应的库。 如果未列出库,请单击下载图标来下载相应的库。
8. 在Connection字段中选择MyEclipse Derby,检查Add driver library to build path和Override default schema from connection复选框,然后从Schema下拉列表中选择CLASSICCARS,单击Finish。
现在该项目已添加了完整配置的JPA Facet,其中包括JPA配置信息,DB连接信息以及添加到项目构建路径中的所有必需的JDBC和JPA库。 如果这是一个Web项目,那么当项目部署到应用程序服务器并在其上运行时,所有构建路径添加都将准备好部署。
在下一节中,您将对数据库表中的数据进行反向工程,并为您的项目生成实体。 在逆向工程之前,您需要创建一个放置这些实体的Java包。
1. 展开该项目,右键单击src文件夹,然后选择New>Package。
2. 在Name字段中输入com.myeclipseide.jpa,然后单击Finish。
现在该项目已经建立,您已准备好将PRODUCTLINE表逆向工程并将其转换为项目并开始使用生成的实体。
1. 右键单击该项目,然后选择MyEclipse>Generate Entities & DAOs。
注意:您可以选择使用MyEclipse反向工程工具或DALI实体生成器。 进行选择,单击OK,然后完成向导。本教程使用MyEclipse反向工程工具。
2. 选择PRODUCTLINE表,然后单击Add,点击Next。
3. 在Java Package字段中,单击Browse,然后选择您之前创建的com.myeclipseide.jpa包。 选择以下复选框:
4.单击Finish, 查看通过扩展com.myeclipseide.jpa包生成的MyEclipse资源。
生成的实体描述如下:
注意:逆向工程完成后,可以打开Persistence透视图来使用某些持久性和数据源工具来分析数据库和项目中的数据。
由于MyEclipse生成了大量的代码,因此您可以快速专注于编写“业务逻辑”,或者更具体地说,“实际执行的代码”。在本节中,您将编写一个带有main方法的Java类,该方法将Productline插入到数据库中,检索并更新它,然后删除。使用这段代码,您应该能够看到在自己的应用程序中使用JPA实体是多么容易,而无需编写JDBC代码或任何其他持久性代码。
1. 右键单击com.myeclipseide.jpa包,然后选择New>Class。
2. 在Name字段中输入RunJPA,选择Public static void main复选框,然后单击Finish。
在生成新的类和main方法后,您需要编写代码来成功处理Productline的实例。
注意:下面的代码看起来很长很复杂,但这是因为我们试图在一个代码块中显示四个不同的示例。 如果您查看每个操作(保存,加载,更新,删除),它们都不会包含多行代码。
3. 将以下代码添加到main方法中,然后按Ctrl + S进行保存。
/* 1. Create a reference to our ID */注意: 将事务数据库的代码片段换成事务是一个好主意,所以如果操作失败(例如DB崩溃),那么试图在事务中发生的所有更改都会回滚到它们的原始值,而不是只有一半 工作完成。
String productLineID = "Men's Shoes";
/* 2. Create a new Productline instance */
Productline newProductline = new Productline(
productLineID,
"Shoes for men.", "<strong>Men's Shoes</strong>", null);
/* 3. Create a DAO instance to use */
ProductlineDAO dao = new ProductlineDAO();
/* 4. Store our new product line in the DB */
EntityManagerHelper.beginTransaction();
dao.save(newProductline);
EntityManagerHelper.commit();
/* 5. Now retrieve the new product line, using the ID we created */
Productline loadedProductline = dao.findById(productLineID);
/* 6. Print out the product line information */
System.out.println("*NEW* Product Line [productLine="
+ loadedProductline.getProductline() + ", textDescription="
+ loadedProductline.getTextdescription() + ", image="
+ loadedProductline.getImage() + "]");
/* * 7. Now let's change same value on the product line, and save the
* change
*/
loadedProductline.setTextdescription("Product line for men's shoes.");
EntityManagerHelper.beginTransaction();
dao.save(loadedProductline);
EntityManagerHelper.commit();
/*
* 8. Now let's load the product line from the DB again, and make sure
* it text description changed
*/
Productline secondLoadedProductline = dao.findById(productLineID); System.out.println("*REVISED* Product Line ["
+ "productLine=" + secondLoadedProductline.getProductline()
+ ", textDescription=" + secondLoadedProductline.getTextdescription()
+ ", image=" + secondLoadedProductline.getImage() + "]");
/* 9. Now let's delete the product line from the DB */
EntityManagerHelper.beginTransaction();
dao.delete(secondLoadedProductline);
EntityManagerHelper.commit();
/* * 10. To confirm the deletion, try and load it again and make sure it
* fails
*/
Productline deletedProductline = dao.findById(productLineID);
/*
* We use a simple inlined IF clause to test for null and print
* SUCCESSFUL/FAILED
*/
System.out.println("Productline deletion: "
+ (deletedProductline == null ? "SUCCESSFUL" : "FAILED"));
上面的代码看起来令人望而生畏,但它背靠背做了很多简单的事情。 例如,如果您只想将新项目存储在数据库中,则只需要程序中步骤1-3的代码,这些代码将三行代码相减(减去注释)即可。 以下是每个编号部分的细目:
1. 右键单击该项目,然后选择Run As>Java Application。
2. 选择RunJPA应用程序,然后单击OK。
输出显示在Console视图中。
红色文本是MyEclipse中生成的DAO和EntityHelper类的默认日志消息,黑色文本是用于跟踪进度的代码中的System.out.println文本。如您所见,从步骤6开始的第一个打印以及从步骤8开始的更新打印都按预期工作。 此外,删除也是成功的,因为删除后查询中没有Productline返回。