数据库
MyEclipse数据库教程:使用Java项目查看JPA工作方式
Java EE开发 • momo77 发表了文章 • 0 个评论 • 272 次浏览 • 2019-11-27 16:57
一般情况,JPA Facet将被添加到Java或Web项目中。在本教程中,您将使用一个简单的Java项目来查看JPA的工作方式。
注意:您可以[下载本教程中开发的项目](https://www.evget.com/resource/detail-demo-14494),然后导入到您的工作区中。
1、单击下拉箭头![请输入图片名称](https://www.evget.com/Content/ ... 53.png),然后选择Java Project。
2、在“Project Name”字段中输入SampleJPAProject,选择默认选项,然后单击“完成”。
![请输入图片名称](https://www.evget.com/Content/ ... 58.gif)
3、单击![请输入图片名称](https://www.evget.com/Content/ ... 46.png),选择MyEclipse Database Explorer打开透视图。
4、在数据库浏览器中,选择MyEclipse Derby连接,然后单击。
![请输入图片名称](https://www.evget.com/Content/ ... 54.gif)
**注意:**在建立数据库连接之前,无法添加JPA Facet,因为需要选择要使用的连接。
5、切换回MyEclipse Java Enterprise透视图,右键单击项目,然后选择**[MyEclipse](https://www.myeclipsecn.com/)** > Project Facets > Install JPA Facet。
6、在目标运行时下拉列表中选择MyEclipse通用Java运行时,然后单击下一步。
![请输入图片名称](https://www.evget.com/Content/ ... 51.png)
7、从平台下拉列表中选择一个平台,如果JPA实现类型默认为用户库,则选择与所选平台相对应的库。如果未列出任何库,可单击![请输入图片名称](https://www.evget.com/Content/ ... 10.png)下载适当的库。
![请输入图片名称](https://www.evget.com/Content/ ... 16.png)
8、在“Connection”字段中选择MyEclipse Derby,选中“Add driver library to build path”和“Override default schema”复选框,然后从“Schema”下拉列表中选择CLASSICCARS。单击完成。
![请输入图片名称](https://www.evget.com/Content/ ... 24.gif)
现在,项目中已添加了完全配置的JPA Facet,其中包括JPA配置信息/DB连接信息以及添加到项目构建路径中的所有必需的JDBC和JPA库。如果这是一个Web项目,在将项目部署到应用程序服务器上并在其中运行时,所有构建路径的附加内容都将准备好进行部署。
![请输入图片名称](https://www.evget.com/Content/ ... 70.gif)
**[下载MyEclipse>>>](https://www.myeclipsecn.com/download/)**
**[即日起至11月30日,慧都16周年·技术服务月,软件商城优惠券不限量免费领取,购MyEclipse、CodeMix享折上(MyEclipse最高省48元,CodeMix最高省36元)!](https://www.evget.com/game/index/techsrv)**
**创建一个Java包**
在下一个步骤中,对数据库表中的数据进行反向工程,并为项目生成实体。在进行逆向工程之前,需要创建一个Java包,并在其中放置这些实体。
1、展开项目,右键单击src文件夹,然后选择New > Package。
![请输入图片名称](https://www.evget.com/Content/ ... 07.gif)
2、在“Name”字段中输入com.myeclipseide.jpa,然后单击“完成”。
![请输入图片名称](https://www.evget.com/Content/ ... 64.gif)
**逆向工程数据库表**
现在已经建立了项目,可以将PRODUCTLINE表反向工程到项目中,并开始使用所生成的实体。
1、右键单击该项目,然后选择JPA Tools > Generate Entities & DAOs。
**注意:**您可以选择使用MyEclipse逆向工程工具或DALI实体生成器。选择,单击“确定”,然后完成向导。本教程使用MyEclipse逆向工程工具。
![请输入图片名称](https://www.evget.com/Content/ ... 96.png)
2、选择PRODUCTLINE表,单击添加,然后单击下一步。
![请输入图片名称](https://www.evget.com/Content/ ... 42.gif)
在“Java Package”字段中,单击“ Browse”,然后选择先前创建的com.myeclipseide.jpa程序包。选中以下复选框:
- Entity Bean Generation:让MyEclipse生成注释为用作JPA实体的普通Java类。
- Create abstract class;如果您希望自定义生成的类,而不必每次都覆盖更改,则MyEclipse可以生成基本抽象类以及您可以自定义和使用的具体子类。每次进行反向工程时,MyEclipse只会覆盖抽象基类,并在具体子类中保留更改。
- Update persistence.xml:与Hibernate类似,您可以在JPA配置文件中列出正在使用的所有JPA实体。
- Java Data Access Generation:让MyEclipse生成DAO实用程序类,让您可以立即从数据库中保存/查找/更新/删除实体。此代码包含了JPA实体管理器,使得使用实体和数据库变得非常容易。
- Generate Precise findBy Methods:让MyEclipse生成findByXXX方法,其中XXX与反转的实体上的每个属性有关。这样一来,可以使用任何属性作为查找实体的方法,轻松地从数据库访问实体。
- Generate Java Interfaces:选择此选项将创建带有相应DAO实现类的接口类。取消选择此选项仅生成DAO实现类,而没有用于定义接口的单独类。
![请输入图片名称](https://www.evget.com/Content/ ... 15.gif)
3、单击完成。查看通过展开com.myeclipseide.jpa包生成的MyEclipse资源。
![请输入图片名称](https://www.evget.com/Content/ ... 44.gif)
生成的实体描述如下:
- EntityManagerHelper:使用直接JPA时,开发人员需要使用EntityManager class。EntityManager通过提供用于访问管理器的静态方法以及易于调用的最常用操作,此生成的帮助程序类让使用EntityManager的过程变得更加容易。
- IProductline:定义相应DAO实现类的接口的类。
- Productline:此类是表示数据库表PRODUCTLINE的JPA实体(POJO)。该POJO包含PRODUCTLINE表的字段,并表示数据库中的一行。
- ProductlineDAO:此类包含EntityManagerHelper以便为我们提供易于使用的方法,专门用于在数据库中添加/查找/更新和删除产品。
注意:逆向工程完成后,您可以打开“Persistence”透视图,使用某些持久性和数据源工具来分析数据库和项目中的数据。
**编写应用程序**
由于MyEclipse生成了许多代码,所以您可以快速将精力放在“Business Logic”上,或更具体地说是“实际完成工作的代码”。在本部分中,您将编写一个具有main方法的Java类,该方法将Productline插入数据库,对其进行检索、更新并删除。使用此代码,您会发现在应用程序中使用JPA实体是多么容易!
**一、创建一个类**
1、右键单击com.myeclipseide.jpa软件包,然后选择New Class。
2、在“Name”字段中键入RunJPA,选中Public static void main复选框,然后单击“Finish”。
![请输入图片名称](https://www.evget.com/Content/ ... 76.gif)
在构建新类和main方法之后,需要编写代码来操作Productline实例。
**注意:**以下代码看起来很长而且很复杂,这是因为我们试图在一个代码块中显示四个不同的示例。如果您查看每个操作(保存、加载、更新、删除),就会发现它们都不由几行代码组成。
3、将以下代码添加到main方法中,然后按CTRL + S保存。
{{{
/* 1. Create a reference to our ID */
String productLineID = "Men's Shoes";
/* 2. Create a new Productline instance */
Productline newProductline = new Productline(
productLineID,
"Shoes for men.", "Men's Shoes", 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步中的代码,这相当于(减去注释)三行代码。以下是每个编号部分的细分:
PRODUCTLINE表使用产品线的名称作为主键。为了使本教程更容易理解,我们在字符串中定义了产品线名称,并在代码中多次运用(创建和存储产品线,然后检索两次)。
这将创建由MyEclipse生成的Productline POJO的新实例,并将其插入数据库中。对于本教程而言,这些值并不重要,所以我们只使用示例信息。
这将创建要使用的DAO实例。数据库访问需要DAO(这也是由MyEclipse生成的)。
这让DAO将新的产品系列存储在数据库中。因为要向数据库中写入一些内容,所以将save调用包含在事务中。
**[下载MyEclipse>>>](https://www.myeclipsecn.com/download/)**
**[即日起至11月30日,慧都16周年·技术服务月,软件商城优惠券不限量免费领取,购MyEclipse、CodeMix享折上(MyEclipse最高省48元,CodeMix最高省36元)!](https://www.evget.com/game/index/techsrv)**
为了确保使用第1步中定义的ID正确存储了产品系列,我们要求DAO获取产品系列,并将结果分配给一个全新的对象,以完全确保从数据库中加载了什么。(我们可以将值分配回newProductline,但是出于本教程的目的,我们必须清楚地知道对象来源,并且加载的实例之前在代码中不存在)。
这将从已加载的实体中打印出值,以确保它只是存储在数据库中的值。
这将更改刚刚加载的POJO的值,以显示更新记录的工作方式。然后,使用DAO将更改提交回数据库。同样的,此操作被包含在事务中,以确保安全地更改数据库。
与步骤5一样,使用在步骤1中定义的ID从数据库中重新加载记录,以确保更新操作有效。然后打印出POJO值,以确保新描述已保存到数据库中。
这显示了如何从数据库删除记录。同样的,由于这需要更改数据库,因此该代码被包含在事务中。
与第8步和第5步类似,为了证明删除有效,我们尝试使用给定的ID从数据库加载实体。因为我们已经删除了Productline,所以这个操作应该是失败的。从DAO获得结果后,将使用嵌入式IF子句打印一条语句,以确保结果为null。
**二、运行应用程序**
1、右键单击项目,然后选择Run As > Java Application。
2、选择RunJPA应用程序,然后单击“确定”。
![请输入图片名称](https://www.evget.com/Content/ ... 70.png)
输出显示在Console视图中。
![请输入图片名称](https://www.evget.com/Content/ ... 30.jpg)
红色文本是来自MyEclipse中生成的DAO和EntityHelper类的默认日志消息。黑色文本是代码中用于跟踪进度的System.out.println文本。如您所见,第6步中的第一个打印输出和第8步中的更新打印输出都按预期工作。并且查询没有返回Productline,证明删除也很成功。
**资源**
[Oracle JPA注释参考](https://www.oracle.com/technet ... 1.html)
[BEA JPQL参考](https://www.evget.com/resource ... -17577) 查看全部
一般情况,JPA Facet将被添加到Java或Web项目中。在本教程中,您将使用一个简单的Java项目来查看JPA的工作方式。
注意:您可以[下载本教程中开发的项目](https://www.evget.com/resource/detail-demo-14494),然后导入到您的工作区中。
1、单击下拉箭头![请输入图片名称](https://www.evget.com/Content/ ... 53.png),然后选择Java Project。
2、在“Project Name”字段中输入SampleJPAProject,选择默认选项,然后单击“完成”。
![请输入图片名称](https://www.evget.com/Content/ ... 58.gif)
3、单击![请输入图片名称](https://www.evget.com/Content/ ... 46.png),选择MyEclipse Database Explorer打开透视图。
4、在数据库浏览器中,选择MyEclipse Derby连接,然后单击。
![请输入图片名称](https://www.evget.com/Content/ ... 54.gif)
**注意:**在建立数据库连接之前,无法添加JPA Facet,因为需要选择要使用的连接。
5、切换回MyEclipse Java Enterprise透视图,右键单击项目,然后选择**[MyEclipse](https://www.myeclipsecn.com/)** > Project Facets > Install JPA Facet。
6、在目标运行时下拉列表中选择MyEclipse通用Java运行时,然后单击下一步。
![请输入图片名称](https://www.evget.com/Content/ ... 51.png)
7、从平台下拉列表中选择一个平台,如果JPA实现类型默认为用户库,则选择与所选平台相对应的库。如果未列出任何库,可单击![请输入图片名称](https://www.evget.com/Content/ ... 10.png)下载适当的库。
![请输入图片名称](https://www.evget.com/Content/ ... 16.png)
8、在“Connection”字段中选择MyEclipse Derby,选中“Add driver library to build path”和“Override default schema”复选框,然后从“Schema”下拉列表中选择CLASSICCARS。单击完成。
![请输入图片名称](https://www.evget.com/Content/ ... 24.gif)
现在,项目中已添加了完全配置的JPA Facet,其中包括JPA配置信息/DB连接信息以及添加到项目构建路径中的所有必需的JDBC和JPA库。如果这是一个Web项目,在将项目部署到应用程序服务器上并在其中运行时,所有构建路径的附加内容都将准备好进行部署。
![请输入图片名称](https://www.evget.com/Content/ ... 70.gif)
**[下载MyEclipse>>>](https://www.myeclipsecn.com/download/)**
**[即日起至11月30日,慧都16周年·技术服务月,软件商城优惠券不限量免费领取,购MyEclipse、CodeMix享折上(MyEclipse最高省48元,CodeMix最高省36元)!](https://www.evget.com/game/index/techsrv)**
**创建一个Java包**
在下一个步骤中,对数据库表中的数据进行反向工程,并为项目生成实体。在进行逆向工程之前,需要创建一个Java包,并在其中放置这些实体。
1、展开项目,右键单击src文件夹,然后选择New > Package。
![请输入图片名称](https://www.evget.com/Content/ ... 07.gif)
2、在“Name”字段中输入com.myeclipseide.jpa,然后单击“完成”。
![请输入图片名称](https://www.evget.com/Content/ ... 64.gif)
**逆向工程数据库表**
现在已经建立了项目,可以将PRODUCTLINE表反向工程到项目中,并开始使用所生成的实体。
1、右键单击该项目,然后选择JPA Tools > Generate Entities & DAOs。
**注意:**您可以选择使用MyEclipse逆向工程工具或DALI实体生成器。选择,单击“确定”,然后完成向导。本教程使用MyEclipse逆向工程工具。
![请输入图片名称](https://www.evget.com/Content/ ... 96.png)
2、选择PRODUCTLINE表,单击添加,然后单击下一步。
![请输入图片名称](https://www.evget.com/Content/ ... 42.gif)
在“Java Package”字段中,单击“ Browse”,然后选择先前创建的com.myeclipseide.jpa程序包。选中以下复选框:
- Entity Bean Generation:让MyEclipse生成注释为用作JPA实体的普通Java类。
- Create abstract class;如果您希望自定义生成的类,而不必每次都覆盖更改,则MyEclipse可以生成基本抽象类以及您可以自定义和使用的具体子类。每次进行反向工程时,MyEclipse只会覆盖抽象基类,并在具体子类中保留更改。
- Update persistence.xml:与Hibernate类似,您可以在JPA配置文件中列出正在使用的所有JPA实体。
- Java Data Access Generation:让MyEclipse生成DAO实用程序类,让您可以立即从数据库中保存/查找/更新/删除实体。此代码包含了JPA实体管理器,使得使用实体和数据库变得非常容易。
- Generate Precise findBy Methods:让MyEclipse生成findByXXX方法,其中XXX与反转的实体上的每个属性有关。这样一来,可以使用任何属性作为查找实体的方法,轻松地从数据库访问实体。
- Generate Java Interfaces:选择此选项将创建带有相应DAO实现类的接口类。取消选择此选项仅生成DAO实现类,而没有用于定义接口的单独类。
![请输入图片名称](https://www.evget.com/Content/ ... 15.gif)
3、单击完成。查看通过展开com.myeclipseide.jpa包生成的MyEclipse资源。
![请输入图片名称](https://www.evget.com/Content/ ... 44.gif)
生成的实体描述如下:
- EntityManagerHelper:使用直接JPA时,开发人员需要使用EntityManager class。EntityManager通过提供用于访问管理器的静态方法以及易于调用的最常用操作,此生成的帮助程序类让使用EntityManager的过程变得更加容易。
- IProductline:定义相应DAO实现类的接口的类。
- Productline:此类是表示数据库表PRODUCTLINE的JPA实体(POJO)。该POJO包含PRODUCTLINE表的字段,并表示数据库中的一行。
- ProductlineDAO:此类包含EntityManagerHelper以便为我们提供易于使用的方法,专门用于在数据库中添加/查找/更新和删除产品。
注意:逆向工程完成后,您可以打开“Persistence”透视图,使用某些持久性和数据源工具来分析数据库和项目中的数据。
**编写应用程序**
由于MyEclipse生成了许多代码,所以您可以快速将精力放在“Business Logic”上,或更具体地说是“实际完成工作的代码”。在本部分中,您将编写一个具有main方法的Java类,该方法将Productline插入数据库,对其进行检索、更新并删除。使用此代码,您会发现在应用程序中使用JPA实体是多么容易!
**一、创建一个类**
1、右键单击com.myeclipseide.jpa软件包,然后选择New Class。
2、在“Name”字段中键入RunJPA,选中Public static void main复选框,然后单击“Finish”。
![请输入图片名称](https://www.evget.com/Content/ ... 76.gif)
在构建新类和main方法之后,需要编写代码来操作Productline实例。
**注意:**以下代码看起来很长而且很复杂,这是因为我们试图在一个代码块中显示四个不同的示例。如果您查看每个操作(保存、加载、更新、删除),就会发现它们都不由几行代码组成。
3、将以下代码添加到main方法中,然后按CTRL + S保存。
{{{
/* 1. Create a reference to our ID */
String productLineID = "Men's Shoes";
/* 2. Create a new Productline instance */
Productline newProductline = new Productline(
productLineID,
"Shoes for men.", "Men's Shoes", 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步中的代码,这相当于(减去注释)三行代码。以下是每个编号部分的细分:
PRODUCTLINE表使用产品线的名称作为主键。为了使本教程更容易理解,我们在字符串中定义了产品线名称,并在代码中多次运用(创建和存储产品线,然后检索两次)。
这将创建由MyEclipse生成的Productline POJO的新实例,并将其插入数据库中。对于本教程而言,这些值并不重要,所以我们只使用示例信息。
这将创建要使用的DAO实例。数据库访问需要DAO(这也是由MyEclipse生成的)。
这让DAO将新的产品系列存储在数据库中。因为要向数据库中写入一些内容,所以将save调用包含在事务中。
**[下载MyEclipse>>>](https://www.myeclipsecn.com/download/)**
**[即日起至11月30日,慧都16周年·技术服务月,软件商城优惠券不限量免费领取,购MyEclipse、CodeMix享折上(MyEclipse最高省48元,CodeMix最高省36元)!](https://www.evget.com/game/index/techsrv)**
为了确保使用第1步中定义的ID正确存储了产品系列,我们要求DAO获取产品系列,并将结果分配给一个全新的对象,以完全确保从数据库中加载了什么。(我们可以将值分配回newProductline,但是出于本教程的目的,我们必须清楚地知道对象来源,并且加载的实例之前在代码中不存在)。
这将从已加载的实体中打印出值,以确保它只是存储在数据库中的值。
这将更改刚刚加载的POJO的值,以显示更新记录的工作方式。然后,使用DAO将更改提交回数据库。同样的,此操作被包含在事务中,以确保安全地更改数据库。
与步骤5一样,使用在步骤1中定义的ID从数据库中重新加载记录,以确保更新操作有效。然后打印出POJO值,以确保新描述已保存到数据库中。
这显示了如何从数据库删除记录。同样的,由于这需要更改数据库,因此该代码被包含在事务中。
与第8步和第5步类似,为了证明删除有效,我们尝试使用给定的ID从数据库加载实体。因为我们已经删除了Productline,所以这个操作应该是失败的。从DAO获得结果后,将使用嵌入式IF子句打印一条语句,以确保结果为null。
**二、运行应用程序**
1、右键单击项目,然后选择Run As > Java Application。
2、选择RunJPA应用程序,然后单击“确定”。
![请输入图片名称](https://www.evget.com/Content/ ... 70.png)
输出显示在Console视图中。
![请输入图片名称](https://www.evget.com/Content/ ... 30.jpg)
红色文本是来自MyEclipse中生成的DAO和EntityHelper类的默认日志消息。黑色文本是代码中用于跟踪进度的System.out.println文本。如您所见,第6步中的第一个打印输出和第8步中的更新打印输出都按预期工作。并且查询没有返回Productline,证明删除也很成功。
**资源**
[Oracle JPA注释参考](https://www.oracle.com/technet ... 1.html)
[BEA JPQL参考](https://www.evget.com/resource ... -17577)
MyEclipse数据库教程:JPA开发
Java EE开发 • momo77 发表了文章 • 0 个评论 • 380 次浏览 • 2019-11-15 11:54
**[慧都16周年·技术服务月,软件商城优惠券不限量免费领取,购物立减服务升级,购MyEclipse享折上折优惠!](https://www.evget.com/game/index/techsrv)**
**1、配置JPA项目**
JPA是类似于Hibernate的持久性规范,已成为Java EE 5规范的一部分。JPA使用Java 5注释来控制将普通Java类(POJO)映射到数据库表。
您可以通过创建任意受支持的基础项目类型(例如Java或Web项目)来创建启用JPA的项目,然后从MyEclipse菜单中将JPA构面添加到该项目中。右键单击该项目即可添加JPA构面,然后从菜单中选择MyEclipse > Project Facets > Install JPA Facet。同时,还可以通过打开项目的“Project Facets”属性,同时向项目添加多个构面。
![请输入图片名称](https://www.evget.com/Content/ ... 99.png)
**提供持久性**
MyEclipse为OpenJPA、Hibernate和EclipseLink JPA提供程序提供支持。
![请输入图片名称](https://www.evget.com/Content/ ... 35.gif)
**数据库配置**
将项目与数据库和架构相关联,为设计时工具提供支持。如下图所示,项目与本地MyEclipse Derby数据库的数据库驱动程序关联。
![请输入图片名称](https://www.evget.com/Content/ ... 65.gif)
除了可以依赖MyEclipse附带的库,还可以单击下载图标添加要包含在项目中的用户库。
![请输入图片名称](https://www.evget.com/Content/ ... 86.png)
同时,您还可以右键单击该项目从菜单中选择“Properties”,展开MyEclipse > Project Facets,然后选择Java Persistence,打开Java Persistence properties页面随时更改JPA项目的数据库驱动程序关联。
![请输入图片名称](https://www.evget.com/Content/ ... 83.gif)
**2、从数据库反向工程实体和DAO**
右键单击一个JPA项目,然后从菜单中选择“Generate Entities & DAOs”。您可以选择使用MyEclipse逆向工程工具或DALI实体生成器进行选择,将启动相应的JPA逆向工程向导。
![请输入图片名称](https://www.evget.com/Content/ ... 27.gif)
右键单击DB Browser视图中的表生成实体。
![请输入图片名称](https://www.evget.com/Content/ ... 73.gif)
逆向工程过程是完全可定制的。使用JPA逆向工程向导,可以选择要生成的工件以及该工件所基于的数据库表。
![请输入图片名称](https://www.evget.com/Content/ ... 38.gif)
MyEclipse还可以生成具有结果分页支持的DAO findBy<property>查询。生成的结果分页API为DAO客户端提供了细粒度的程序控制,可定位到结果集的特定行号并获取n个实体。
以下是逆向工程处理器生成的代码的几个样本片段:
![请输入图片名称](https://www.evget.com/Content/ ... 39.gif)
**3、高级实体编辑工具**
**MyEclipse Java持久性透视图**
MyEclipse Java Persistence透视图为面向jpa的任务提供了最佳的编辑器和视图布局。
![jpa-persistence-perspective-clipped.jpg](https://www.evget.com/Content/ ... 24.jpg)
**JPA Details视图**
通过“JPA Details”视图,可以轻松编辑实体注释。
![请输入图片名称](https://www.evget.com/Content/ ... 77.gif)
**JPA Diagram编辑器**
JPA Diagram编辑器使您可以轻松创建新实体或在现有JPA项目中编辑实体。
![请输入图片名称](https://www.evget.com/Content/ ... 73.png)
**JPA Annotation Table和Column Content Assist**
![请输入图片名称](https://www.evget.com/Content/ ... 83.gif)
**JPA Entity Validation**
可检测到映射中的错误并在编辑器和“Problems”视图中显示。
![请输入图片名称](https://www.evget.com/Content/ ... 88.gif)
可以在项目级别启用或禁用JPA Entity Validator。
![请输入图片名称](https://www.evget.com/Content/ ... 46.gif)
**4、高级Spring-JPA集成**
**Spring 2支持**
将JPA构面添加到已经具有Spring构面的项目时,您可以选择高级Spring-JPA支持(反之亦然)。这种级别的支持使JPA工具可以与项目的Spring工件一起使用。下图显示了Spring-JPA项目配置向导。
![jpa-spring-addcaps.jpg](https://www.evget.com/Content/ ... 05.jpg)
选择Spring-JPA支持,主要bean配置文件,并自定义bean id和事务支持。
![请输入图片名称](https://www.evget.com/Content/ ... 73.gif)
**逆向工程实体和数据库中的Spring DAO**
对于配置为支持高级Spring-JPA功能的项目,除了从数据库架构生成实体类之外,还可以生成与Spring兼容的DAO。在逆向工程过程中,将使用每个DOA类的生成的bean条目更新Spring应用程序上下文文件。
生成Spring DAO:
![请输入图片名称](https://www.evget.com/Content/ ... 06.gif)
生成的Spring应用程序上下文文件:
![请输入图片名称](https://www.evget.com/Content/ ... 88.gif)
生成的Spring DAO扩展自Spring的JpaDaoSupport:
![请输入图片名称](https://resources.cloud.genuit ... ao.gif) 查看全部
**[慧都16周年·技术服务月,软件商城优惠券不限量免费领取,购物立减服务升级,购MyEclipse享折上折优惠!](https://www.evget.com/game/index/techsrv)**
**1、配置JPA项目**
JPA是类似于Hibernate的持久性规范,已成为Java EE 5规范的一部分。JPA使用Java 5注释来控制将普通Java类(POJO)映射到数据库表。
您可以通过创建任意受支持的基础项目类型(例如Java或Web项目)来创建启用JPA的项目,然后从MyEclipse菜单中将JPA构面添加到该项目中。右键单击该项目即可添加JPA构面,然后从菜单中选择MyEclipse > Project Facets > Install JPA Facet。同时,还可以通过打开项目的“Project Facets”属性,同时向项目添加多个构面。
![请输入图片名称](https://www.evget.com/Content/ ... 99.png)
**提供持久性**
MyEclipse为OpenJPA、Hibernate和EclipseLink JPA提供程序提供支持。
![请输入图片名称](https://www.evget.com/Content/ ... 35.gif)
**数据库配置**
将项目与数据库和架构相关联,为设计时工具提供支持。如下图所示,项目与本地MyEclipse Derby数据库的数据库驱动程序关联。
![请输入图片名称](https://www.evget.com/Content/ ... 65.gif)
除了可以依赖MyEclipse附带的库,还可以单击下载图标添加要包含在项目中的用户库。
![请输入图片名称](https://www.evget.com/Content/ ... 86.png)
同时,您还可以右键单击该项目从菜单中选择“Properties”,展开MyEclipse > Project Facets,然后选择Java Persistence,打开Java Persistence properties页面随时更改JPA项目的数据库驱动程序关联。
![请输入图片名称](https://www.evget.com/Content/ ... 83.gif)
**2、从数据库反向工程实体和DAO**
右键单击一个JPA项目,然后从菜单中选择“Generate Entities & DAOs”。您可以选择使用MyEclipse逆向工程工具或DALI实体生成器进行选择,将启动相应的JPA逆向工程向导。
![请输入图片名称](https://www.evget.com/Content/ ... 27.gif)
右键单击DB Browser视图中的表生成实体。
![请输入图片名称](https://www.evget.com/Content/ ... 73.gif)
逆向工程过程是完全可定制的。使用JPA逆向工程向导,可以选择要生成的工件以及该工件所基于的数据库表。
![请输入图片名称](https://www.evget.com/Content/ ... 38.gif)
MyEclipse还可以生成具有结果分页支持的DAO findBy<property>查询。生成的结果分页API为DAO客户端提供了细粒度的程序控制,可定位到结果集的特定行号并获取n个实体。
以下是逆向工程处理器生成的代码的几个样本片段:
![请输入图片名称](https://www.evget.com/Content/ ... 39.gif)
**3、高级实体编辑工具**
**MyEclipse Java持久性透视图**
MyEclipse Java Persistence透视图为面向jpa的任务提供了最佳的编辑器和视图布局。
![jpa-persistence-perspective-clipped.jpg](https://www.evget.com/Content/ ... 24.jpg)
**JPA Details视图**
通过“JPA Details”视图,可以轻松编辑实体注释。
![请输入图片名称](https://www.evget.com/Content/ ... 77.gif)
**JPA Diagram编辑器**
JPA Diagram编辑器使您可以轻松创建新实体或在现有JPA项目中编辑实体。
![请输入图片名称](https://www.evget.com/Content/ ... 73.png)
**JPA Annotation Table和Column Content Assist**
![请输入图片名称](https://www.evget.com/Content/ ... 83.gif)
**JPA Entity Validation**
可检测到映射中的错误并在编辑器和“Problems”视图中显示。
![请输入图片名称](https://www.evget.com/Content/ ... 88.gif)
可以在项目级别启用或禁用JPA Entity Validator。
![请输入图片名称](https://www.evget.com/Content/ ... 46.gif)
**4、高级Spring-JPA集成**
**Spring 2支持**
将JPA构面添加到已经具有Spring构面的项目时,您可以选择高级Spring-JPA支持(反之亦然)。这种级别的支持使JPA工具可以与项目的Spring工件一起使用。下图显示了Spring-JPA项目配置向导。
![jpa-spring-addcaps.jpg](https://www.evget.com/Content/ ... 05.jpg)
选择Spring-JPA支持,主要bean配置文件,并自定义bean id和事务支持。
![请输入图片名称](https://www.evget.com/Content/ ... 73.gif)
**逆向工程实体和数据库中的Spring DAO**
对于配置为支持高级Spring-JPA功能的项目,除了从数据库架构生成实体类之外,还可以生成与Spring兼容的DAO。在逆向工程过程中,将使用每个DOA类的生成的bean条目更新Spring应用程序上下文文件。
生成Spring DAO:
![请输入图片名称](https://www.evget.com/Content/ ... 06.gif)
生成的Spring应用程序上下文文件:
![请输入图片名称](https://www.evget.com/Content/ ... 88.gif)
生成的Spring DAO扩展自Spring的JpaDaoSupport:
![请输入图片名称](https://resources.cloud.genuit ... ao.gif)
MyEclipse数据库教程:Hibernate开发
Java EE开发 • momo77 发表了文章 • 0 个评论 • 313 次浏览 • 2019-11-15 11:46
**[慧都16周年·技术服务月,软件商城优惠券不限量免费领取,购物立减服务升级,购MyEclipse享折上折优惠!](https://www.evget.com/game/index/techsrv)**
**1、什么是Hibernate?**
Hibernate是一种非常流行的、基于Java的开源对象关系映射(JORM)引擎,易于启动和运行,提供了丰富的功能,包括:
- 多种映射策略
- 传递持久性
- 单对象到多表的映射
- 集合支持
- 多态关联
- 可自定义的SQL查询
Hibernate用于在运行时将数据库结构映射到Java对象。使用像Hibernate这样的持久性框架,开发人员可以专注于编写业务逻辑,而不是编写准确、高效的持久性层(包括DAO、SQL查询、JDBC代码、连接管理等)。
任何需要在Java应用程序对象和数据库表之间移动数据的Java应用程序都可以使用Hibernate。因此,它在开发两层和三层Java EE应用程序中非常有用。将Hibernate集成到您的应用程序中涉及:
- 将Hibernate核心和支持JAR库安装到项目中
- 创建一个hibernate.cfg.xml文件来描述如何访问数据库
- 为每个可持久的Java类创建单独的映射描述符文件
**1.1导致Hibernate的历史**
在Java数据库和Web编程的早期,开发人员使用java.sql包提供的不同类访问其数据库,这包括从DriverManager获取驱动程序、创建和使用连接、正确处理异常、关闭连接等。在此阶段,一个常见的问题是忘记清理数据库连接,并在它们运行了一段时间后在应用程序中得到连接异常的反馈。
几年后,连接池成为一个大话题,因为它们让开发人员不用再担心创建和管理(清理)数据库连接,而是把精力集中在他们的SQL和ResultSet解析代码上。突然之间,长时间运行的应用程序中数据库连接异常的问题基本解决了。但是,仍然经常看到数百行样板代码用于用值填充查询并解析SQL查询返回的ResultSet。
又过了几年,有人想到了将ResultSet结果直接自动映射到Java对象的方法,这在很大程度上解决了所有冗余样板解析代码的问题。那时,Java数据库开发已经迈出了几大步,并且变得越来越简单。然后,Hibernate模式为人熟知。
随着Hibernate的出现,不仅这些东西会继续自动化,Hibernate也会管理内存中对象的状态,它会担心何时以及如何从数据库读取或写入对象值。现在,开发人员只处理对象(或映射对象),Hibernate则处理其他所有内容。开发人员不再编写JDBC和SQL代码。相反,他们使用的是为他们工作的代码。
当Hibernate出现时,另一种可用的持久性技术是EJB2.x。Hibernate的时间安排、易用性和强大功能都是Java领域在相当长一段时间内所采用的最快技术之一。
**2、Hibernate项目配置**
您可以通过创建任何受支持类型的基础项目(例如Java或Web项目)添加Hibernate facet,来创建启用了hibernate的项目。MyEclipse为您创建一个hibernate.cfg.xml文件,您必须指定数据库连接详细信息。
您也可以通过打开项目的Project Facets属性,将多个构面同时添加到项目中。
![请输入图片名称](https://www.evget.com/Content/ ... 55.png)
**2.1Hibernate映射和配置**
Hibernate用Java编写,可以通过两种类型的配置文件进行高度配置。第一种配置文件名为hibernate.cfg.xml。启动时,Hibernate会查询此XML文件的操作属性,例如数据库连接字符串和密码、数据库方言以及映射文件的位置。Hibernate在类路径上搜索此文件。
![请输入图片名称](https://www.evget.com/Content/ ... 79.png)
第二种类型的配置文件是映射描述(文件扩展名* .hbm),它指示Hibernate如何在特定的Java类和一个或多个数据库表之间映射数据。MyEclipse提供了用于处理所有这些配置文件类型的工具,并在您更改数据库和Hibernate映射的Java类时使它们保持同步。编辑器具有以下功能:
- 基于表单的高级编辑器和随附的向导
- 超链接导航到引用的类和属性
- 类名自动完成
- 属性名称自动完成
- 内容有助于映射文件元素、属性和值
![请输入图片名称](https://www.evget.com/Content/ ... 23.png)
![请输入图片名称](https://www.evget.com/Content/ ... 78.gif)
![请输入图片名称](https://www.evget.com/Content/ ... 76.gif)
**3、逆向工程数据库表**
您可以将数据库表信息反向工程为Hibernate(Java)对象,然后将它们添加到项目中。为了最大程度地控制生成的Hibernate对象,可以在向导中选择详细信息,例如主键生成策略、对象名称、类型等。
在Database Explorer透视图中,可以查看所连接的数据库的内容。在DB浏览器中,右键单击要反向工程的表,然后从菜单中选择Hibernate Reverse Engineering。完成向导后,系统将提示您切换到Hibernate透视图。
![请输入图片名称](https://www.evget.com/Content/ ... 07.png)
这些类将生成到在向导中选择的Java包中。
![请输入图片名称](https://www.evget.com/Content/ ... 46.png)
对数据库表进行反向工程时,实体将显示在配置文件的Mappings部分中。
**4. HQL Editor**
HQL Editor以及Hibernate透视图中的其他HQL视图可帮助开发、评估或测试HQL查询。HQL是一种类似于SQL的语言,称为Hibernate查询语言。它有时看起来像是简化的SQL,使用对象名和引用而不是表名和列名。该编辑器具有以下功能:
- 内容辅助
- 输入时,Hibernate动态查询转换器视图将HQL查询转换为SQL。
- Hibernate Query Results视图可以包含多个结果集。结果属性显示在Properties视图中。
- 查询参数视图可轻松执行变量查询。
- 项目选择器,可以在不同的Hibernate项目之间切换上下文。
使用HQL Editor,可以即时编写并运行HQL。编辑器利用MyEclipse从数据库进行反向工程的对象,将查询转换为SQL(如右下所示),然后运行它。结果在Java对象中返回,并显示在左下角。
![请输入图片名称](https://www.evget.com/Content/ ... 90.png)
对数据库进行反向工程之后,就可以开始编写应用程序以读取、写入和更新数据库中的对象。放置好Java类和方法后,可以在HQL Editor中运行Hibernate查询来查询数据库,这是查询数据库的另一种方法。您还可以切换到Database Explorer透视图并从那里查询数据库以查看相同的结果。
**5、Criteria Editor**
除了HQL编辑器之外,MyEclipse Hibernate工具还包括一个Criteria编辑器。Hibernate中的Criteria是一种利用对象实例结合查询约束来针对实体创建查询的方法。例如,假设创建一个类型为User的实体实例,将实体指定为查询的条件,并告诉条件只返回前10个结果,这是创建用于实体的复杂查询的有效且快速的方法。
要访问Criteria Editor,请右键单击包含Hibernate facet的项目,然后选择MyEclipse > Open Criteria Editor。
![请输入图片名称](https://www.evget.com/Content/ ... 90.gif)
打开Criteria Editor后,可以在编辑器中输入任何表示条件的有效Java代码,并使用编辑器顶部的“Run”图标执行它们。
下面的示例显示了一个基于EchoMessage实体的简单条件,要求Hibernate返回其EchoMessageId值为2的实体。结果出现在Result视图中。
![请输入图片名称](https://www.evget.com/Content/ ... 92.png)
可以使用MyEclipse中的Criteria Editor来编写和执行任何有效的基于条件的代码。在Java编辑器中输入条件时,选择它并调用快速修复将显示“Copy to Criteria”编辑器操作。选择此操作将打开“Criteria”编辑器,并使用所选文本进行初始化。
![请输入图片名称](https://www.evget.com/Content/ ... 58.gif)
您可以在Criteria Editor中测试和编辑条件。完成后,关闭编辑器可用修改后的条件查询替换最开始选择的文本。
**6、常见问题**
**Q:**Hibernate与EJB 3/JPA相比如何?
**A:**Hibernate 3.2实际上是与JPA兼容的,它实现了所有新的注释,这些注释让JPA使用起来非常自动化且更简单。因此,除了使用JPA的commercial implementation外,还可以使用Hibernate,所有标准JPA批注仍将保留在类中,而无需进行任何更改。
**Q:**Hibernate可以扩展到非常大的应用程序吗?
**A:**可以。实际上,Hibernate的根源来自于两位创始人在大型企业应用程序中担任顾问的经验,Hibernate是他们对持久性在应用程序中应如何起作用的看法。
几年前,Gavin King向社区提出了一项挑战,要求找到手工调整的JDBC SQL。该SQL执行的幅度要比Hibernate生成的SQL快,由此也能看出该框架非常注重功能、灵活性和性能。 查看全部
**[慧都16周年·技术服务月,软件商城优惠券不限量免费领取,购物立减服务升级,购MyEclipse享折上折优惠!](https://www.evget.com/game/index/techsrv)**
**1、什么是Hibernate?**
Hibernate是一种非常流行的、基于Java的开源对象关系映射(JORM)引擎,易于启动和运行,提供了丰富的功能,包括:
- 多种映射策略
- 传递持久性
- 单对象到多表的映射
- 集合支持
- 多态关联
- 可自定义的SQL查询
Hibernate用于在运行时将数据库结构映射到Java对象。使用像Hibernate这样的持久性框架,开发人员可以专注于编写业务逻辑,而不是编写准确、高效的持久性层(包括DAO、SQL查询、JDBC代码、连接管理等)。
任何需要在Java应用程序对象和数据库表之间移动数据的Java应用程序都可以使用Hibernate。因此,它在开发两层和三层Java EE应用程序中非常有用。将Hibernate集成到您的应用程序中涉及:
- 将Hibernate核心和支持JAR库安装到项目中
- 创建一个hibernate.cfg.xml文件来描述如何访问数据库
- 为每个可持久的Java类创建单独的映射描述符文件
**1.1导致Hibernate的历史**
在Java数据库和Web编程的早期,开发人员使用java.sql包提供的不同类访问其数据库,这包括从DriverManager获取驱动程序、创建和使用连接、正确处理异常、关闭连接等。在此阶段,一个常见的问题是忘记清理数据库连接,并在它们运行了一段时间后在应用程序中得到连接异常的反馈。
几年后,连接池成为一个大话题,因为它们让开发人员不用再担心创建和管理(清理)数据库连接,而是把精力集中在他们的SQL和ResultSet解析代码上。突然之间,长时间运行的应用程序中数据库连接异常的问题基本解决了。但是,仍然经常看到数百行样板代码用于用值填充查询并解析SQL查询返回的ResultSet。
又过了几年,有人想到了将ResultSet结果直接自动映射到Java对象的方法,这在很大程度上解决了所有冗余样板解析代码的问题。那时,Java数据库开发已经迈出了几大步,并且变得越来越简单。然后,Hibernate模式为人熟知。
随着Hibernate的出现,不仅这些东西会继续自动化,Hibernate也会管理内存中对象的状态,它会担心何时以及如何从数据库读取或写入对象值。现在,开发人员只处理对象(或映射对象),Hibernate则处理其他所有内容。开发人员不再编写JDBC和SQL代码。相反,他们使用的是为他们工作的代码。
当Hibernate出现时,另一种可用的持久性技术是EJB2.x。Hibernate的时间安排、易用性和强大功能都是Java领域在相当长一段时间内所采用的最快技术之一。
**2、Hibernate项目配置**
您可以通过创建任何受支持类型的基础项目(例如Java或Web项目)添加Hibernate facet,来创建启用了hibernate的项目。MyEclipse为您创建一个hibernate.cfg.xml文件,您必须指定数据库连接详细信息。
您也可以通过打开项目的Project Facets属性,将多个构面同时添加到项目中。
![请输入图片名称](https://www.evget.com/Content/ ... 55.png)
**2.1Hibernate映射和配置**
Hibernate用Java编写,可以通过两种类型的配置文件进行高度配置。第一种配置文件名为hibernate.cfg.xml。启动时,Hibernate会查询此XML文件的操作属性,例如数据库连接字符串和密码、数据库方言以及映射文件的位置。Hibernate在类路径上搜索此文件。
![请输入图片名称](https://www.evget.com/Content/ ... 79.png)
第二种类型的配置文件是映射描述(文件扩展名* .hbm),它指示Hibernate如何在特定的Java类和一个或多个数据库表之间映射数据。MyEclipse提供了用于处理所有这些配置文件类型的工具,并在您更改数据库和Hibernate映射的Java类时使它们保持同步。编辑器具有以下功能:
- 基于表单的高级编辑器和随附的向导
- 超链接导航到引用的类和属性
- 类名自动完成
- 属性名称自动完成
- 内容有助于映射文件元素、属性和值
![请输入图片名称](https://www.evget.com/Content/ ... 23.png)
![请输入图片名称](https://www.evget.com/Content/ ... 78.gif)
![请输入图片名称](https://www.evget.com/Content/ ... 76.gif)
**3、逆向工程数据库表**
您可以将数据库表信息反向工程为Hibernate(Java)对象,然后将它们添加到项目中。为了最大程度地控制生成的Hibernate对象,可以在向导中选择详细信息,例如主键生成策略、对象名称、类型等。
在Database Explorer透视图中,可以查看所连接的数据库的内容。在DB浏览器中,右键单击要反向工程的表,然后从菜单中选择Hibernate Reverse Engineering。完成向导后,系统将提示您切换到Hibernate透视图。
![请输入图片名称](https://www.evget.com/Content/ ... 07.png)
这些类将生成到在向导中选择的Java包中。
![请输入图片名称](https://www.evget.com/Content/ ... 46.png)
对数据库表进行反向工程时,实体将显示在配置文件的Mappings部分中。
**4. HQL Editor**
HQL Editor以及Hibernate透视图中的其他HQL视图可帮助开发、评估或测试HQL查询。HQL是一种类似于SQL的语言,称为Hibernate查询语言。它有时看起来像是简化的SQL,使用对象名和引用而不是表名和列名。该编辑器具有以下功能:
- 内容辅助
- 输入时,Hibernate动态查询转换器视图将HQL查询转换为SQL。
- Hibernate Query Results视图可以包含多个结果集。结果属性显示在Properties视图中。
- 查询参数视图可轻松执行变量查询。
- 项目选择器,可以在不同的Hibernate项目之间切换上下文。
使用HQL Editor,可以即时编写并运行HQL。编辑器利用MyEclipse从数据库进行反向工程的对象,将查询转换为SQL(如右下所示),然后运行它。结果在Java对象中返回,并显示在左下角。
![请输入图片名称](https://www.evget.com/Content/ ... 90.png)
对数据库进行反向工程之后,就可以开始编写应用程序以读取、写入和更新数据库中的对象。放置好Java类和方法后,可以在HQL Editor中运行Hibernate查询来查询数据库,这是查询数据库的另一种方法。您还可以切换到Database Explorer透视图并从那里查询数据库以查看相同的结果。
**5、Criteria Editor**
除了HQL编辑器之外,MyEclipse Hibernate工具还包括一个Criteria编辑器。Hibernate中的Criteria是一种利用对象实例结合查询约束来针对实体创建查询的方法。例如,假设创建一个类型为User的实体实例,将实体指定为查询的条件,并告诉条件只返回前10个结果,这是创建用于实体的复杂查询的有效且快速的方法。
要访问Criteria Editor,请右键单击包含Hibernate facet的项目,然后选择MyEclipse > Open Criteria Editor。
![请输入图片名称](https://www.evget.com/Content/ ... 90.gif)
打开Criteria Editor后,可以在编辑器中输入任何表示条件的有效Java代码,并使用编辑器顶部的“Run”图标执行它们。
下面的示例显示了一个基于EchoMessage实体的简单条件,要求Hibernate返回其EchoMessageId值为2的实体。结果出现在Result视图中。
![请输入图片名称](https://www.evget.com/Content/ ... 92.png)
可以使用MyEclipse中的Criteria Editor来编写和执行任何有效的基于条件的代码。在Java编辑器中输入条件时,选择它并调用快速修复将显示“Copy to Criteria”编辑器操作。选择此操作将打开“Criteria”编辑器,并使用所选文本进行初始化。
![请输入图片名称](https://www.evget.com/Content/ ... 58.gif)
您可以在Criteria Editor中测试和编辑条件。完成后,关闭编辑器可用修改后的条件查询替换最开始选择的文本。
**6、常见问题**
**Q:**Hibernate与EJB 3/JPA相比如何?
**A:**Hibernate 3.2实际上是与JPA兼容的,它实现了所有新的注释,这些注释让JPA使用起来非常自动化且更简单。因此,除了使用JPA的commercial implementation外,还可以使用Hibernate,所有标准JPA批注仍将保留在类中,而无需进行任何更改。
**Q:**Hibernate可以扩展到非常大的应用程序吗?
**A:**可以。实际上,Hibernate的根源来自于两位创始人在大型企业应用程序中担任顾问的经验,Hibernate是他们对持久性在应用程序中应如何起作用的看法。
几年前,Gavin King向社区提出了一项挑战,要求找到手工调整的JDBC SQL。该SQL执行的幅度要比Hibernate生成的SQL快,由此也能看出该框架非常注重功能、灵活性和性能。
MyEclipse数据库教程:使用Hibernate开发Persistence(二)
Java EE开发 • momo77 发表了文章 • 0 个评论 • 293 次浏览 • 2019-11-11 11:41
**[在开始本教程之前,请先下载并熟悉MyEclipse数据库工具。](https://www.myeclipsecn.com/download/)**
**[慧都16周年·技术服务月,软件商城优惠券不限量免费领取,购物立减服务升级,购MyEclipse享折上折优惠!](https://www.evget.com/mall/detail/3016)**
**5、使用HQL Editor**
- 通过以下步骤使用ECHO_MESSAGE表(该表是使用本教程开始时提供的SQL命令添加的)。
- 映射到ECHO_MESSAGE表。
- 右键单击HibernateDemo项目,然后选择[MyEclipse](https://www.myeclipsecn.com/)>打开HQL Editor。
**注意:**每次打开扩展名为.hql的文件时,HQL Editor都会打开。
![请输入图片名称](https://www.evget.com/Content/ ... 77.gif)
- 编辑器打开后,输入EchoMessage。
- 单击运行图标或按CTRL + F9执行查询。
![请输入图片名称](https://www.evget.com/Content/ ... 19.png)
- 使用查询参数视图执行变量查询。
![请输入图片名称](https://www.evget.com/Content/ ... 23.png)
**注意:**在为项目初始化HQL Editor后更改配置、映射或数据对象,请使用编辑器工具栏上的“Refresh”按钮以确保编辑器选择了最新的更改。
如果您正在编辑一个NamedQuery注释,可以在查询属性重调用quick fix(通常为CTRL + 1)来复制到HQL Editor。这将打开HQL编辑器,并使用查询字符串对其进行初始化。
![请输入图片名称](https://www.evget.com/Content/ ... 72.gif)
您可以在HQL Editor中测试和编辑查询。完成后,关闭编辑器可让您将修改后的查询复制回Java编辑器中的query属性。
打开项目的HQL Editor后,将为NamedQueries提供内容辅助和验证(CTRL +空格键)。
![请输入图片名称](https://www.evget.com/Content/ ... 78.jpg)
**6、测试HibernateDemo应用程序**
测试Hibernate持久性的一种方法是使用main方法创建Java类。测试类使用Java对象和由Hibernate向导创建的HibernateSessionFactory。查看在HibernateSession类中定义的两个重要方法,如下所示,它们在测试代码中使用。
![请输入图片名称](https://www.evget.com/Content/ ... 70.gif)
显示的是SessionManager类中的两个重要的静态方法。
- getSession():此方法返回一个Session变量,可用于访问Hibernate Session类。每当您要使用Hibernate会话时,都可以调用此方法来获取缓存的Hibernate Session。
- closeSession():如果会话已经启动,则此方法可将其关闭。
以下是测试代码中的步骤列表以及源代码示例:
- 选择File > New > Class。
- 输入包名称。
- 在Name字段中输入HibernateReadTest。
- 如图所示完成页面,然后单击“完成”。
![请输入图片名称](https://www.evget.com/Content/ ... 64.gif)
- 打开HibernateReadTest.java文件,将源代码替换为下面的代码,然后按CTRL + S保存。
{{{
package com.myeclipse.hibernate;
import java.math.BigDecimal;
import org.hibernate.HibernateException;
public class HibernateReadTest {
public static void main(String[] args) {
// Step 1 - Create the DAO
EchoMessageDAO dao = new EchoMessageDAO();
try {
// Step 2 - Use findById to retrieve the message with ID = 1
EchoMessage echoMessage = dao.findById(new BigDecimal(1));
System.out.println("Entity retrieval successful, message is: "
+ echoMessage.getMsg());
} catch (HibernateException e){
System.err.println("Entity retrieval failed.");
e.printStackTrace();
} finally {
try {
dao.getSession().close();
} catch (Exception e) {
// do nothing
}
}
}
}
}}}
- 在资源管理器中右键单击HibernateReadTest.java文件,然后选择 Run > Run As > Java Application。将打开“Console”视图,如果测试成功,您将看到如下图所示的输出。
**注意:**如果看到log4j警告,可以忽略。
![请输入图片名称](https://www.evget.com/Content/ ... 01.gif)
**7、导入示例HibernateDemo项目**
- [下载HibernateDemo.zip。](https://www.evget.com/resource/detail-demo-14454)
- 从菜单中选择Import > Existing Projects into Workspace,选择“Select archive file”选项,然后导航至zip文件。单击完成将项目导入到工作区中。
- 由于此项目是使用旧版本的MyEclipse创建的,因此将打开“Project Migration”向导。请按照向导中的步骤迁移项目。
- 进行以下操作重新配置项目来匹配您的环境:
a、编辑hibernate.cfg.xml并更改连接设置以反映您的数据库设置。提示:可能需要更改EchoMessage.hbm.xml才能改变在class元素中指定的模式。
b、建立与数据库的连接,并执行DDL/DDL.sql文件中的代码创建并填充示例表。在执行之前,可能需要使用模式前缀来限定表,并对数据库特定的DDL进行其他更改。
c、将数据库的JDBC驱动程序JAR复制到项目中。右键单击项目,然后选择build path > Add to build path,将其添加到构建路径中。
本教程还包括以下文件:
- log4j.properties - 用于控制log4j库执行的日志记录级别。
- ehcache.xml - 用于配置ehcache库。
- HibernateWriteTest.java - 一个示例应用程序,演示了如何使用DAO来写数据库。
想与更多人聊MyEclips?加入**MyEclipse中国(官方2):742336981**畅所欲言吧!
想及时获取MyEclips资讯?扫描下方二维码,MyEclips信息跟你走!
![请输入图片名称](https://www.evget.com/Content/ ... 11.jpg) 查看全部
**[在开始本教程之前,请先下载并熟悉MyEclipse数据库工具。](https://www.myeclipsecn.com/download/)**
**[慧都16周年·技术服务月,软件商城优惠券不限量免费领取,购物立减服务升级,购MyEclipse享折上折优惠!](https://www.evget.com/mall/detail/3016)**
**5、使用HQL Editor**
- 通过以下步骤使用ECHO_MESSAGE表(该表是使用本教程开始时提供的SQL命令添加的)。
- 映射到ECHO_MESSAGE表。
- 右键单击HibernateDemo项目,然后选择[MyEclipse](https://www.myeclipsecn.com/)>打开HQL Editor。
**注意:**每次打开扩展名为.hql的文件时,HQL Editor都会打开。
![请输入图片名称](https://www.evget.com/Content/ ... 77.gif)
- 编辑器打开后,输入EchoMessage。
- 单击运行图标或按CTRL + F9执行查询。
![请输入图片名称](https://www.evget.com/Content/ ... 19.png)
- 使用查询参数视图执行变量查询。
![请输入图片名称](https://www.evget.com/Content/ ... 23.png)
**注意:**在为项目初始化HQL Editor后更改配置、映射或数据对象,请使用编辑器工具栏上的“Refresh”按钮以确保编辑器选择了最新的更改。
如果您正在编辑一个NamedQuery注释,可以在查询属性重调用quick fix(通常为CTRL + 1)来复制到HQL Editor。这将打开HQL编辑器,并使用查询字符串对其进行初始化。
![请输入图片名称](https://www.evget.com/Content/ ... 72.gif)
您可以在HQL Editor中测试和编辑查询。完成后,关闭编辑器可让您将修改后的查询复制回Java编辑器中的query属性。
打开项目的HQL Editor后,将为NamedQueries提供内容辅助和验证(CTRL +空格键)。
![请输入图片名称](https://www.evget.com/Content/ ... 78.jpg)
**6、测试HibernateDemo应用程序**
测试Hibernate持久性的一种方法是使用main方法创建Java类。测试类使用Java对象和由Hibernate向导创建的HibernateSessionFactory。查看在HibernateSession类中定义的两个重要方法,如下所示,它们在测试代码中使用。
![请输入图片名称](https://www.evget.com/Content/ ... 70.gif)
显示的是SessionManager类中的两个重要的静态方法。
- getSession():此方法返回一个Session变量,可用于访问Hibernate Session类。每当您要使用Hibernate会话时,都可以调用此方法来获取缓存的Hibernate Session。
- closeSession():如果会话已经启动,则此方法可将其关闭。
以下是测试代码中的步骤列表以及源代码示例:
- 选择File > New > Class。
- 输入包名称。
- 在Name字段中输入HibernateReadTest。
- 如图所示完成页面,然后单击“完成”。
![请输入图片名称](https://www.evget.com/Content/ ... 64.gif)
- 打开HibernateReadTest.java文件,将源代码替换为下面的代码,然后按CTRL + S保存。
{{{
package com.myeclipse.hibernate;
import java.math.BigDecimal;
import org.hibernate.HibernateException;
public class HibernateReadTest {
public static void main(String[] args) {
// Step 1 - Create the DAO
EchoMessageDAO dao = new EchoMessageDAO();
try {
// Step 2 - Use findById to retrieve the message with ID = 1
EchoMessage echoMessage = dao.findById(new BigDecimal(1));
System.out.println("Entity retrieval successful, message is: "
+ echoMessage.getMsg());
} catch (HibernateException e){
System.err.println("Entity retrieval failed.");
e.printStackTrace();
} finally {
try {
dao.getSession().close();
} catch (Exception e) {
// do nothing
}
}
}
}
}}}
- 在资源管理器中右键单击HibernateReadTest.java文件,然后选择 Run > Run As > Java Application。将打开“Console”视图,如果测试成功,您将看到如下图所示的输出。
**注意:**如果看到log4j警告,可以忽略。
![请输入图片名称](https://www.evget.com/Content/ ... 01.gif)
**7、导入示例HibernateDemo项目**
- [下载HibernateDemo.zip。](https://www.evget.com/resource/detail-demo-14454)
- 从菜单中选择Import > Existing Projects into Workspace,选择“Select archive file”选项,然后导航至zip文件。单击完成将项目导入到工作区中。
- 由于此项目是使用旧版本的MyEclipse创建的,因此将打开“Project Migration”向导。请按照向导中的步骤迁移项目。
- 进行以下操作重新配置项目来匹配您的环境:
a、编辑hibernate.cfg.xml并更改连接设置以反映您的数据库设置。提示:可能需要更改EchoMessage.hbm.xml才能改变在class元素中指定的模式。
b、建立与数据库的连接,并执行DDL/DDL.sql文件中的代码创建并填充示例表。在执行之前,可能需要使用模式前缀来限定表,并对数据库特定的DDL进行其他更改。
c、将数据库的JDBC驱动程序JAR复制到项目中。右键单击项目,然后选择build path > Add to build path,将其添加到构建路径中。
本教程还包括以下文件:
- log4j.properties - 用于控制log4j库执行的日志记录级别。
- ehcache.xml - 用于配置ehcache库。
- HibernateWriteTest.java - 一个示例应用程序,演示了如何使用DAO来写数据库。
想与更多人聊MyEclips?加入**MyEclipse中国(官方2):742336981**畅所欲言吧!
想及时获取MyEclips资讯?扫描下方二维码,MyEclips信息跟你走!
![请输入图片名称](https://www.evget.com/Content/ ... 11.jpg)
MyEclipse数据库教程:使用Hibernate开发Persistence(一)
Java EE开发 • momo77 发表了文章 • 0 个评论 • 454 次浏览 • 2019-11-11 11:22
**[慧都16周年·技术服务月,软件商城优惠券不限量免费领取,购物立减服务升级,购MyEclipse享折上折优惠!](https://www.evget.com/mall/detail/3016)**
在本教程中,将介绍如何:
- 在Java项目中启用Hibernate支持
- 创建一个Hibernate配置文件
- 使用自定义Session Factory
- 使用HQL编辑器生成Java类和数据库映射文件
**1、创建一个示例数据库表**
在开始本教程之前,必须设置受支持的数据库服务器,例如嵌入式Derby数据库或外部安装的数据库。对于本教程,则使用在MyEclipse中连接到数据库中创建的Oracle数据库连接配置文件。
首先,请使用以下SQL命令创建您将映射到Java类的数据库表。为方便测试,该表包括几个记录。
echo_message DDL
创建表echo_message
(
id整数PRIMARY KEY不为null,
msg VARCHAR(255)
);
插入echo_message值(1,'hello world');
插入echo_message值(2,'goodbye world');
**注意**:即使本教程使用Oracle,上面的说明和示例表也足够通用,可以用于任何数据库。
**2、创建一个启用了Hibernate的Java项目**
- 选择 File>New>Project>Java Project。
- 在“HibernateDemo”字段中键入HibernateDemo,然后单击“完成”。
![请输入图片名称](https://www.evget.com/Content/ ... 12.gif)
- 右键单击HibernateDemo,然后选择MyEclipse> Project Facets> Install Hibernate Facet。
- 从目标运行时下拉列表中选择MyEclipse通用Java Runtime,然后单击下一步。MyEclipse 为您创建一个新的hibernate.cfg.xml文件。
![请输入图片名称](https://www.evget.com/Content/ ... 83.png)
**注:**启用Hibernate注释支持仅适用于Hibernate 3.2和3.3,Hibernate 4.x自动包含注释支持。注释支持在SessionFactory类中创建AnnotationConfiguration而不是常规Configuration。如果您要使用带注释的POJO而不是Hibernate映射文件,这一点很有必要。
- 单击“Java Package”字段旁边的“新建”以为session factory类创建新的软件包。键入com.myeclipse.hibernate作为程序包名称,然后单击“完成”。
![请输入图片名称](https://www.evget.com/Content/ ... 13.png)
- 单击“Next”,然后保留“ Specify数据库连接详细信息”复选框。
- 从DB Driver下拉列表中,选择在MyEclipse中连接数据库时创建的Oracle配置文件。这一操作将自动填充其余字段。
- 您可以通过单击Next添加库,或单击Finish接受默认的库。
**注意:**在这个阶段不需要配置文件。您无需选择概要文件,采用手动填充此页面上显示的其余详细信息。但有一点必须注意,一定要在向导完成后将JDBC驱动程序JAR文件复制到项目中。
![请输入图片名称](https://www.evget.com/Content/ ... 01.gif)
现在,可以跳过上面执行的数据源配置,稍后使用Hibernate Configuration编辑器进行。
**注意:**稍后还可以通过选择File > New >Other,展开MyEclipse > Hibernate并选择Hibernate Session Factory来创建Session Factory。如果您选择将库复制到项目中,那么在完成过程中,向导在复制库和更新各种项目资源时最多可能会出现30秒钟的非活动状态。这时,需耐心等待所有操作完成,然后再采取其他措施。
完成向导将执行以下操作:
- 如果选择将Hibernate库(JAR)复制到项目中,则将其安装到项目中
- 更新项目的构建路径以包括已安装的Hibernate库
- 为项目创建和配置hibernate.cfg.xml文件
- 为项目创建一个自定义SessionFactory类(例如HibernateSessionFactory),以简化Hibernate会话处理。
下图突出显示了新创建的HibernateSessionFactory.java文件的重要功能。此类管理单个Hibernate Session对象,该对象由该getSession()方法延迟初始化,并由该方法刷新和释放closeSession()。在运行时,Hibernate会话创建过程必须能够在类路径上找到hibernate.cfg.xml文件。
CONFIG_FILE_LOCATION变量定义了hibernate.cfg.xml文件相对于软件包的路径,默认值由Hibernate支持向导提供。如果您重新定位 hibernate.cfg.xml文件,则必须手动修改CONFIG_FILE_LOCATION值来引用新位置,或者在使用前使用该setConfigFile()方法进行设置。
![请输入图片名称](https://www.evget.com/Content/ ... 23.gif)
**3、自定义Hibernate配置文件**
完成添加Hibernate功能的向导后,hibernate配置文件将自动打开。如果在添加功能时跳过了数据源配置,那么现在需要使用以下步骤进行操作。如果您已经配置了数据源,请继续添加属性。
- 选择“Use JDBC Driver”选项,指定在数据库资源管理器中定义的JDBC驱动程序。如果尚未配置JDBC驱动程序,请阅读[MyEclipse教程“连接到数据库”](https://www.evget.com/article/2015/2/4/22120.html),并继续之前进行的配置。
- 在“Connection Profile”下拉列表中选择配置文件。如果配置了JDBC驱动程序但未配置连接配置文件,则可以单击“New profile”来创建一个新的连接配置文件。如果已经有一个连接配置文件,从下拉列表中选择它时,接下来的四个字段将自动填写。
- 单击 Copy JDBC Driver并添加到类路径链接。
- 从“Dialect”下拉列表中,为数据库选择适当的Hibernate方言。
Configuration页现在应该像这样:
![请输入图片名称](https://www.evget.com/Content/ ... 20.gif)
您可以使用“Properties”选项来添加和编辑属性。
![请输入图片名称](https://www.evget.com/Content/ ... 71.gif)
![请输入图片名称](https://www.evget.com/Content/ ... 74.gif)
映射部分允许您添加项目中可能已经存在的映射文件,同时还支持从资源管理器中拖放映射文件。
![请输入图片名称](https://resources.cloud.genuit ... ng.gif)
![请输入图片名称](https://resources.cloud.genuit ... ng.gif)
![请输入图片名称](https://resources.cloud.genuit ... ot.gif)
下图显示的是完成上述步骤后的Hibernate配置文件源。
![请输入图片名称](https://www.evget.com/Content/ ... 47.gif)
**4、使用逆向工程进行Java表映射**
由于大多数公司的Web项目都涉及到与关系数据库中现有的公司数据进行交互,所以本节重点介绍正向工程Java数据对象和来自现有数据库的映射描述符。
- 选择Window > Open Perspective > Other,然后选择MyEclipse Hibernate。
- 使用您在Hibernate配置中使用的配置文件打开数据库连接。
- 浏览数据库架构,直到找到要为其创建Hibernate映射的表/实体。
- 右键单击该表,然后选择“Hibernate Reverse Engineering”。或者从数据库浏览器中拖动表,并将它们放到Hibernate Configuration编辑器中以启动向导。
**注意:**您可以在数据库浏览器中选择多个表,以便同时对它们进行反向工程。
![请输入图片名称](https://www.evget.com/Content/ ... 83.gif)
![请输入图片名称](https://www.evget.com/Content/ ... 84.png)
- 单击Java src文件夹字段旁边的浏览,查看可用的Hibernate项目和可在其中生成文件的源文件夹。在HibernateDemo项目中选择src文件夹。
- 单击Java软件包字段旁边的浏览,然后选择com.myeclipse.hibernate软件包。
- 如下所示完成向导的其余部分,然后单击“下一步”。
**注意:**向导的第2页和第3页的设置用于自定义逆向工程过程。无需自定义任何设置,通过单击Finish now就可以启动该过程。
![请输入图片名称](https://www.evget.com/Content/ ... 24.gif)
- 接受默认设置,然后单击“下一步”。
![请输入图片名称](https://www.evget.com/Content/ ... 41.gif)
- 单击两个“Include Referenced Tables”复选框,使向导在反向工程过程中包括引用表。单击完成。
![请输入图片名称](https://resources.cloud.genuit ... es.png)
**注意:**选择表或列可以专门针对表或列定制逆向工程。
![请输入图片名称](https://www.evget.com/Content/ ... 29.gif)
![请输入图片名称](https://www.evget.com/Content/ ... 35.gif)
逆向工程执行以下操作:
- 创建Abstract <tablename>类。这个抽象类提供了必需的Hibernate兼容性功能,例如用于与数据库表中的列相对应的持久属性的公共getter和setter方法。
- 创建<tablename> Java类,它是Abstract <tablename>类的具体子类。所述<表名> 类旨直接使用附加的业务和验证逻辑进行修改,并且在后续的生成过程中不会被覆盖。
- 创建.hbm.xml Hibernate映射描述符。这个文件指导Hibernate如何<tablename> Java类和数据库表之间映射数据。
- 在hibernate.cfg.xml文件中注册<tablename> .hbm.xml映射描述符。
- 创建<tablename> DAO Java类。该类提供对<tablename>数据对象类的便捷性访问。
- 创建IBaseHibernateDAO接口和BaseHibernateDAO类。这些类对于基本DAO的功能是必需的,它们使用添加Hibernate功能时生成的Session工厂(com.myeclipse.hibernate.HibernateSessionFactory)来获取Hibernate会话。
下图突出显示了所生成的类、关键方法和映射文件,以及对hibernate.cfg.xml文件中添加的映射文件的引用。
![请输入图片名称](https://www.evget.com/Content/ ... 84.jpg)
**4.1使用Templates对生成的代码进行微调**
- [将模板文件](https://www.evget.com/resource/detail-demo-14454)下载并解压到、文件系统。
- 按照zip文件中README.txt的说明自定义模板。
- 调用逆向工程向导。在向导的第一页上,选择“Use Custom Templates”选项,然后在“Template Directory”字段中,指定包含您下载的模板的文件夹。
**4.2使用Custom Reverse Engineering Strategy**
- 右键单击项目,选择Properties,并选择Java构建路径。
- 单击Libraries标签,然后单击Add Library。
- 选择MyEclipse Library,单击Next,并选择MyEclipse Persistence Tools。单击Finish。
![请输入图片名称](https://www.evget.com/Content/ ... 23.gif)
![请输入图片名称](https://www.evget.com/Content/ ... 78.gif)
- 在项目中创建一个新类,来扩展org.hibernate.cfg.reveng.DelegatingReverseEngineeringStrategy类。
- 定义单个参数构造函数,例如columnToPropertyName。以下是一个示例MyStrategy.java文件,该文件将ME_前缀添加到所有生成的属性中。
{{{
package com.myeclipse.hibernate;
import org.hibernate.cfg.reveng.DelegatingReverseEngineeringStrategy;
import org.hibernate.cfg.reveng.ReverseEngineeringStrategy;
import org.hibernate.cfg.reveng.TableIdentifier;
public class MyStrategy extends DelegatingReverseEngineeringStrategy {
public MyStrategy(ReverseEngineeringStrategy strategy){
super(strategy);
}
public String
columnToPropertyName(TableIdentifier table, String columnName) { return "ME_" + super.columnToPropertyName(table, columnName);
}
}
}}}
- 在“Reverse Engineering”向导的第二页上,指定刚创建的类。
![请输入图片名称](https://www.evget.com/Content/ ... 83.gif)
想与更多人聊MyEclips?加入***MyEclipse中国(官方2):742336981***畅所欲言吧!
想及时获取MyEclips资讯?扫描下方二维码,MyEclips信息跟你走!
![请输入图片名称](https://www.evget.com/Content/ ... 11.jpg) 查看全部
**[慧都16周年·技术服务月,软件商城优惠券不限量免费领取,购物立减服务升级,购MyEclipse享折上折优惠!](https://www.evget.com/mall/detail/3016)**
在本教程中,将介绍如何:
- 在Java项目中启用Hibernate支持
- 创建一个Hibernate配置文件
- 使用自定义Session Factory
- 使用HQL编辑器生成Java类和数据库映射文件
**1、创建一个示例数据库表**
在开始本教程之前,必须设置受支持的数据库服务器,例如嵌入式Derby数据库或外部安装的数据库。对于本教程,则使用在MyEclipse中连接到数据库中创建的Oracle数据库连接配置文件。
首先,请使用以下SQL命令创建您将映射到Java类的数据库表。为方便测试,该表包括几个记录。
echo_message DDL
创建表echo_message
(
id整数PRIMARY KEY不为null,
msg VARCHAR(255)
);
插入echo_message值(1,'hello world');
插入echo_message值(2,'goodbye world');
**注意**:即使本教程使用Oracle,上面的说明和示例表也足够通用,可以用于任何数据库。
**2、创建一个启用了Hibernate的Java项目**
- 选择 File>New>Project>Java Project。
- 在“HibernateDemo”字段中键入HibernateDemo,然后单击“完成”。
![请输入图片名称](https://www.evget.com/Content/ ... 12.gif)
- 右键单击HibernateDemo,然后选择MyEclipse> Project Facets> Install Hibernate Facet。
- 从目标运行时下拉列表中选择MyEclipse通用Java Runtime,然后单击下一步。MyEclipse 为您创建一个新的hibernate.cfg.xml文件。
![请输入图片名称](https://www.evget.com/Content/ ... 83.png)
**注:**启用Hibernate注释支持仅适用于Hibernate 3.2和3.3,Hibernate 4.x自动包含注释支持。注释支持在SessionFactory类中创建AnnotationConfiguration而不是常规Configuration。如果您要使用带注释的POJO而不是Hibernate映射文件,这一点很有必要。
- 单击“Java Package”字段旁边的“新建”以为session factory类创建新的软件包。键入com.myeclipse.hibernate作为程序包名称,然后单击“完成”。
![请输入图片名称](https://www.evget.com/Content/ ... 13.png)
- 单击“Next”,然后保留“ Specify数据库连接详细信息”复选框。
- 从DB Driver下拉列表中,选择在MyEclipse中连接数据库时创建的Oracle配置文件。这一操作将自动填充其余字段。
- 您可以通过单击Next添加库,或单击Finish接受默认的库。
**注意:**在这个阶段不需要配置文件。您无需选择概要文件,采用手动填充此页面上显示的其余详细信息。但有一点必须注意,一定要在向导完成后将JDBC驱动程序JAR文件复制到项目中。
![请输入图片名称](https://www.evget.com/Content/ ... 01.gif)
现在,可以跳过上面执行的数据源配置,稍后使用Hibernate Configuration编辑器进行。
**注意:**稍后还可以通过选择File > New >Other,展开MyEclipse > Hibernate并选择Hibernate Session Factory来创建Session Factory。如果您选择将库复制到项目中,那么在完成过程中,向导在复制库和更新各种项目资源时最多可能会出现30秒钟的非活动状态。这时,需耐心等待所有操作完成,然后再采取其他措施。
完成向导将执行以下操作:
- 如果选择将Hibernate库(JAR)复制到项目中,则将其安装到项目中
- 更新项目的构建路径以包括已安装的Hibernate库
- 为项目创建和配置hibernate.cfg.xml文件
- 为项目创建一个自定义SessionFactory类(例如HibernateSessionFactory),以简化Hibernate会话处理。
下图突出显示了新创建的HibernateSessionFactory.java文件的重要功能。此类管理单个Hibernate Session对象,该对象由该getSession()方法延迟初始化,并由该方法刷新和释放closeSession()。在运行时,Hibernate会话创建过程必须能够在类路径上找到hibernate.cfg.xml文件。
CONFIG_FILE_LOCATION变量定义了hibernate.cfg.xml文件相对于软件包的路径,默认值由Hibernate支持向导提供。如果您重新定位 hibernate.cfg.xml文件,则必须手动修改CONFIG_FILE_LOCATION值来引用新位置,或者在使用前使用该setConfigFile()方法进行设置。
![请输入图片名称](https://www.evget.com/Content/ ... 23.gif)
**3、自定义Hibernate配置文件**
完成添加Hibernate功能的向导后,hibernate配置文件将自动打开。如果在添加功能时跳过了数据源配置,那么现在需要使用以下步骤进行操作。如果您已经配置了数据源,请继续添加属性。
- 选择“Use JDBC Driver”选项,指定在数据库资源管理器中定义的JDBC驱动程序。如果尚未配置JDBC驱动程序,请阅读[MyEclipse教程“连接到数据库”](https://www.evget.com/article/2015/2/4/22120.html),并继续之前进行的配置。
- 在“Connection Profile”下拉列表中选择配置文件。如果配置了JDBC驱动程序但未配置连接配置文件,则可以单击“New profile”来创建一个新的连接配置文件。如果已经有一个连接配置文件,从下拉列表中选择它时,接下来的四个字段将自动填写。
- 单击 Copy JDBC Driver并添加到类路径链接。
- 从“Dialect”下拉列表中,为数据库选择适当的Hibernate方言。
Configuration页现在应该像这样:
![请输入图片名称](https://www.evget.com/Content/ ... 20.gif)
您可以使用“Properties”选项来添加和编辑属性。
![请输入图片名称](https://www.evget.com/Content/ ... 71.gif)
![请输入图片名称](https://www.evget.com/Content/ ... 74.gif)
映射部分允许您添加项目中可能已经存在的映射文件,同时还支持从资源管理器中拖放映射文件。
![请输入图片名称](https://resources.cloud.genuit ... ng.gif)
![请输入图片名称](https://resources.cloud.genuit ... ng.gif)
![请输入图片名称](https://resources.cloud.genuit ... ot.gif)
下图显示的是完成上述步骤后的Hibernate配置文件源。
![请输入图片名称](https://www.evget.com/Content/ ... 47.gif)
**4、使用逆向工程进行Java表映射**
由于大多数公司的Web项目都涉及到与关系数据库中现有的公司数据进行交互,所以本节重点介绍正向工程Java数据对象和来自现有数据库的映射描述符。
- 选择Window > Open Perspective > Other,然后选择MyEclipse Hibernate。
- 使用您在Hibernate配置中使用的配置文件打开数据库连接。
- 浏览数据库架构,直到找到要为其创建Hibernate映射的表/实体。
- 右键单击该表,然后选择“Hibernate Reverse Engineering”。或者从数据库浏览器中拖动表,并将它们放到Hibernate Configuration编辑器中以启动向导。
**注意:**您可以在数据库浏览器中选择多个表,以便同时对它们进行反向工程。
![请输入图片名称](https://www.evget.com/Content/ ... 83.gif)
![请输入图片名称](https://www.evget.com/Content/ ... 84.png)
- 单击Java src文件夹字段旁边的浏览,查看可用的Hibernate项目和可在其中生成文件的源文件夹。在HibernateDemo项目中选择src文件夹。
- 单击Java软件包字段旁边的浏览,然后选择com.myeclipse.hibernate软件包。
- 如下所示完成向导的其余部分,然后单击“下一步”。
**注意:**向导的第2页和第3页的设置用于自定义逆向工程过程。无需自定义任何设置,通过单击Finish now就可以启动该过程。
![请输入图片名称](https://www.evget.com/Content/ ... 24.gif)
- 接受默认设置,然后单击“下一步”。
![请输入图片名称](https://www.evget.com/Content/ ... 41.gif)
- 单击两个“Include Referenced Tables”复选框,使向导在反向工程过程中包括引用表。单击完成。
![请输入图片名称](https://resources.cloud.genuit ... es.png)
**注意:**选择表或列可以专门针对表或列定制逆向工程。
![请输入图片名称](https://www.evget.com/Content/ ... 29.gif)
![请输入图片名称](https://www.evget.com/Content/ ... 35.gif)
逆向工程执行以下操作:
- 创建Abstract <tablename>类。这个抽象类提供了必需的Hibernate兼容性功能,例如用于与数据库表中的列相对应的持久属性的公共getter和setter方法。
- 创建<tablename> Java类,它是Abstract <tablename>类的具体子类。所述<表名> 类旨直接使用附加的业务和验证逻辑进行修改,并且在后续的生成过程中不会被覆盖。
- 创建.hbm.xml Hibernate映射描述符。这个文件指导Hibernate如何<tablename> Java类和数据库表之间映射数据。
- 在hibernate.cfg.xml文件中注册<tablename> .hbm.xml映射描述符。
- 创建<tablename> DAO Java类。该类提供对<tablename>数据对象类的便捷性访问。
- 创建IBaseHibernateDAO接口和BaseHibernateDAO类。这些类对于基本DAO的功能是必需的,它们使用添加Hibernate功能时生成的Session工厂(com.myeclipse.hibernate.HibernateSessionFactory)来获取Hibernate会话。
下图突出显示了所生成的类、关键方法和映射文件,以及对hibernate.cfg.xml文件中添加的映射文件的引用。
![请输入图片名称](https://www.evget.com/Content/ ... 84.jpg)
**4.1使用Templates对生成的代码进行微调**
- [将模板文件](https://www.evget.com/resource/detail-demo-14454)下载并解压到、文件系统。
- 按照zip文件中README.txt的说明自定义模板。
- 调用逆向工程向导。在向导的第一页上,选择“Use Custom Templates”选项,然后在“Template Directory”字段中,指定包含您下载的模板的文件夹。
**4.2使用Custom Reverse Engineering Strategy**
- 右键单击项目,选择Properties,并选择Java构建路径。
- 单击Libraries标签,然后单击Add Library。
- 选择MyEclipse Library,单击Next,并选择MyEclipse Persistence Tools。单击Finish。
![请输入图片名称](https://www.evget.com/Content/ ... 23.gif)
![请输入图片名称](https://www.evget.com/Content/ ... 78.gif)
- 在项目中创建一个新类,来扩展org.hibernate.cfg.reveng.DelegatingReverseEngineeringStrategy类。
- 定义单个参数构造函数,例如columnToPropertyName。以下是一个示例MyStrategy.java文件,该文件将ME_前缀添加到所有生成的属性中。
{{{
package com.myeclipse.hibernate;
import org.hibernate.cfg.reveng.DelegatingReverseEngineeringStrategy;
import org.hibernate.cfg.reveng.ReverseEngineeringStrategy;
import org.hibernate.cfg.reveng.TableIdentifier;
public class MyStrategy extends DelegatingReverseEngineeringStrategy {
public MyStrategy(ReverseEngineeringStrategy strategy){
super(strategy);
}
public String
columnToPropertyName(TableIdentifier table, String columnName) { return "ME_" + super.columnToPropertyName(table, columnName);
}
}
}}}
- 在“Reverse Engineering”向导的第二页上,指定刚创建的类。
![请输入图片名称](https://www.evget.com/Content/ ... 83.gif)
想与更多人聊MyEclips?加入***MyEclipse中国(官方2):742336981***畅所欲言吧!
想及时获取MyEclips资讯?扫描下方二维码,MyEclips信息跟你走!
![请输入图片名称](https://www.evget.com/Content/ ... 11.jpg)
MyEclipse数据库教程:使用Hibernate和Spring执行数据库操作(二)
Java EE开发 • momo77 发表了文章 • 0 个评论 • 291 次浏览 • 2019-11-11 10:41
**[免费下载MyEclipse>>>](https://www.myeclipsecn.com/download/)**
**[慧都16周年·技术服务月,软件商城优惠券不限量免费领取,购物立减服务升级,购MyEclipse享折上折优惠!](https://www.evget.com/mall/detail/3016)**
**7、创建一个Spring Bean作为PersistenceLayer**
PersistenceLayer如何获得对UserDAO的引用来真正执行那些持久性操作?答案是:您需要为抽象的持久层创建一个新的Spring bean配置条目,让它通过正确引用MyEclipse生成的DAO,来与数据库进行通信。
- 单击 Window > Show View > Other展开Spring,然后选择Spring Explorer打开Spring Explorer。
- 展开HibernateSpringProject> Beans> applicationContext.xml,右键单击bean,然后选择New Bean。
- 输入持久层的Bean的标识字段,然后输入在Bean类字段中的com.myeclipse.hibernatespring.PersistenceLayer。
![请输入图片名称](https://www.evget.com/Content/ ... 95.png)
- 单击属性标签,然后单击添加。
- 在“Name”字段中键入userDAO,从“Spring Type”下拉列表中选择ref,在“Reference”字段中输入UserDAO,然后单击“完成”。
![请输入图片名称](https://www.evget.com/Content/ ... 73.png)
- 在Bean向导窗口上单击Finish,然后按Ctrl+S保存配置文件。完成以上操作后,业务逻辑代码就可以向BeanFactory请求persistenceLayer Bean,并获取该Bean的准备好的实例。
**8、创建一个数据源Spring Bean**
- 使用Spring Explorer创建一个新的bean。
- 在“Bean Id”字段中输入dataSource,并在“Bean class”字段中输入org.springframework.jdbc.datasource.DriverManagerDataSource。
![请输入图片名称](https://www.evget.com/Content/ ... 03.png)
- 单击“Properties”标签,添加以下属性:
1、名称类型值
2、riverClassName value:com.mysql.jdbc.Drive
3、rurl value jdbc:mysql://localhost:3306/test
4、用户名值root
5、密码值<your password>
- 在Bean向导窗口上单击Finish。
- 在Spring资源管理器中,右键单击sessionFactory bean,并选择Add Properties。
- 在“Name”字段中输入dataSource,将Spring类型保留为ref,在“Reference”字段中输入dataSource。
![请输入图片名称](https://www.evget.com/Content/ ... 54.png)
- 单击“Finish”,然后按Ctrl S保存配置文件。
**9、运行应用程序**
- 在资源管理器中,展开 HibernateSpringProject > src > com.myeclipse.hibernatespring。
- 右键单击BusinessLogic.java,选择 Run As>Java Application。Console视图将显示结果。
![请输入图片名称](https://www.evget.com/Content/ ... 39.png)
通过以上步骤可以看到,使用PersistenceLayer时,仅用几行代码就可以从数据库中存储、更新和删除用户。
**10、使用Hibernate注释和Spring**
MyEclipse为独立的Hibernate项目和Spring/Hibernate项目提供了Hibernate注释支持。以下部分将简要概述对Hibernate Annotations和Spring的支持。
注意:Hibernate 4.x自动包含注释支持。
**10.1 创建具有注释支持的Hibernate / Spring项目(Hibernate 3.x)**
在为Hibernate 3.x创建、启用Hibernate和spring的项目时,需要执行以下操作来启用注释支持。当项目添加Hibernate3.x功能时,一定要选择“启用Hibernate注释支持”复选框。
![请输入图片名称](https://www.evget.com/Content/ ... 77.gif)
- 在第3页上添加Spring功能时,请选中“Enable Hibernate annotation support”复选框。这将创建一个AnnotationSessionFactoryBean,而不是LocalSessionFactoryBean。在使用注释时,AnnotationSessionFactoryBean是必需的。
![请输入图片名称](https://www.evget.com/Content/ ... 86.gif)
**10.2 逆向工程**
当您选择Spring bean配置文件时,使用上述过程的项目设置中的Hibernate项目属性页会在SessionFactory Bean ID下拉列表中同时列出LocalSessionFactoryBean bean和AnnotationSessionFactoryBean bean。
注意:为了在逆向工程过程中为Hibernate 3.x提供注释支持,必须在Active Configuration File字段中选择Hibernate配置文件,或者为SessionFactory选择Spring bean配置文件和 AnnotationSessionFactoryBean。
![请输入图片名称](https://www.evget.com/Content/ ... 36.gif)
为Spring DAO提供的会话工厂bean Ids取决于您是否选择生成带注释的POJO或Hibernate映射文件。如果选择生成带注释的POJO,那么SessionFactory Id下拉列表中将仅显示AnnotationSessionFactoryBeans,否则将同时列出LocalSessionFactoryBean bean和AnnotationSessionFactoryBean bean。
![请输入图片名称](https://www.evget.com/Content/ ... 75.gif)
想与更多人聊MyEclips?加入****MyEclipse中国(官方2):742336981****畅所欲言吧!
想及时获取MyEclips资讯?扫描下方二维码,MyEclips信息跟你走!
![请输入图片名称](https://www.evget.com/Content/ ... 11.jpg) 查看全部
**[免费下载MyEclipse>>>](https://www.myeclipsecn.com/download/)**
**[慧都16周年·技术服务月,软件商城优惠券不限量免费领取,购物立减服务升级,购MyEclipse享折上折优惠!](https://www.evget.com/mall/detail/3016)**
**7、创建一个Spring Bean作为PersistenceLayer**
PersistenceLayer如何获得对UserDAO的引用来真正执行那些持久性操作?答案是:您需要为抽象的持久层创建一个新的Spring bean配置条目,让它通过正确引用MyEclipse生成的DAO,来与数据库进行通信。
- 单击 Window > Show View > Other展开Spring,然后选择Spring Explorer打开Spring Explorer。
- 展开HibernateSpringProject> Beans> applicationContext.xml,右键单击bean,然后选择New Bean。
- 输入持久层的Bean的标识字段,然后输入在Bean类字段中的com.myeclipse.hibernatespring.PersistenceLayer。
![请输入图片名称](https://www.evget.com/Content/ ... 95.png)
- 单击属性标签,然后单击添加。
- 在“Name”字段中键入userDAO,从“Spring Type”下拉列表中选择ref,在“Reference”字段中输入UserDAO,然后单击“完成”。
![请输入图片名称](https://www.evget.com/Content/ ... 73.png)
- 在Bean向导窗口上单击Finish,然后按Ctrl+S保存配置文件。完成以上操作后,业务逻辑代码就可以向BeanFactory请求persistenceLayer Bean,并获取该Bean的准备好的实例。
**8、创建一个数据源Spring Bean**
- 使用Spring Explorer创建一个新的bean。
- 在“Bean Id”字段中输入dataSource,并在“Bean class”字段中输入org.springframework.jdbc.datasource.DriverManagerDataSource。
![请输入图片名称](https://www.evget.com/Content/ ... 03.png)
- 单击“Properties”标签,添加以下属性:
1、名称类型值
2、riverClassName value:com.mysql.jdbc.Drive
3、rurl value jdbc:mysql://localhost:3306/test
4、用户名值root
5、密码值<your password>
- 在Bean向导窗口上单击Finish。
- 在Spring资源管理器中,右键单击sessionFactory bean,并选择Add Properties。
- 在“Name”字段中输入dataSource,将Spring类型保留为ref,在“Reference”字段中输入dataSource。
![请输入图片名称](https://www.evget.com/Content/ ... 54.png)
- 单击“Finish”,然后按Ctrl S保存配置文件。
**9、运行应用程序**
- 在资源管理器中,展开 HibernateSpringProject > src > com.myeclipse.hibernatespring。
- 右键单击BusinessLogic.java,选择 Run As>Java Application。Console视图将显示结果。
![请输入图片名称](https://www.evget.com/Content/ ... 39.png)
通过以上步骤可以看到,使用PersistenceLayer时,仅用几行代码就可以从数据库中存储、更新和删除用户。
**10、使用Hibernate注释和Spring**
MyEclipse为独立的Hibernate项目和Spring/Hibernate项目提供了Hibernate注释支持。以下部分将简要概述对Hibernate Annotations和Spring的支持。
注意:Hibernate 4.x自动包含注释支持。
**10.1 创建具有注释支持的Hibernate / Spring项目(Hibernate 3.x)**
在为Hibernate 3.x创建、启用Hibernate和spring的项目时,需要执行以下操作来启用注释支持。当项目添加Hibernate3.x功能时,一定要选择“启用Hibernate注释支持”复选框。
![请输入图片名称](https://www.evget.com/Content/ ... 77.gif)
- 在第3页上添加Spring功能时,请选中“Enable Hibernate annotation support”复选框。这将创建一个AnnotationSessionFactoryBean,而不是LocalSessionFactoryBean。在使用注释时,AnnotationSessionFactoryBean是必需的。
![请输入图片名称](https://www.evget.com/Content/ ... 86.gif)
**10.2 逆向工程**
当您选择Spring bean配置文件时,使用上述过程的项目设置中的Hibernate项目属性页会在SessionFactory Bean ID下拉列表中同时列出LocalSessionFactoryBean bean和AnnotationSessionFactoryBean bean。
注意:为了在逆向工程过程中为Hibernate 3.x提供注释支持,必须在Active Configuration File字段中选择Hibernate配置文件,或者为SessionFactory选择Spring bean配置文件和 AnnotationSessionFactoryBean。
![请输入图片名称](https://www.evget.com/Content/ ... 36.gif)
为Spring DAO提供的会话工厂bean Ids取决于您是否选择生成带注释的POJO或Hibernate映射文件。如果选择生成带注释的POJO,那么SessionFactory Id下拉列表中将仅显示AnnotationSessionFactoryBeans,否则将同时列出LocalSessionFactoryBean bean和AnnotationSessionFactoryBean bean。
![请输入图片名称](https://www.evget.com/Content/ ... 75.gif)
想与更多人聊MyEclips?加入****MyEclipse中国(官方2):742336981****畅所欲言吧!
想及时获取MyEclips资讯?扫描下方二维码,MyEclips信息跟你走!
![请输入图片名称](https://www.evget.com/Content/ ... 11.jpg)
MyEclipse数据库教程:使用Hibernate和Spring执行数据库操作(一)
Java EE开发 • momo77 发表了文章 • 0 个评论 • 142 次浏览 • 2019-11-11 10:27
- 连接到数据库
- 将Hibernate和Spring添加到项目中
- 通过对数据库表进行逆向工程来生成实体
- 创建Spring Beans作为持久层和数据源
- 启用Hibernate 3.x注释支持
**[免费下载MyEclipse](https://www.myeclipsecn.com/download/)**
**[慧都16周年·技术服务月,软件商城优惠券不限量免费领取,购物立减服务升级,购MyEclipse享折上折优惠!](https://www.evget.com/mall/detail/3016)**
**1、设置样本数据库**
本教程中的示例使用了一个带有用户表和数据的MySQL 5实例,用到了以下文件准备样本数据。在开始本教程之前,您必须建立一个数据库。
- 示例数据库内容
- 为用户表创建SQL脚本
**2、连接到数据库**
- 单击打开Database Explorer图标 ,选择MyEclipse数据库浏览器。
- 在数据库浏览器中,单击,然后选择新建。
- 从“Driver Template”下拉菜单中选择“MySQL Connector/J”,在“Driver name field”字段中键入MySQL Connector/J,将<hostname> [<:3306>] / <dbname>替换为localhost:3306 / test,然后输入用户名和密码。
![请输入图片名称](https://www.evget.com/Content/ ... 72.png)
- 单击添加JAR。导航到MySQL Connector/J JAR文件的位置,然后选择文件。“Driver classname field”将自动填充,然后点击Finish。
![请输入图片名称](https://www.evget.com/Content/ ... 85.png)
- 在DB Explorer中选择MySQL Connector/J,然后单击 ![请输入图片名称](https://www.evget.com/Content/ ... 48.png)打开链接。
**3、创建一个启用了Hibernate的项目**
您可以为任何受支持的基础项目(通常是Java或Web)启用Hibernate和Spring。
- 选择File>New>Project,展开Java,选择Java项目,然后单击下一步。
![请输入图片名称](https://www.evget.com/Content/ ... 98.png)
- 在“Project name”字段中输入HibernateSpringProject,然后单击“完成”。系统将提示您切换到Java透视图。选择“Yes”。
![请输入图片名称](https://www.evget.com/Content/ ... 04.png)
- 右键单击该项目,选择 Configure Facets > Install Hibernate Facet。注意,这里需要选择4.1作为Hibernate规范版本。
![请输入图片名称](https://www.evget.com/Content/ ... 45.png)
- 点击下一步。MyEclipse将创建一个新的hibernate.cfg.xml文件。
![请输入图片名称](https://www.evget.com/Content/ ... 09.png)
- 单击Java package字段旁边的New为session factory class创建一个新的软件包,并命名为com.myeclipse.hibernatespring,然后单击“完成”。
![请输入图片名称](https://www.evget.com/Content/ ... 45.png)
- 单击下一步,从数据库驱动程序下拉列表中选择MySQL Connector/J,输入密码,然后单击完成。
![请输入图片名称](https://www.evget.com/Content/ ... 15.png)
现在,该项目包含所有Hibernate和JDBC库,并且hibernate.cfg.xml文件在“Configuration”编辑器中打开。配置文件包含来自连接配置文件的连接信息。当您对数据库表进行反向工程时,实体将出现在配置文件的Mappings部分。
![请输入图片名称](https://www.evget.com/Content/ ... 26.png)
**4、将Spring Facet添加到项目中**
对于小型应用程序来说,Spring并不太适用,但是当您看到使用Spring通过简单地调整bean配置文件中的引用来交换代码库的整个部分有多么容易时,您就会意识到该工具的功能真的很强大。最明显的是,使用Spring来测试将会简单很多。例如,您可以交换一个持久性实现,该实现将其所有调用都发送给嵌入式DBMS,或者记录其所有活动。然后,当应用程序部署到生产环境中时,将持久性实现切换回使用主DBMS的代码,这些代码不使用日志记录就能提高性能。
- 右键单击该项目,然后选择 Configure Facets > Install Spring Facet。
- 接受默认的Spring版本和目标运行时,然后单击Next。
- MyEclipse将创建一个新的applicationContext.xml文件。点击完成。
![请输入图片名称](https://www.evget.com/Content/ ... 56.png)
现在,这个项目就同时具有Hibernate和Spring功能。
![请输入图片名称](https://www.evget.com/Content/ ... 61.png)
**5、逆向工程数据库表**
对数据库表进行反向工程时,会在项目中生成Hibernate(Java)对象。由于该项目是Hibernate-Spring项目,所以MyEclipse在逆向工程期间提供的不仅仅是普通DAO,而是Spring DAO选项。这就意味着系统将自动创建DAO Spring bean,这些bean的sessionFactory属性已经正确配置为对Hibernate SessionFactory的现有Spring引用。接下来,我们将通过几个步骤使用简单的逆向工程形式,让向导获取所有默认值。但是,为了实现最大程度的控制,您可以使用“Nxt”按钮,通过向导一步一步地浏览详细信息,比如主键生成策略、对象名称、类型等。
- 切换回数据库浏览器透视图。
- 在数据库浏览器中,将MySQL Connector/J扩展到用户表。
![请输入图片名称](https://www.evget.com/Content/ ... 82.png)
- 右键单击用户表,然后选择“Hibernate Reverse Engineering”。
- 单击Java src文件夹旁边的浏览,展开 HibernateSpringProject > src,选择com.myeclipse.hibernatespring,然后单击确定。
![请输入图片名称](https://www.evget.com/Content/ ... 33.png)
- 选择 Create POJO <> DB 表映射信息复选框,选择Java数据对象复选框,再选择Java数据访问对象(DAO)复选框,然后单击完成。您将收到系统关于切换到Hibernate透视图的提示,只需要单击“Yes”即可。
![请输入图片名称](https://www.evget.com/Content/ ... 65.png)
- 将Hibernate类生成到Java包中,并创建Spring Bean。
![请输入图片名称](https://www.evget.com/Content/ ... 45.png)
![请输入图片名称](https://www.evget.com/Content/ ... 49.png)
**6、编写 Hibernate-Spring 代码**
设置好项目后,就可以开始编写代码了。本过程需要两段代码:
- 业务逻辑:表示应用程序代码的主要方法。
- 持久层:这是业务逻辑应用于数据库功能的应用程序的抽象部分。如果使用的所有业务逻辑都是持久性层,那么您可以在这一层后面隐藏它工作的一些细节。本例使用Spring将执行数据库操作所需的必要DAO引用填充到持久层,这样做的好处是业务逻辑不需要了解任何相关信息。
将每个名为BusinessLogic.java和PersistenceLayer.java的类添加到com.myeclipse.hibernatespring包。从持久性层开始,因为它位于刚刚生成的所有代码和在业务逻辑层中编写的代码之间。它是持久化技术(Hibernate)和由Spring管理的业务逻辑(main方法)之间的抽象。将以下代码添加到PersistenceLayer类,这个类的目的是获得一个由Spring注入的UserDAO实例,然后使用该引用来实现save/find/update和delete操作(不需要调用代码的)。这使您不用完全更改应用程序的代码就能轻松、快速地修改应用程序中的持久性代码。更具体地说,如果您想更改PersistenceLayer的实现方式,比如说要更好地管理异常、事务或其他任何事情,可以通过编辑此类来完成。只要所有方法标签保持不变,就不需要重构整个应用程序。
{{{
package com.myeclipse.hibernatespring;
public class PersistenceLayer {
private UserDAO userDAO;
public UserDAO getUserDAO() {
return userDAO;
}
public void setUserDAO(UserDAO userDAO) {
this.userDAO = userDAO;
}
public void addUser(User user) {
userDAO.save(user);
}
public User findUserById(Integer id) {
return
userDAO.findById(id);
}
public void updateUser(User user) {
userDAO.merge(user);
}
public void deleteUser(User user) {
userDAO.delete(user);
}
}
}}}
另外,由于此抽象层与应用程序代码中的持久性代码是松散地耦合的,可以轻松的使用Spring注入一个测试UserDAO实现。例如,该实现模拟数据库操作,但实际上并不执行这些操作。现在您已经实现了PersistenceLayer,接下来将以下业务逻辑(或主要方法实现)代码添加到BusinessLogic类。业务逻辑(主要方法)利用抽象的持久层来添加/查找/更新以及从数据库中删除用户。
{{{
package com.myeclipse.hibernatespring;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class BusinessLogic {
public static void main(String[] args) {
/* 1. Create a new user */
Integer id = new Integer(1);
User user = new User();
user.setId(id);
user.setUsername("jdoe");
user.setPassword("1234");
user.setFirstName("John");
user.setLastName("Doe");
user.setDateCreated(Long.valueOf(System.currentTimeMillis()));
/* 2. Load the Spring bean configuration and create a bean factory */
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
/* 3. Create instance of PersistenceLayer */
PersistenceLayer persistenceLayer = (PersistenceLayer) ctx.getBean("persistenceLayer");
/* 4. Save the new user to the database */
persistenceLayer.addUser(user);
/* 5. Confirm that our user was saved */
User userLoadedFromDB = persistenceLayer.findUserById(id);
System.out.println("User Loaded from DB [username="
+ userLoadedFromDB.getUsername() + ", password="
+ userLoadedFromDB.getPassword() + ", firstName="
+ userLoadedFromDB.getFirstName() + ", lastName="
+ userLoadedFromDB.getLastName() + "]");
/* 6. Update the user */
userLoadedFromDB.setFirstName("Johnathan");
persistenceLayer.updateUser(userLoadedFromDB);
/* 7. Confirm that the update worked */
User userLoadedFromDBAgain = persistenceLayer
.findUserById(id);
System.out.println("User Loaded from DB Again [firstName="
+ userLoadedFromDBAgain.getFirstName() + "]");
/* 8. Delete the user */
persistenceLayer.deleteUser(user);
}
}
}}}
这个代码具有以下功能:
+ 创建一个新用户来插入数据库。它使用MyEclipse在从数据库逆向工程用户表时生成的用户POJO。
+ 创建一个bean工厂。它的作用是读入Spring bean配置文件,然后向“工厂”提供一个实例,该“工厂”可用于根据该文件中的规范获取bean的实例。这是Spring的“入口点”。
+ 创建PersistenceLayer实例,这样就可以执行数据库操作了!注意,为了正确填充UserDAO引用,您必须使用bean工厂来获取实例。
+ 使用创建的PersistenceLayer实例将新用户保存到数据库。注意,由于所有调用都通过PersistenceLayer进行,因此BusinessLogic类不了解UserDAO类或任何底层详细信息。
+ 在保存时,分配给用户的ID将从数据库中重新加载用户,通过这样的方式来检查并确保所有值都是正确的。
+ 更新用户名查看更新记录是否有效。
+ 重新从数据库加载用户,以确保修改的地方已完全更新。
+ 从数据库中删除用户。
想与更多人聊MyEclips?加入****MyEclipse中国(官方2):742336981****畅所欲言吧!
想及时获取MyEclips资讯?扫描下方二维码,MyEclips信息跟你走!
![请输入图片名称](https://www.evget.com/Content/ ... 11.jpg) 查看全部
- 连接到数据库
- 将Hibernate和Spring添加到项目中
- 通过对数据库表进行逆向工程来生成实体
- 创建Spring Beans作为持久层和数据源
- 启用Hibernate 3.x注释支持
**[免费下载MyEclipse](https://www.myeclipsecn.com/download/)**
**[慧都16周年·技术服务月,软件商城优惠券不限量免费领取,购物立减服务升级,购MyEclipse享折上折优惠!](https://www.evget.com/mall/detail/3016)**
**1、设置样本数据库**
本教程中的示例使用了一个带有用户表和数据的MySQL 5实例,用到了以下文件准备样本数据。在开始本教程之前,您必须建立一个数据库。
- 示例数据库内容
- 为用户表创建SQL脚本
**2、连接到数据库**
- 单击打开Database Explorer图标 ,选择MyEclipse数据库浏览器。
- 在数据库浏览器中,单击,然后选择新建。
- 从“Driver Template”下拉菜单中选择“MySQL Connector/J”,在“Driver name field”字段中键入MySQL Connector/J,将<hostname> [<:3306>] / <dbname>替换为localhost:3306 / test,然后输入用户名和密码。
![请输入图片名称](https://www.evget.com/Content/ ... 72.png)
- 单击添加JAR。导航到MySQL Connector/J JAR文件的位置,然后选择文件。“Driver classname field”将自动填充,然后点击Finish。
![请输入图片名称](https://www.evget.com/Content/ ... 85.png)
- 在DB Explorer中选择MySQL Connector/J,然后单击 ![请输入图片名称](https://www.evget.com/Content/ ... 48.png)打开链接。
**3、创建一个启用了Hibernate的项目**
您可以为任何受支持的基础项目(通常是Java或Web)启用Hibernate和Spring。
- 选择File>New>Project,展开Java,选择Java项目,然后单击下一步。
![请输入图片名称](https://www.evget.com/Content/ ... 98.png)
- 在“Project name”字段中输入HibernateSpringProject,然后单击“完成”。系统将提示您切换到Java透视图。选择“Yes”。
![请输入图片名称](https://www.evget.com/Content/ ... 04.png)
- 右键单击该项目,选择 Configure Facets > Install Hibernate Facet。注意,这里需要选择4.1作为Hibernate规范版本。
![请输入图片名称](https://www.evget.com/Content/ ... 45.png)
- 点击下一步。MyEclipse将创建一个新的hibernate.cfg.xml文件。
![请输入图片名称](https://www.evget.com/Content/ ... 09.png)
- 单击Java package字段旁边的New为session factory class创建一个新的软件包,并命名为com.myeclipse.hibernatespring,然后单击“完成”。
![请输入图片名称](https://www.evget.com/Content/ ... 45.png)
- 单击下一步,从数据库驱动程序下拉列表中选择MySQL Connector/J,输入密码,然后单击完成。
![请输入图片名称](https://www.evget.com/Content/ ... 15.png)
现在,该项目包含所有Hibernate和JDBC库,并且hibernate.cfg.xml文件在“Configuration”编辑器中打开。配置文件包含来自连接配置文件的连接信息。当您对数据库表进行反向工程时,实体将出现在配置文件的Mappings部分。
![请输入图片名称](https://www.evget.com/Content/ ... 26.png)
**4、将Spring Facet添加到项目中**
对于小型应用程序来说,Spring并不太适用,但是当您看到使用Spring通过简单地调整bean配置文件中的引用来交换代码库的整个部分有多么容易时,您就会意识到该工具的功能真的很强大。最明显的是,使用Spring来测试将会简单很多。例如,您可以交换一个持久性实现,该实现将其所有调用都发送给嵌入式DBMS,或者记录其所有活动。然后,当应用程序部署到生产环境中时,将持久性实现切换回使用主DBMS的代码,这些代码不使用日志记录就能提高性能。
- 右键单击该项目,然后选择 Configure Facets > Install Spring Facet。
- 接受默认的Spring版本和目标运行时,然后单击Next。
- MyEclipse将创建一个新的applicationContext.xml文件。点击完成。
![请输入图片名称](https://www.evget.com/Content/ ... 56.png)
现在,这个项目就同时具有Hibernate和Spring功能。
![请输入图片名称](https://www.evget.com/Content/ ... 61.png)
**5、逆向工程数据库表**
对数据库表进行反向工程时,会在项目中生成Hibernate(Java)对象。由于该项目是Hibernate-Spring项目,所以MyEclipse在逆向工程期间提供的不仅仅是普通DAO,而是Spring DAO选项。这就意味着系统将自动创建DAO Spring bean,这些bean的sessionFactory属性已经正确配置为对Hibernate SessionFactory的现有Spring引用。接下来,我们将通过几个步骤使用简单的逆向工程形式,让向导获取所有默认值。但是,为了实现最大程度的控制,您可以使用“Nxt”按钮,通过向导一步一步地浏览详细信息,比如主键生成策略、对象名称、类型等。
- 切换回数据库浏览器透视图。
- 在数据库浏览器中,将MySQL Connector/J扩展到用户表。
![请输入图片名称](https://www.evget.com/Content/ ... 82.png)
- 右键单击用户表,然后选择“Hibernate Reverse Engineering”。
- 单击Java src文件夹旁边的浏览,展开 HibernateSpringProject > src,选择com.myeclipse.hibernatespring,然后单击确定。
![请输入图片名称](https://www.evget.com/Content/ ... 33.png)
- 选择 Create POJO <> DB 表映射信息复选框,选择Java数据对象复选框,再选择Java数据访问对象(DAO)复选框,然后单击完成。您将收到系统关于切换到Hibernate透视图的提示,只需要单击“Yes”即可。
![请输入图片名称](https://www.evget.com/Content/ ... 65.png)
- 将Hibernate类生成到Java包中,并创建Spring Bean。
![请输入图片名称](https://www.evget.com/Content/ ... 45.png)
![请输入图片名称](https://www.evget.com/Content/ ... 49.png)
**6、编写 Hibernate-Spring 代码**
设置好项目后,就可以开始编写代码了。本过程需要两段代码:
- 业务逻辑:表示应用程序代码的主要方法。
- 持久层:这是业务逻辑应用于数据库功能的应用程序的抽象部分。如果使用的所有业务逻辑都是持久性层,那么您可以在这一层后面隐藏它工作的一些细节。本例使用Spring将执行数据库操作所需的必要DAO引用填充到持久层,这样做的好处是业务逻辑不需要了解任何相关信息。
将每个名为BusinessLogic.java和PersistenceLayer.java的类添加到com.myeclipse.hibernatespring包。从持久性层开始,因为它位于刚刚生成的所有代码和在业务逻辑层中编写的代码之间。它是持久化技术(Hibernate)和由Spring管理的业务逻辑(main方法)之间的抽象。将以下代码添加到PersistenceLayer类,这个类的目的是获得一个由Spring注入的UserDAO实例,然后使用该引用来实现save/find/update和delete操作(不需要调用代码的)。这使您不用完全更改应用程序的代码就能轻松、快速地修改应用程序中的持久性代码。更具体地说,如果您想更改PersistenceLayer的实现方式,比如说要更好地管理异常、事务或其他任何事情,可以通过编辑此类来完成。只要所有方法标签保持不变,就不需要重构整个应用程序。
{{{
package com.myeclipse.hibernatespring;
public class PersistenceLayer {
private UserDAO userDAO;
public UserDAO getUserDAO() {
return userDAO;
}
public void setUserDAO(UserDAO userDAO) {
this.userDAO = userDAO;
}
public void addUser(User user) {
userDAO.save(user);
}
public User findUserById(Integer id) {
return
userDAO.findById(id);
}
public void updateUser(User user) {
userDAO.merge(user);
}
public void deleteUser(User user) {
userDAO.delete(user);
}
}
}}}
另外,由于此抽象层与应用程序代码中的持久性代码是松散地耦合的,可以轻松的使用Spring注入一个测试UserDAO实现。例如,该实现模拟数据库操作,但实际上并不执行这些操作。现在您已经实现了PersistenceLayer,接下来将以下业务逻辑(或主要方法实现)代码添加到BusinessLogic类。业务逻辑(主要方法)利用抽象的持久层来添加/查找/更新以及从数据库中删除用户。
{{{
package com.myeclipse.hibernatespring;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class BusinessLogic {
public static void main(String[] args) {
/* 1. Create a new user */
Integer id = new Integer(1);
User user = new User();
user.setId(id);
user.setUsername("jdoe");
user.setPassword("1234");
user.setFirstName("John");
user.setLastName("Doe");
user.setDateCreated(Long.valueOf(System.currentTimeMillis()));
/* 2. Load the Spring bean configuration and create a bean factory */
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
/* 3. Create instance of PersistenceLayer */
PersistenceLayer persistenceLayer = (PersistenceLayer) ctx.getBean("persistenceLayer");
/* 4. Save the new user to the database */
persistenceLayer.addUser(user);
/* 5. Confirm that our user was saved */
User userLoadedFromDB = persistenceLayer.findUserById(id);
System.out.println("User Loaded from DB [username="
+ userLoadedFromDB.getUsername() + ", password="
+ userLoadedFromDB.getPassword() + ", firstName="
+ userLoadedFromDB.getFirstName() + ", lastName="
+ userLoadedFromDB.getLastName() + "]");
/* 6. Update the user */
userLoadedFromDB.setFirstName("Johnathan");
persistenceLayer.updateUser(userLoadedFromDB);
/* 7. Confirm that the update worked */
User userLoadedFromDBAgain = persistenceLayer
.findUserById(id);
System.out.println("User Loaded from DB Again [firstName="
+ userLoadedFromDBAgain.getFirstName() + "]");
/* 8. Delete the user */
persistenceLayer.deleteUser(user);
}
}
}}}
这个代码具有以下功能:
+ 创建一个新用户来插入数据库。它使用MyEclipse在从数据库逆向工程用户表时生成的用户POJO。
+ 创建一个bean工厂。它的作用是读入Spring bean配置文件,然后向“工厂”提供一个实例,该“工厂”可用于根据该文件中的规范获取bean的实例。这是Spring的“入口点”。
+ 创建PersistenceLayer实例,这样就可以执行数据库操作了!注意,为了正确填充UserDAO引用,您必须使用bean工厂来获取实例。
+ 使用创建的PersistenceLayer实例将新用户保存到数据库。注意,由于所有调用都通过PersistenceLayer进行,因此BusinessLogic类不了解UserDAO类或任何底层详细信息。
+ 在保存时,分配给用户的ID将从数据库中重新加载用户,通过这样的方式来检查并确保所有值都是正确的。
+ 更新用户名查看更新记录是否有效。
+ 重新从数据库加载用户,以确保修改的地方已完全更新。
+ 从数据库中删除用户。
想与更多人聊MyEclips?加入****MyEclipse中国(官方2):742336981****畅所欲言吧!
想及时获取MyEclips资讯?扫描下方二维码,MyEclips信息跟你走!
![请输入图片名称](https://www.evget.com/Content/ ... 11.jpg)
安装不了.进度条走完跳不出安装界面
下载|安装|配置|更新 • starcwof 回复了问题 • 7 人关注 • 6 个回复 • 143 次浏览 • 2018-11-16 11:28
myeclipse2015导入外来的项目,不能添加到使用自己配置的Tomcat。Tomcat不能识别
综合讨论区 • leeyj 回复了问题 • 4 人关注 • 5 个回复 • 125 次浏览 • 2016-12-15 17:46
求助!my eclipse在win和os x系统下同样的代码出错
综合讨论区 • tsoumin 回复了问题 • 2 人关注 • 2 个回复 • 17 次浏览 • 2016-07-27 14:55
Mac版myeclipse2015怎么调整内存?
Java EE开发 • besy 回复了问题 • 2 人关注 • 2 个回复 • 72 次浏览 • 2016-06-13 15:26
myeclipse2015安装velocity插件,安装不上,有人装上了没啊?
Java EE开发 • wangluolaowu 回复了问题 • 2 人关注 • 2 个回复 • 78 次浏览 • 2016-05-02 00:10
myeclipse2015安装不了log4e插件,请问有支持生成log4j的插件吗?
下载|安装|配置|更新 • besy 回复了问题 • 3 人关注 • 1 个回复 • 22 次浏览 • 2016-04-28 09:27
新人求助下在最新的 MyEclipse 2015 C1 11 for Windows 安装与使用是免费的么???
下载|安装|配置|更新 • kul1010 回复了问题 • 6 人关注 • 5 个回复 • 499 次浏览 • 2016-01-09 20:58
【教程连载-服务器篇】MyEclipse应用程序服务连接器
下载|安装|配置|更新 • besy 发表了文章 • 0 个评论 • 98 次浏览 • 2015-03-16 11:18
MyEclipse企业版平台为开发者提供seamlessly部署、执行并在几十个不同应用程序服务器中测试MyEclipse JEE应用程序的能力。其中这些应用程序服务器包括:
Geronimo
Glassfish
JBoss/Wildfly
Jetty
JOnAS
JRun
Liberty Profile
Oracle
Orion
Resin
SpringSource
Sun
Tomcat
TomEE
WebLogic
WebSphere
虽然MyEclipse中提供了许多现成的服务连接器,但是您还必须下载并安装第三方服务连接器来完成您的项目工作,就如同它包含在MyEclipse IDE中一样。
为了快速部署和测试,MyEclipse中包括了一个特殊安装的Tomcat 7和MyEclipse Derby数据库来作为集成沙盒的一部分。
**点击查看完整原文:**[MyEclipse应用程序服务连接器详细介绍](http://www.myeclipsecn.com/lea ... erver/)
还在用MyEclipse 10?out了![立即下载MyEclipse 2015](http://www.myeclipsecn.com/download/) 查看全部
MyEclipse企业版平台为开发者提供seamlessly部署、执行并在几十个不同应用程序服务器中测试MyEclipse JEE应用程序的能力。其中这些应用程序服务器包括:
Geronimo
Glassfish
JBoss/Wildfly
Jetty
JOnAS
JRun
Liberty Profile
Oracle
Orion
Resin
SpringSource
Sun
Tomcat
TomEE
WebLogic
WebSphere
虽然MyEclipse中提供了许多现成的服务连接器,但是您还必须下载并安装第三方服务连接器来完成您的项目工作,就如同它包含在MyEclipse IDE中一样。
为了快速部署和测试,MyEclipse中包括了一个特殊安装的Tomcat 7和MyEclipse Derby数据库来作为集成沙盒的一部分。
**点击查看完整原文:**[MyEclipse应用程序服务连接器详细介绍](http://www.myeclipsecn.com/lea ... erver/)
还在用MyEclipse 10?out了![立即下载MyEclipse 2015](http://www.myeclipsecn.com/download/)
【教程连载-数据库篇】表、外键和索引的使用方法
Java EE开发 • besy 发表了文章 • 0 个评论 • 68 次浏览 • 2015-03-10 13:35
- 创建和删除表
- 创建和删除外键
- 创建和删除索引
没有MyEclipse?[立即下载](http://www.myeclipsecn.com/download/)
点击查看完整原文:[MyEclipse表、外键和索引使用方法](http://www.myeclipsecn.com/lea ... dices/) 查看全部
- 创建和删除表
- 创建和删除外键
- 创建和删除索引
没有MyEclipse?[立即下载](http://www.myeclipsecn.com/download/)
点击查看完整原文:[MyEclipse表、外键和索引使用方法](http://www.myeclipsecn.com/lea ... dices/)
【教程连载-数据库篇】查看和编辑数据表
Java EE开发 • besy 发表了文章 • 0 个评论 • 64 次浏览 • 2015-03-06 11:42
- 浏览连接数据库
- 编辑表数据
没有MyEclipse?[立即下载](http://www.myeclipsecn.com/download/)
**1. 浏览表数据**
**2. 编辑表数据**
**点击查看完整原文:**[查看和编辑数据表](http://www.myeclipsecn.com/lea ... -data/) 查看全部
- 浏览连接数据库
- 编辑表数据
没有MyEclipse?[立即下载](http://www.myeclipsecn.com/download/)
**1. 浏览表数据**
**2. 编辑表数据**
**点击查看完整原文:**[查看和编辑数据表](http://www.myeclipsecn.com/lea ... -data/)
【教程连载-数据库篇】设置MyEclipse数据库资源管理器参数
Java EE开发 • besy 发表了文章 • 0 个评论 • 194 次浏览 • 2015-02-26 11:26
![请输入图片名称](http://www.myeclipsecn.com/ima ... ef.gif)
一般参数
**点击查看完整原文:**[设置MyEclipse数据库资源管理器参数](http://www.myeclipsecn.com/lea ... ences/)
## 没有MyEclipse?[立即下载](http://www.myeclipsecn.com/download/) ##
MyEclipse官方中文网免费推出中文教程连载,敬请关注!有什么意见或建议欢迎在下方留言 ↓↓ 查看全部
![请输入图片名称](http://www.myeclipsecn.com/ima ... ef.gif)
一般参数
**点击查看完整原文:**[设置MyEclipse数据库资源管理器参数](http://www.myeclipsecn.com/lea ... ences/)
## 没有MyEclipse?[立即下载](http://www.myeclipsecn.com/download/) ##
MyEclipse官方中文网免费推出中文教程连载,敬请关注!有什么意见或建议欢迎在下方留言 ↓↓
【教程连载-数据库篇】优化MyEclipse数据库过滤模式
Java EE开发 • besy 发表了文章 • 0 个评论 • 65 次浏览 • 2015-02-25 10:54
当在数据库浏览器中打开一个数据库连接时,默认的操作是获取每个数据库模式的相关信息。数据库资源管理器允许您通过数据库连接选择过滤器来管理这些模式,应用模式过滤器的主要原因是优化。在这个教程中,您将学习到:
- 过滤数据库模式
没有MyEclipse?[立即下载](http://www.myeclipsecn.com/download/)
过滤数据库模式具有以下优点:
打开一个数据库连接时提高连接性能
限制数据库浏览器呈现的信息量
为支持SQL代码完成功能新增元数据检索性能
**点击查看完整原文:**[优化MyEclipse数据库过滤模式](http://www.myeclipsecn.com/lea ... mance/) 查看全部
当在数据库浏览器中打开一个数据库连接时,默认的操作是获取每个数据库模式的相关信息。数据库资源管理器允许您通过数据库连接选择过滤器来管理这些模式,应用模式过滤器的主要原因是优化。在这个教程中,您将学习到:
- 过滤数据库模式
没有MyEclipse?[立即下载](http://www.myeclipsecn.com/download/)
过滤数据库模式具有以下优点:
打开一个数据库连接时提高连接性能
限制数据库浏览器呈现的信息量
为支持SQL代码完成功能新增元数据检索性能
**点击查看完整原文:**[优化MyEclipse数据库过滤模式](http://www.myeclipsecn.com/lea ... mance/)
【教程连载-数据库篇】在WebSphere中创建数据源
Java EE开发 • besy 发表了文章 • 0 个评论 • 49 次浏览 • 2015-02-09 14:36
- 使用WebSphere管理控制台创建一个数据源
- 测试数据源
持续时间:30分钟
没有MyEclipse?[立即下载](http://www.myeclipsecn.com/download/)
查看完整原文:[在WebSphere中创建数据源](http://www.myeclipsecn.com/lea ... phere/)
MyEclipse官方中文网免费推出中文教程连载,敬请关注!有什么意见或建议欢迎在下方留言 ↓↓ 查看全部
- 使用WebSphere管理控制台创建一个数据源
- 测试数据源
持续时间:30分钟
没有MyEclipse?[立即下载](http://www.myeclipsecn.com/download/)
查看完整原文:[在WebSphere中创建数据源](http://www.myeclipsecn.com/lea ... phere/)
MyEclipse官方中文网免费推出中文教程连载,敬请关注!有什么意见或建议欢迎在下方留言 ↓↓
【教程连载-数据库篇】MyEclipse Derby数据库服务器使用方法
Java EE开发 • besy 发表了文章 • 0 个评论 • 63 次浏览 • 2015-02-06 10:20
- 启动和停止MyEclipse Derby服务器
- 连接MyEclipse Derby服务器
- 定制服务器
持续时间:10分钟
没有MyEclipse?[立即下载](http://www.myeclipsecn.com/download/)
点击查看完整原文:[MyEclipse Derby数据库服务器使用方法](http://www.myeclipsecn.com/lea ... erver/)
MyEclipse官方中文网近期将持续推出中文教程连载,敬请关注!有什么意见或建议欢迎在下方留言 ↓↓ 查看全部
- 启动和停止MyEclipse Derby服务器
- 连接MyEclipse Derby服务器
- 定制服务器
持续时间:10分钟
没有MyEclipse?[立即下载](http://www.myeclipsecn.com/download/)
点击查看完整原文:[MyEclipse Derby数据库服务器使用方法](http://www.myeclipsecn.com/lea ... erver/)
MyEclipse官方中文网近期将持续推出中文教程连载,敬请关注!有什么意见或建议欢迎在下方留言 ↓↓
【教程连载-数据库篇】在MyEclipse中连接到数据库
Java EE开发 • besy 发表了文章 • 0 个评论 • 89 次浏览 • 2015-02-05 13:40
- 配置JDBC数据库驱动程序
- 创建数据库配置文件和连接
持续时间:15分钟
没有MyEclipse?[立即下载](http://www.myeclipsecn.com/download/)
点击这里查看完整原文:[在MyEclipse中连接到数据库](http://www.myeclipsecn.com/lea ... lipse/)
MyEclipse官方中文网近期将持续推出中文教程连载,敬请关注!有什么意见或建议欢迎在下方留言 ↓↓ 查看全部
- 配置JDBC数据库驱动程序
- 创建数据库配置文件和连接
持续时间:15分钟
没有MyEclipse?[立即下载](http://www.myeclipsecn.com/download/)
点击这里查看完整原文:[在MyEclipse中连接到数据库](http://www.myeclipsecn.com/lea ... lipse/)
MyEclipse官方中文网近期将持续推出中文教程连载,敬请关注!有什么意见或建议欢迎在下方留言 ↓↓
【教程连载-数据库篇】带你初步了解MyEclipse数据库工具
Java EE开发 • besy 发表了文章 • 0 个评论 • 115 次浏览 • 2015-02-04 14:40
**1. 企业应用程序的数据库工具**
在开发Java企业应用程序时,经常需要存储和检索应用程序和企业数据库中的数据。MyEclipse中丰富的数据库和持久性功能能帮助您快速开发 以数据库为中心的Java EE/JEE、Spring、Hibernate、POJOs平台下的应用程序或者结合thereof.The MyEclipse数据库的资源管理器可以直接访问您的企业数据存储,并提供以下功能:
JDBC connection templates for all popular relational databases
SQL Editor with code completion and query execution
ERD Viewer
Enhanced DB Editing Capabilities
Oracle
Microsoft SQL Server and Sybase
MySQL
Database browser for exploring database structure, e.g., tables, columns, sequences
View table and JDBC connection details
Manually edit table data
DDL export
Integrated Derby database and JDBC driver for testing
Export table definition to Hibernate project for Java OR mapping
任何应用程序使用数据库都需要某种持久层。 MyEclipse的持久性支持创建或生成使用JPA OR映射、Hibernate OR映射或使用或不使用EJBs的Spring框架。
查看完整原文:[MyEclipse的数据库工具](http://www.myeclipsecn.com/lea ... tools/)
MyEclipse官方中文网近期将持续推出中文教程连载,敬请关注!有什么意见或建议欢迎在下方留言 ↓↓ 查看全部
**1. 企业应用程序的数据库工具**
在开发Java企业应用程序时,经常需要存储和检索应用程序和企业数据库中的数据。MyEclipse中丰富的数据库和持久性功能能帮助您快速开发 以数据库为中心的Java EE/JEE、Spring、Hibernate、POJOs平台下的应用程序或者结合thereof.The MyEclipse数据库的资源管理器可以直接访问您的企业数据存储,并提供以下功能:
JDBC connection templates for all popular relational databases
SQL Editor with code completion and query execution
ERD Viewer
Enhanced DB Editing Capabilities
Oracle
Microsoft SQL Server and Sybase
MySQL
Database browser for exploring database structure, e.g., tables, columns, sequences
View table and JDBC connection details
Manually edit table data
DDL export
Integrated Derby database and JDBC driver for testing
Export table definition to Hibernate project for Java OR mapping
任何应用程序使用数据库都需要某种持久层。 MyEclipse的持久性支持创建或生成使用JPA OR映射、Hibernate OR映射或使用或不使用EJBs的Spring框架。
查看完整原文:[MyEclipse的数据库工具](http://www.myeclipsecn.com/lea ... tools/)
MyEclipse官方中文网近期将持续推出中文教程连载,敬请关注!有什么意见或建议欢迎在下方留言 ↓↓
myeclipse2015导入外来的项目,不能添加到使用自己配置的Tomcat。Tomcat不能识别
回复综合讨论区 • leeyj 回复了问题 • 4 人关注 • 5 个回复 • 125 次浏览 • 2016-12-15 17:46
求助!my eclipse在win和os x系统下同样的代码出错
回复综合讨论区 • tsoumin 回复了问题 • 2 人关注 • 2 个回复 • 17 次浏览 • 2016-07-27 14:55
myeclipse2015安装velocity插件,安装不上,有人装上了没啊?
回复Java EE开发 • wangluolaowu 回复了问题 • 2 人关注 • 2 个回复 • 78 次浏览 • 2016-05-02 00:10
myeclipse2015安装不了log4e插件,请问有支持生成log4j的插件吗?
回复下载|安装|配置|更新 • besy 回复了问题 • 3 人关注 • 1 个回复 • 22 次浏览 • 2016-04-28 09:27
新人求助下在最新的 MyEclipse 2015 C1 11 for Windows 安装与使用是免费的么???
回复下载|安装|配置|更新 • kul1010 回复了问题 • 6 人关注 • 5 个回复 • 499 次浏览 • 2016-01-09 20:58
MyEclipse数据库教程:使用Java项目查看JPA工作方式
Java EE开发 • momo77 发表了文章 • 0 个评论 • 272 次浏览 • 2019-11-27 16:57
一般情况,JPA Facet将被添加到Java或Web项目中。在本教程中,您将使用一个简单的Java项目来查看JPA的工作方式。
注意:您可以[下载本教程中开发的项目](https://www.evget.com/resource/detail-demo-14494),然后导入到您的工作区中。
1、单击下拉箭头![请输入图片名称](https://www.evget.com/Content/ ... 53.png),然后选择Java Project。
2、在“Project Name”字段中输入SampleJPAProject,选择默认选项,然后单击“完成”。
![请输入图片名称](https://www.evget.com/Content/ ... 58.gif)
3、单击![请输入图片名称](https://www.evget.com/Content/ ... 46.png),选择MyEclipse Database Explorer打开透视图。
4、在数据库浏览器中,选择MyEclipse Derby连接,然后单击。
![请输入图片名称](https://www.evget.com/Content/ ... 54.gif)
**注意:**在建立数据库连接之前,无法添加JPA Facet,因为需要选择要使用的连接。
5、切换回MyEclipse Java Enterprise透视图,右键单击项目,然后选择**[MyEclipse](https://www.myeclipsecn.com/)** > Project Facets > Install JPA Facet。
6、在目标运行时下拉列表中选择MyEclipse通用Java运行时,然后单击下一步。
![请输入图片名称](https://www.evget.com/Content/ ... 51.png)
7、从平台下拉列表中选择一个平台,如果JPA实现类型默认为用户库,则选择与所选平台相对应的库。如果未列出任何库,可单击![请输入图片名称](https://www.evget.com/Content/ ... 10.png)下载适当的库。
![请输入图片名称](https://www.evget.com/Content/ ... 16.png)
8、在“Connection”字段中选择MyEclipse Derby,选中“Add driver library to build path”和“Override default schema”复选框,然后从“Schema”下拉列表中选择CLASSICCARS。单击完成。
![请输入图片名称](https://www.evget.com/Content/ ... 24.gif)
现在,项目中已添加了完全配置的JPA Facet,其中包括JPA配置信息/DB连接信息以及添加到项目构建路径中的所有必需的JDBC和JPA库。如果这是一个Web项目,在将项目部署到应用程序服务器上并在其中运行时,所有构建路径的附加内容都将准备好进行部署。
![请输入图片名称](https://www.evget.com/Content/ ... 70.gif)
**[下载MyEclipse>>>](https://www.myeclipsecn.com/download/)**
**[即日起至11月30日,慧都16周年·技术服务月,软件商城优惠券不限量免费领取,购MyEclipse、CodeMix享折上(MyEclipse最高省48元,CodeMix最高省36元)!](https://www.evget.com/game/index/techsrv)**
**创建一个Java包**
在下一个步骤中,对数据库表中的数据进行反向工程,并为项目生成实体。在进行逆向工程之前,需要创建一个Java包,并在其中放置这些实体。
1、展开项目,右键单击src文件夹,然后选择New > Package。
![请输入图片名称](https://www.evget.com/Content/ ... 07.gif)
2、在“Name”字段中输入com.myeclipseide.jpa,然后单击“完成”。
![请输入图片名称](https://www.evget.com/Content/ ... 64.gif)
**逆向工程数据库表**
现在已经建立了项目,可以将PRODUCTLINE表反向工程到项目中,并开始使用所生成的实体。
1、右键单击该项目,然后选择JPA Tools > Generate Entities & DAOs。
**注意:**您可以选择使用MyEclipse逆向工程工具或DALI实体生成器。选择,单击“确定”,然后完成向导。本教程使用MyEclipse逆向工程工具。
![请输入图片名称](https://www.evget.com/Content/ ... 96.png)
2、选择PRODUCTLINE表,单击添加,然后单击下一步。
![请输入图片名称](https://www.evget.com/Content/ ... 42.gif)
在“Java Package”字段中,单击“ Browse”,然后选择先前创建的com.myeclipseide.jpa程序包。选中以下复选框:
- Entity Bean Generation:让MyEclipse生成注释为用作JPA实体的普通Java类。
- Create abstract class;如果您希望自定义生成的类,而不必每次都覆盖更改,则MyEclipse可以生成基本抽象类以及您可以自定义和使用的具体子类。每次进行反向工程时,MyEclipse只会覆盖抽象基类,并在具体子类中保留更改。
- Update persistence.xml:与Hibernate类似,您可以在JPA配置文件中列出正在使用的所有JPA实体。
- Java Data Access Generation:让MyEclipse生成DAO实用程序类,让您可以立即从数据库中保存/查找/更新/删除实体。此代码包含了JPA实体管理器,使得使用实体和数据库变得非常容易。
- Generate Precise findBy Methods:让MyEclipse生成findByXXX方法,其中XXX与反转的实体上的每个属性有关。这样一来,可以使用任何属性作为查找实体的方法,轻松地从数据库访问实体。
- Generate Java Interfaces:选择此选项将创建带有相应DAO实现类的接口类。取消选择此选项仅生成DAO实现类,而没有用于定义接口的单独类。
![请输入图片名称](https://www.evget.com/Content/ ... 15.gif)
3、单击完成。查看通过展开com.myeclipseide.jpa包生成的MyEclipse资源。
![请输入图片名称](https://www.evget.com/Content/ ... 44.gif)
生成的实体描述如下:
- EntityManagerHelper:使用直接JPA时,开发人员需要使用EntityManager class。EntityManager通过提供用于访问管理器的静态方法以及易于调用的最常用操作,此生成的帮助程序类让使用EntityManager的过程变得更加容易。
- IProductline:定义相应DAO实现类的接口的类。
- Productline:此类是表示数据库表PRODUCTLINE的JPA实体(POJO)。该POJO包含PRODUCTLINE表的字段,并表示数据库中的一行。
- ProductlineDAO:此类包含EntityManagerHelper以便为我们提供易于使用的方法,专门用于在数据库中添加/查找/更新和删除产品。
注意:逆向工程完成后,您可以打开“Persistence”透视图,使用某些持久性和数据源工具来分析数据库和项目中的数据。
**编写应用程序**
由于MyEclipse生成了许多代码,所以您可以快速将精力放在“Business Logic”上,或更具体地说是“实际完成工作的代码”。在本部分中,您将编写一个具有main方法的Java类,该方法将Productline插入数据库,对其进行检索、更新并删除。使用此代码,您会发现在应用程序中使用JPA实体是多么容易!
**一、创建一个类**
1、右键单击com.myeclipseide.jpa软件包,然后选择New Class。
2、在“Name”字段中键入RunJPA,选中Public static void main复选框,然后单击“Finish”。
![请输入图片名称](https://www.evget.com/Content/ ... 76.gif)
在构建新类和main方法之后,需要编写代码来操作Productline实例。
**注意:**以下代码看起来很长而且很复杂,这是因为我们试图在一个代码块中显示四个不同的示例。如果您查看每个操作(保存、加载、更新、删除),就会发现它们都不由几行代码组成。
3、将以下代码添加到main方法中,然后按CTRL + S保存。
{{{
/* 1. Create a reference to our ID */
String productLineID = "Men's Shoes";
/* 2. Create a new Productline instance */
Productline newProductline = new Productline(
productLineID,
"Shoes for men.", "Men's Shoes", 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步中的代码,这相当于(减去注释)三行代码。以下是每个编号部分的细分:
PRODUCTLINE表使用产品线的名称作为主键。为了使本教程更容易理解,我们在字符串中定义了产品线名称,并在代码中多次运用(创建和存储产品线,然后检索两次)。
这将创建由MyEclipse生成的Productline POJO的新实例,并将其插入数据库中。对于本教程而言,这些值并不重要,所以我们只使用示例信息。
这将创建要使用的DAO实例。数据库访问需要DAO(这也是由MyEclipse生成的)。
这让DAO将新的产品系列存储在数据库中。因为要向数据库中写入一些内容,所以将save调用包含在事务中。
**[下载MyEclipse>>>](https://www.myeclipsecn.com/download/)**
**[即日起至11月30日,慧都16周年·技术服务月,软件商城优惠券不限量免费领取,购MyEclipse、CodeMix享折上(MyEclipse最高省48元,CodeMix最高省36元)!](https://www.evget.com/game/index/techsrv)**
为了确保使用第1步中定义的ID正确存储了产品系列,我们要求DAO获取产品系列,并将结果分配给一个全新的对象,以完全确保从数据库中加载了什么。(我们可以将值分配回newProductline,但是出于本教程的目的,我们必须清楚地知道对象来源,并且加载的实例之前在代码中不存在)。
这将从已加载的实体中打印出值,以确保它只是存储在数据库中的值。
这将更改刚刚加载的POJO的值,以显示更新记录的工作方式。然后,使用DAO将更改提交回数据库。同样的,此操作被包含在事务中,以确保安全地更改数据库。
与步骤5一样,使用在步骤1中定义的ID从数据库中重新加载记录,以确保更新操作有效。然后打印出POJO值,以确保新描述已保存到数据库中。
这显示了如何从数据库删除记录。同样的,由于这需要更改数据库,因此该代码被包含在事务中。
与第8步和第5步类似,为了证明删除有效,我们尝试使用给定的ID从数据库加载实体。因为我们已经删除了Productline,所以这个操作应该是失败的。从DAO获得结果后,将使用嵌入式IF子句打印一条语句,以确保结果为null。
**二、运行应用程序**
1、右键单击项目,然后选择Run As > Java Application。
2、选择RunJPA应用程序,然后单击“确定”。
![请输入图片名称](https://www.evget.com/Content/ ... 70.png)
输出显示在Console视图中。
![请输入图片名称](https://www.evget.com/Content/ ... 30.jpg)
红色文本是来自MyEclipse中生成的DAO和EntityHelper类的默认日志消息。黑色文本是代码中用于跟踪进度的System.out.println文本。如您所见,第6步中的第一个打印输出和第8步中的更新打印输出都按预期工作。并且查询没有返回Productline,证明删除也很成功。
**资源**
[Oracle JPA注释参考](https://www.oracle.com/technet ... 1.html)
[BEA JPQL参考](https://www.evget.com/resource ... -17577) 查看全部
一般情况,JPA Facet将被添加到Java或Web项目中。在本教程中,您将使用一个简单的Java项目来查看JPA的工作方式。
注意:您可以[下载本教程中开发的项目](https://www.evget.com/resource/detail-demo-14494),然后导入到您的工作区中。
1、单击下拉箭头![请输入图片名称](https://www.evget.com/Content/ ... 53.png),然后选择Java Project。
2、在“Project Name”字段中输入SampleJPAProject,选择默认选项,然后单击“完成”。
![请输入图片名称](https://www.evget.com/Content/ ... 58.gif)
3、单击![请输入图片名称](https://www.evget.com/Content/ ... 46.png),选择MyEclipse Database Explorer打开透视图。
4、在数据库浏览器中,选择MyEclipse Derby连接,然后单击。
![请输入图片名称](https://www.evget.com/Content/ ... 54.gif)
**注意:**在建立数据库连接之前,无法添加JPA Facet,因为需要选择要使用的连接。
5、切换回MyEclipse Java Enterprise透视图,右键单击项目,然后选择**[MyEclipse](https://www.myeclipsecn.com/)** > Project Facets > Install JPA Facet。
6、在目标运行时下拉列表中选择MyEclipse通用Java运行时,然后单击下一步。
![请输入图片名称](https://www.evget.com/Content/ ... 51.png)
7、从平台下拉列表中选择一个平台,如果JPA实现类型默认为用户库,则选择与所选平台相对应的库。如果未列出任何库,可单击![请输入图片名称](https://www.evget.com/Content/ ... 10.png)下载适当的库。
![请输入图片名称](https://www.evget.com/Content/ ... 16.png)
8、在“Connection”字段中选择MyEclipse Derby,选中“Add driver library to build path”和“Override default schema”复选框,然后从“Schema”下拉列表中选择CLASSICCARS。单击完成。
![请输入图片名称](https://www.evget.com/Content/ ... 24.gif)
现在,项目中已添加了完全配置的JPA Facet,其中包括JPA配置信息/DB连接信息以及添加到项目构建路径中的所有必需的JDBC和JPA库。如果这是一个Web项目,在将项目部署到应用程序服务器上并在其中运行时,所有构建路径的附加内容都将准备好进行部署。
![请输入图片名称](https://www.evget.com/Content/ ... 70.gif)
**[下载MyEclipse>>>](https://www.myeclipsecn.com/download/)**
**[即日起至11月30日,慧都16周年·技术服务月,软件商城优惠券不限量免费领取,购MyEclipse、CodeMix享折上(MyEclipse最高省48元,CodeMix最高省36元)!](https://www.evget.com/game/index/techsrv)**
**创建一个Java包**
在下一个步骤中,对数据库表中的数据进行反向工程,并为项目生成实体。在进行逆向工程之前,需要创建一个Java包,并在其中放置这些实体。
1、展开项目,右键单击src文件夹,然后选择New > Package。
![请输入图片名称](https://www.evget.com/Content/ ... 07.gif)
2、在“Name”字段中输入com.myeclipseide.jpa,然后单击“完成”。
![请输入图片名称](https://www.evget.com/Content/ ... 64.gif)
**逆向工程数据库表**
现在已经建立了项目,可以将PRODUCTLINE表反向工程到项目中,并开始使用所生成的实体。
1、右键单击该项目,然后选择JPA Tools > Generate Entities & DAOs。
**注意:**您可以选择使用MyEclipse逆向工程工具或DALI实体生成器。选择,单击“确定”,然后完成向导。本教程使用MyEclipse逆向工程工具。
![请输入图片名称](https://www.evget.com/Content/ ... 96.png)
2、选择PRODUCTLINE表,单击添加,然后单击下一步。
![请输入图片名称](https://www.evget.com/Content/ ... 42.gif)
在“Java Package”字段中,单击“ Browse”,然后选择先前创建的com.myeclipseide.jpa程序包。选中以下复选框:
- Entity Bean Generation:让MyEclipse生成注释为用作JPA实体的普通Java类。
- Create abstract class;如果您希望自定义生成的类,而不必每次都覆盖更改,则MyEclipse可以生成基本抽象类以及您可以自定义和使用的具体子类。每次进行反向工程时,MyEclipse只会覆盖抽象基类,并在具体子类中保留更改。
- Update persistence.xml:与Hibernate类似,您可以在JPA配置文件中列出正在使用的所有JPA实体。
- Java Data Access Generation:让MyEclipse生成DAO实用程序类,让您可以立即从数据库中保存/查找/更新/删除实体。此代码包含了JPA实体管理器,使得使用实体和数据库变得非常容易。
- Generate Precise findBy Methods:让MyEclipse生成findByXXX方法,其中XXX与反转的实体上的每个属性有关。这样一来,可以使用任何属性作为查找实体的方法,轻松地从数据库访问实体。
- Generate Java Interfaces:选择此选项将创建带有相应DAO实现类的接口类。取消选择此选项仅生成DAO实现类,而没有用于定义接口的单独类。
![请输入图片名称](https://www.evget.com/Content/ ... 15.gif)
3、单击完成。查看通过展开com.myeclipseide.jpa包生成的MyEclipse资源。
![请输入图片名称](https://www.evget.com/Content/ ... 44.gif)
生成的实体描述如下:
- EntityManagerHelper:使用直接JPA时,开发人员需要使用EntityManager class。EntityManager通过提供用于访问管理器的静态方法以及易于调用的最常用操作,此生成的帮助程序类让使用EntityManager的过程变得更加容易。
- IProductline:定义相应DAO实现类的接口的类。
- Productline:此类是表示数据库表PRODUCTLINE的JPA实体(POJO)。该POJO包含PRODUCTLINE表的字段,并表示数据库中的一行。
- ProductlineDAO:此类包含EntityManagerHelper以便为我们提供易于使用的方法,专门用于在数据库中添加/查找/更新和删除产品。
注意:逆向工程完成后,您可以打开“Persistence”透视图,使用某些持久性和数据源工具来分析数据库和项目中的数据。
**编写应用程序**
由于MyEclipse生成了许多代码,所以您可以快速将精力放在“Business Logic”上,或更具体地说是“实际完成工作的代码”。在本部分中,您将编写一个具有main方法的Java类,该方法将Productline插入数据库,对其进行检索、更新并删除。使用此代码,您会发现在应用程序中使用JPA实体是多么容易!
**一、创建一个类**
1、右键单击com.myeclipseide.jpa软件包,然后选择New Class。
2、在“Name”字段中键入RunJPA,选中Public static void main复选框,然后单击“Finish”。
![请输入图片名称](https://www.evget.com/Content/ ... 76.gif)
在构建新类和main方法之后,需要编写代码来操作Productline实例。
**注意:**以下代码看起来很长而且很复杂,这是因为我们试图在一个代码块中显示四个不同的示例。如果您查看每个操作(保存、加载、更新、删除),就会发现它们都不由几行代码组成。
3、将以下代码添加到main方法中,然后按CTRL + S保存。
{{{
/* 1. Create a reference to our ID */
String productLineID = "Men's Shoes";
/* 2. Create a new Productline instance */
Productline newProductline = new Productline(
productLineID,
"Shoes for men.", "Men's Shoes", 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步中的代码,这相当于(减去注释)三行代码。以下是每个编号部分的细分:
PRODUCTLINE表使用产品线的名称作为主键。为了使本教程更容易理解,我们在字符串中定义了产品线名称,并在代码中多次运用(创建和存储产品线,然后检索两次)。
这将创建由MyEclipse生成的Productline POJO的新实例,并将其插入数据库中。对于本教程而言,这些值并不重要,所以我们只使用示例信息。
这将创建要使用的DAO实例。数据库访问需要DAO(这也是由MyEclipse生成的)。
这让DAO将新的产品系列存储在数据库中。因为要向数据库中写入一些内容,所以将save调用包含在事务中。
**[下载MyEclipse>>>](https://www.myeclipsecn.com/download/)**
**[即日起至11月30日,慧都16周年·技术服务月,软件商城优惠券不限量免费领取,购MyEclipse、CodeMix享折上(MyEclipse最高省48元,CodeMix最高省36元)!](https://www.evget.com/game/index/techsrv)**
为了确保使用第1步中定义的ID正确存储了产品系列,我们要求DAO获取产品系列,并将结果分配给一个全新的对象,以完全确保从数据库中加载了什么。(我们可以将值分配回newProductline,但是出于本教程的目的,我们必须清楚地知道对象来源,并且加载的实例之前在代码中不存在)。
这将从已加载的实体中打印出值,以确保它只是存储在数据库中的值。
这将更改刚刚加载的POJO的值,以显示更新记录的工作方式。然后,使用DAO将更改提交回数据库。同样的,此操作被包含在事务中,以确保安全地更改数据库。
与步骤5一样,使用在步骤1中定义的ID从数据库中重新加载记录,以确保更新操作有效。然后打印出POJO值,以确保新描述已保存到数据库中。
这显示了如何从数据库删除记录。同样的,由于这需要更改数据库,因此该代码被包含在事务中。
与第8步和第5步类似,为了证明删除有效,我们尝试使用给定的ID从数据库加载实体。因为我们已经删除了Productline,所以这个操作应该是失败的。从DAO获得结果后,将使用嵌入式IF子句打印一条语句,以确保结果为null。
**二、运行应用程序**
1、右键单击项目,然后选择Run As > Java Application。
2、选择RunJPA应用程序,然后单击“确定”。
![请输入图片名称](https://www.evget.com/Content/ ... 70.png)
输出显示在Console视图中。
![请输入图片名称](https://www.evget.com/Content/ ... 30.jpg)
红色文本是来自MyEclipse中生成的DAO和EntityHelper类的默认日志消息。黑色文本是代码中用于跟踪进度的System.out.println文本。如您所见,第6步中的第一个打印输出和第8步中的更新打印输出都按预期工作。并且查询没有返回Productline,证明删除也很成功。
**资源**
[Oracle JPA注释参考](https://www.oracle.com/technet ... 1.html)
[BEA JPQL参考](https://www.evget.com/resource ... -17577)
MyEclipse数据库教程:JPA开发
Java EE开发 • momo77 发表了文章 • 0 个评论 • 380 次浏览 • 2019-11-15 11:54
**[慧都16周年·技术服务月,软件商城优惠券不限量免费领取,购物立减服务升级,购MyEclipse享折上折优惠!](https://www.evget.com/game/index/techsrv)**
**1、配置JPA项目**
JPA是类似于Hibernate的持久性规范,已成为Java EE 5规范的一部分。JPA使用Java 5注释来控制将普通Java类(POJO)映射到数据库表。
您可以通过创建任意受支持的基础项目类型(例如Java或Web项目)来创建启用JPA的项目,然后从MyEclipse菜单中将JPA构面添加到该项目中。右键单击该项目即可添加JPA构面,然后从菜单中选择MyEclipse > Project Facets > Install JPA Facet。同时,还可以通过打开项目的“Project Facets”属性,同时向项目添加多个构面。
![请输入图片名称](https://www.evget.com/Content/ ... 99.png)
**提供持久性**
MyEclipse为OpenJPA、Hibernate和EclipseLink JPA提供程序提供支持。
![请输入图片名称](https://www.evget.com/Content/ ... 35.gif)
**数据库配置**
将项目与数据库和架构相关联,为设计时工具提供支持。如下图所示,项目与本地MyEclipse Derby数据库的数据库驱动程序关联。
![请输入图片名称](https://www.evget.com/Content/ ... 65.gif)
除了可以依赖MyEclipse附带的库,还可以单击下载图标添加要包含在项目中的用户库。
![请输入图片名称](https://www.evget.com/Content/ ... 86.png)
同时,您还可以右键单击该项目从菜单中选择“Properties”,展开MyEclipse > Project Facets,然后选择Java Persistence,打开Java Persistence properties页面随时更改JPA项目的数据库驱动程序关联。
![请输入图片名称](https://www.evget.com/Content/ ... 83.gif)
**2、从数据库反向工程实体和DAO**
右键单击一个JPA项目,然后从菜单中选择“Generate Entities & DAOs”。您可以选择使用MyEclipse逆向工程工具或DALI实体生成器进行选择,将启动相应的JPA逆向工程向导。
![请输入图片名称](https://www.evget.com/Content/ ... 27.gif)
右键单击DB Browser视图中的表生成实体。
![请输入图片名称](https://www.evget.com/Content/ ... 73.gif)
逆向工程过程是完全可定制的。使用JPA逆向工程向导,可以选择要生成的工件以及该工件所基于的数据库表。
![请输入图片名称](https://www.evget.com/Content/ ... 38.gif)
MyEclipse还可以生成具有结果分页支持的DAO findBy<property>查询。生成的结果分页API为DAO客户端提供了细粒度的程序控制,可定位到结果集的特定行号并获取n个实体。
以下是逆向工程处理器生成的代码的几个样本片段:
![请输入图片名称](https://www.evget.com/Content/ ... 39.gif)
**3、高级实体编辑工具**
**MyEclipse Java持久性透视图**
MyEclipse Java Persistence透视图为面向jpa的任务提供了最佳的编辑器和视图布局。
![jpa-persistence-perspective-clipped.jpg](https://www.evget.com/Content/ ... 24.jpg)
**JPA Details视图**
通过“JPA Details”视图,可以轻松编辑实体注释。
![请输入图片名称](https://www.evget.com/Content/ ... 77.gif)
**JPA Diagram编辑器**
JPA Diagram编辑器使您可以轻松创建新实体或在现有JPA项目中编辑实体。
![请输入图片名称](https://www.evget.com/Content/ ... 73.png)
**JPA Annotation Table和Column Content Assist**
![请输入图片名称](https://www.evget.com/Content/ ... 83.gif)
**JPA Entity Validation**
可检测到映射中的错误并在编辑器和“Problems”视图中显示。
![请输入图片名称](https://www.evget.com/Content/ ... 88.gif)
可以在项目级别启用或禁用JPA Entity Validator。
![请输入图片名称](https://www.evget.com/Content/ ... 46.gif)
**4、高级Spring-JPA集成**
**Spring 2支持**
将JPA构面添加到已经具有Spring构面的项目时,您可以选择高级Spring-JPA支持(反之亦然)。这种级别的支持使JPA工具可以与项目的Spring工件一起使用。下图显示了Spring-JPA项目配置向导。
![jpa-spring-addcaps.jpg](https://www.evget.com/Content/ ... 05.jpg)
选择Spring-JPA支持,主要bean配置文件,并自定义bean id和事务支持。
![请输入图片名称](https://www.evget.com/Content/ ... 73.gif)
**逆向工程实体和数据库中的Spring DAO**
对于配置为支持高级Spring-JPA功能的项目,除了从数据库架构生成实体类之外,还可以生成与Spring兼容的DAO。在逆向工程过程中,将使用每个DOA类的生成的bean条目更新Spring应用程序上下文文件。
生成Spring DAO:
![请输入图片名称](https://www.evget.com/Content/ ... 06.gif)
生成的Spring应用程序上下文文件:
![请输入图片名称](https://www.evget.com/Content/ ... 88.gif)
生成的Spring DAO扩展自Spring的JpaDaoSupport:
![请输入图片名称](https://resources.cloud.genuit ... ao.gif) 查看全部
**[慧都16周年·技术服务月,软件商城优惠券不限量免费领取,购物立减服务升级,购MyEclipse享折上折优惠!](https://www.evget.com/game/index/techsrv)**
**1、配置JPA项目**
JPA是类似于Hibernate的持久性规范,已成为Java EE 5规范的一部分。JPA使用Java 5注释来控制将普通Java类(POJO)映射到数据库表。
您可以通过创建任意受支持的基础项目类型(例如Java或Web项目)来创建启用JPA的项目,然后从MyEclipse菜单中将JPA构面添加到该项目中。右键单击该项目即可添加JPA构面,然后从菜单中选择MyEclipse > Project Facets > Install JPA Facet。同时,还可以通过打开项目的“Project Facets”属性,同时向项目添加多个构面。
![请输入图片名称](https://www.evget.com/Content/ ... 99.png)
**提供持久性**
MyEclipse为OpenJPA、Hibernate和EclipseLink JPA提供程序提供支持。
![请输入图片名称](https://www.evget.com/Content/ ... 35.gif)
**数据库配置**
将项目与数据库和架构相关联,为设计时工具提供支持。如下图所示,项目与本地MyEclipse Derby数据库的数据库驱动程序关联。
![请输入图片名称](https://www.evget.com/Content/ ... 65.gif)
除了可以依赖MyEclipse附带的库,还可以单击下载图标添加要包含在项目中的用户库。
![请输入图片名称](https://www.evget.com/Content/ ... 86.png)
同时,您还可以右键单击该项目从菜单中选择“Properties”,展开MyEclipse > Project Facets,然后选择Java Persistence,打开Java Persistence properties页面随时更改JPA项目的数据库驱动程序关联。
![请输入图片名称](https://www.evget.com/Content/ ... 83.gif)
**2、从数据库反向工程实体和DAO**
右键单击一个JPA项目,然后从菜单中选择“Generate Entities & DAOs”。您可以选择使用MyEclipse逆向工程工具或DALI实体生成器进行选择,将启动相应的JPA逆向工程向导。
![请输入图片名称](https://www.evget.com/Content/ ... 27.gif)
右键单击DB Browser视图中的表生成实体。
![请输入图片名称](https://www.evget.com/Content/ ... 73.gif)
逆向工程过程是完全可定制的。使用JPA逆向工程向导,可以选择要生成的工件以及该工件所基于的数据库表。
![请输入图片名称](https://www.evget.com/Content/ ... 38.gif)
MyEclipse还可以生成具有结果分页支持的DAO findBy<property>查询。生成的结果分页API为DAO客户端提供了细粒度的程序控制,可定位到结果集的特定行号并获取n个实体。
以下是逆向工程处理器生成的代码的几个样本片段:
![请输入图片名称](https://www.evget.com/Content/ ... 39.gif)
**3、高级实体编辑工具**
**MyEclipse Java持久性透视图**
MyEclipse Java Persistence透视图为面向jpa的任务提供了最佳的编辑器和视图布局。
![jpa-persistence-perspective-clipped.jpg](https://www.evget.com/Content/ ... 24.jpg)
**JPA Details视图**
通过“JPA Details”视图,可以轻松编辑实体注释。
![请输入图片名称](https://www.evget.com/Content/ ... 77.gif)
**JPA Diagram编辑器**
JPA Diagram编辑器使您可以轻松创建新实体或在现有JPA项目中编辑实体。
![请输入图片名称](https://www.evget.com/Content/ ... 73.png)
**JPA Annotation Table和Column Content Assist**
![请输入图片名称](https://www.evget.com/Content/ ... 83.gif)
**JPA Entity Validation**
可检测到映射中的错误并在编辑器和“Problems”视图中显示。
![请输入图片名称](https://www.evget.com/Content/ ... 88.gif)
可以在项目级别启用或禁用JPA Entity Validator。
![请输入图片名称](https://www.evget.com/Content/ ... 46.gif)
**4、高级Spring-JPA集成**
**Spring 2支持**
将JPA构面添加到已经具有Spring构面的项目时,您可以选择高级Spring-JPA支持(反之亦然)。这种级别的支持使JPA工具可以与项目的Spring工件一起使用。下图显示了Spring-JPA项目配置向导。
![jpa-spring-addcaps.jpg](https://www.evget.com/Content/ ... 05.jpg)
选择Spring-JPA支持,主要bean配置文件,并自定义bean id和事务支持。
![请输入图片名称](https://www.evget.com/Content/ ... 73.gif)
**逆向工程实体和数据库中的Spring DAO**
对于配置为支持高级Spring-JPA功能的项目,除了从数据库架构生成实体类之外,还可以生成与Spring兼容的DAO。在逆向工程过程中,将使用每个DOA类的生成的bean条目更新Spring应用程序上下文文件。
生成Spring DAO:
![请输入图片名称](https://www.evget.com/Content/ ... 06.gif)
生成的Spring应用程序上下文文件:
![请输入图片名称](https://www.evget.com/Content/ ... 88.gif)
生成的Spring DAO扩展自Spring的JpaDaoSupport:
![请输入图片名称](https://resources.cloud.genuit ... ao.gif)
MyEclipse数据库教程:Hibernate开发
Java EE开发 • momo77 发表了文章 • 0 个评论 • 313 次浏览 • 2019-11-15 11:46
**[慧都16周年·技术服务月,软件商城优惠券不限量免费领取,购物立减服务升级,购MyEclipse享折上折优惠!](https://www.evget.com/game/index/techsrv)**
**1、什么是Hibernate?**
Hibernate是一种非常流行的、基于Java的开源对象关系映射(JORM)引擎,易于启动和运行,提供了丰富的功能,包括:
- 多种映射策略
- 传递持久性
- 单对象到多表的映射
- 集合支持
- 多态关联
- 可自定义的SQL查询
Hibernate用于在运行时将数据库结构映射到Java对象。使用像Hibernate这样的持久性框架,开发人员可以专注于编写业务逻辑,而不是编写准确、高效的持久性层(包括DAO、SQL查询、JDBC代码、连接管理等)。
任何需要在Java应用程序对象和数据库表之间移动数据的Java应用程序都可以使用Hibernate。因此,它在开发两层和三层Java EE应用程序中非常有用。将Hibernate集成到您的应用程序中涉及:
- 将Hibernate核心和支持JAR库安装到项目中
- 创建一个hibernate.cfg.xml文件来描述如何访问数据库
- 为每个可持久的Java类创建单独的映射描述符文件
**1.1导致Hibernate的历史**
在Java数据库和Web编程的早期,开发人员使用java.sql包提供的不同类访问其数据库,这包括从DriverManager获取驱动程序、创建和使用连接、正确处理异常、关闭连接等。在此阶段,一个常见的问题是忘记清理数据库连接,并在它们运行了一段时间后在应用程序中得到连接异常的反馈。
几年后,连接池成为一个大话题,因为它们让开发人员不用再担心创建和管理(清理)数据库连接,而是把精力集中在他们的SQL和ResultSet解析代码上。突然之间,长时间运行的应用程序中数据库连接异常的问题基本解决了。但是,仍然经常看到数百行样板代码用于用值填充查询并解析SQL查询返回的ResultSet。
又过了几年,有人想到了将ResultSet结果直接自动映射到Java对象的方法,这在很大程度上解决了所有冗余样板解析代码的问题。那时,Java数据库开发已经迈出了几大步,并且变得越来越简单。然后,Hibernate模式为人熟知。
随着Hibernate的出现,不仅这些东西会继续自动化,Hibernate也会管理内存中对象的状态,它会担心何时以及如何从数据库读取或写入对象值。现在,开发人员只处理对象(或映射对象),Hibernate则处理其他所有内容。开发人员不再编写JDBC和SQL代码。相反,他们使用的是为他们工作的代码。
当Hibernate出现时,另一种可用的持久性技术是EJB2.x。Hibernate的时间安排、易用性和强大功能都是Java领域在相当长一段时间内所采用的最快技术之一。
**2、Hibernate项目配置**
您可以通过创建任何受支持类型的基础项目(例如Java或Web项目)添加Hibernate facet,来创建启用了hibernate的项目。MyEclipse为您创建一个hibernate.cfg.xml文件,您必须指定数据库连接详细信息。
您也可以通过打开项目的Project Facets属性,将多个构面同时添加到项目中。
![请输入图片名称](https://www.evget.com/Content/ ... 55.png)
**2.1Hibernate映射和配置**
Hibernate用Java编写,可以通过两种类型的配置文件进行高度配置。第一种配置文件名为hibernate.cfg.xml。启动时,Hibernate会查询此XML文件的操作属性,例如数据库连接字符串和密码、数据库方言以及映射文件的位置。Hibernate在类路径上搜索此文件。
![请输入图片名称](https://www.evget.com/Content/ ... 79.png)
第二种类型的配置文件是映射描述(文件扩展名* .hbm),它指示Hibernate如何在特定的Java类和一个或多个数据库表之间映射数据。MyEclipse提供了用于处理所有这些配置文件类型的工具,并在您更改数据库和Hibernate映射的Java类时使它们保持同步。编辑器具有以下功能:
- 基于表单的高级编辑器和随附的向导
- 超链接导航到引用的类和属性
- 类名自动完成
- 属性名称自动完成
- 内容有助于映射文件元素、属性和值
![请输入图片名称](https://www.evget.com/Content/ ... 23.png)
![请输入图片名称](https://www.evget.com/Content/ ... 78.gif)
![请输入图片名称](https://www.evget.com/Content/ ... 76.gif)
**3、逆向工程数据库表**
您可以将数据库表信息反向工程为Hibernate(Java)对象,然后将它们添加到项目中。为了最大程度地控制生成的Hibernate对象,可以在向导中选择详细信息,例如主键生成策略、对象名称、类型等。
在Database Explorer透视图中,可以查看所连接的数据库的内容。在DB浏览器中,右键单击要反向工程的表,然后从菜单中选择Hibernate Reverse Engineering。完成向导后,系统将提示您切换到Hibernate透视图。
![请输入图片名称](https://www.evget.com/Content/ ... 07.png)
这些类将生成到在向导中选择的Java包中。
![请输入图片名称](https://www.evget.com/Content/ ... 46.png)
对数据库表进行反向工程时,实体将显示在配置文件的Mappings部分中。
**4. HQL Editor**
HQL Editor以及Hibernate透视图中的其他HQL视图可帮助开发、评估或测试HQL查询。HQL是一种类似于SQL的语言,称为Hibernate查询语言。它有时看起来像是简化的SQL,使用对象名和引用而不是表名和列名。该编辑器具有以下功能:
- 内容辅助
- 输入时,Hibernate动态查询转换器视图将HQL查询转换为SQL。
- Hibernate Query Results视图可以包含多个结果集。结果属性显示在Properties视图中。
- 查询参数视图可轻松执行变量查询。
- 项目选择器,可以在不同的Hibernate项目之间切换上下文。
使用HQL Editor,可以即时编写并运行HQL。编辑器利用MyEclipse从数据库进行反向工程的对象,将查询转换为SQL(如右下所示),然后运行它。结果在Java对象中返回,并显示在左下角。
![请输入图片名称](https://www.evget.com/Content/ ... 90.png)
对数据库进行反向工程之后,就可以开始编写应用程序以读取、写入和更新数据库中的对象。放置好Java类和方法后,可以在HQL Editor中运行Hibernate查询来查询数据库,这是查询数据库的另一种方法。您还可以切换到Database Explorer透视图并从那里查询数据库以查看相同的结果。
**5、Criteria Editor**
除了HQL编辑器之外,MyEclipse Hibernate工具还包括一个Criteria编辑器。Hibernate中的Criteria是一种利用对象实例结合查询约束来针对实体创建查询的方法。例如,假设创建一个类型为User的实体实例,将实体指定为查询的条件,并告诉条件只返回前10个结果,这是创建用于实体的复杂查询的有效且快速的方法。
要访问Criteria Editor,请右键单击包含Hibernate facet的项目,然后选择MyEclipse > Open Criteria Editor。
![请输入图片名称](https://www.evget.com/Content/ ... 90.gif)
打开Criteria Editor后,可以在编辑器中输入任何表示条件的有效Java代码,并使用编辑器顶部的“Run”图标执行它们。
下面的示例显示了一个基于EchoMessage实体的简单条件,要求Hibernate返回其EchoMessageId值为2的实体。结果出现在Result视图中。
![请输入图片名称](https://www.evget.com/Content/ ... 92.png)
可以使用MyEclipse中的Criteria Editor来编写和执行任何有效的基于条件的代码。在Java编辑器中输入条件时,选择它并调用快速修复将显示“Copy to Criteria”编辑器操作。选择此操作将打开“Criteria”编辑器,并使用所选文本进行初始化。
![请输入图片名称](https://www.evget.com/Content/ ... 58.gif)
您可以在Criteria Editor中测试和编辑条件。完成后,关闭编辑器可用修改后的条件查询替换最开始选择的文本。
**6、常见问题**
**Q:**Hibernate与EJB 3/JPA相比如何?
**A:**Hibernate 3.2实际上是与JPA兼容的,它实现了所有新的注释,这些注释让JPA使用起来非常自动化且更简单。因此,除了使用JPA的commercial implementation外,还可以使用Hibernate,所有标准JPA批注仍将保留在类中,而无需进行任何更改。
**Q:**Hibernate可以扩展到非常大的应用程序吗?
**A:**可以。实际上,Hibernate的根源来自于两位创始人在大型企业应用程序中担任顾问的经验,Hibernate是他们对持久性在应用程序中应如何起作用的看法。
几年前,Gavin King向社区提出了一项挑战,要求找到手工调整的JDBC SQL。该SQL执行的幅度要比Hibernate生成的SQL快,由此也能看出该框架非常注重功能、灵活性和性能。 查看全部
**[慧都16周年·技术服务月,软件商城优惠券不限量免费领取,购物立减服务升级,购MyEclipse享折上折优惠!](https://www.evget.com/game/index/techsrv)**
**1、什么是Hibernate?**
Hibernate是一种非常流行的、基于Java的开源对象关系映射(JORM)引擎,易于启动和运行,提供了丰富的功能,包括:
- 多种映射策略
- 传递持久性
- 单对象到多表的映射
- 集合支持
- 多态关联
- 可自定义的SQL查询
Hibernate用于在运行时将数据库结构映射到Java对象。使用像Hibernate这样的持久性框架,开发人员可以专注于编写业务逻辑,而不是编写准确、高效的持久性层(包括DAO、SQL查询、JDBC代码、连接管理等)。
任何需要在Java应用程序对象和数据库表之间移动数据的Java应用程序都可以使用Hibernate。因此,它在开发两层和三层Java EE应用程序中非常有用。将Hibernate集成到您的应用程序中涉及:
- 将Hibernate核心和支持JAR库安装到项目中
- 创建一个hibernate.cfg.xml文件来描述如何访问数据库
- 为每个可持久的Java类创建单独的映射描述符文件
**1.1导致Hibernate的历史**
在Java数据库和Web编程的早期,开发人员使用java.sql包提供的不同类访问其数据库,这包括从DriverManager获取驱动程序、创建和使用连接、正确处理异常、关闭连接等。在此阶段,一个常见的问题是忘记清理数据库连接,并在它们运行了一段时间后在应用程序中得到连接异常的反馈。
几年后,连接池成为一个大话题,因为它们让开发人员不用再担心创建和管理(清理)数据库连接,而是把精力集中在他们的SQL和ResultSet解析代码上。突然之间,长时间运行的应用程序中数据库连接异常的问题基本解决了。但是,仍然经常看到数百行样板代码用于用值填充查询并解析SQL查询返回的ResultSet。
又过了几年,有人想到了将ResultSet结果直接自动映射到Java对象的方法,这在很大程度上解决了所有冗余样板解析代码的问题。那时,Java数据库开发已经迈出了几大步,并且变得越来越简单。然后,Hibernate模式为人熟知。
随着Hibernate的出现,不仅这些东西会继续自动化,Hibernate也会管理内存中对象的状态,它会担心何时以及如何从数据库读取或写入对象值。现在,开发人员只处理对象(或映射对象),Hibernate则处理其他所有内容。开发人员不再编写JDBC和SQL代码。相反,他们使用的是为他们工作的代码。
当Hibernate出现时,另一种可用的持久性技术是EJB2.x。Hibernate的时间安排、易用性和强大功能都是Java领域在相当长一段时间内所采用的最快技术之一。
**2、Hibernate项目配置**
您可以通过创建任何受支持类型的基础项目(例如Java或Web项目)添加Hibernate facet,来创建启用了hibernate的项目。MyEclipse为您创建一个hibernate.cfg.xml文件,您必须指定数据库连接详细信息。
您也可以通过打开项目的Project Facets属性,将多个构面同时添加到项目中。
![请输入图片名称](https://www.evget.com/Content/ ... 55.png)
**2.1Hibernate映射和配置**
Hibernate用Java编写,可以通过两种类型的配置文件进行高度配置。第一种配置文件名为hibernate.cfg.xml。启动时,Hibernate会查询此XML文件的操作属性,例如数据库连接字符串和密码、数据库方言以及映射文件的位置。Hibernate在类路径上搜索此文件。
![请输入图片名称](https://www.evget.com/Content/ ... 79.png)
第二种类型的配置文件是映射描述(文件扩展名* .hbm),它指示Hibernate如何在特定的Java类和一个或多个数据库表之间映射数据。MyEclipse提供了用于处理所有这些配置文件类型的工具,并在您更改数据库和Hibernate映射的Java类时使它们保持同步。编辑器具有以下功能:
- 基于表单的高级编辑器和随附的向导
- 超链接导航到引用的类和属性
- 类名自动完成
- 属性名称自动完成
- 内容有助于映射文件元素、属性和值
![请输入图片名称](https://www.evget.com/Content/ ... 23.png)
![请输入图片名称](https://www.evget.com/Content/ ... 78.gif)
![请输入图片名称](https://www.evget.com/Content/ ... 76.gif)
**3、逆向工程数据库表**
您可以将数据库表信息反向工程为Hibernate(Java)对象,然后将它们添加到项目中。为了最大程度地控制生成的Hibernate对象,可以在向导中选择详细信息,例如主键生成策略、对象名称、类型等。
在Database Explorer透视图中,可以查看所连接的数据库的内容。在DB浏览器中,右键单击要反向工程的表,然后从菜单中选择Hibernate Reverse Engineering。完成向导后,系统将提示您切换到Hibernate透视图。
![请输入图片名称](https://www.evget.com/Content/ ... 07.png)
这些类将生成到在向导中选择的Java包中。
![请输入图片名称](https://www.evget.com/Content/ ... 46.png)
对数据库表进行反向工程时,实体将显示在配置文件的Mappings部分中。
**4. HQL Editor**
HQL Editor以及Hibernate透视图中的其他HQL视图可帮助开发、评估或测试HQL查询。HQL是一种类似于SQL的语言,称为Hibernate查询语言。它有时看起来像是简化的SQL,使用对象名和引用而不是表名和列名。该编辑器具有以下功能:
- 内容辅助
- 输入时,Hibernate动态查询转换器视图将HQL查询转换为SQL。
- Hibernate Query Results视图可以包含多个结果集。结果属性显示在Properties视图中。
- 查询参数视图可轻松执行变量查询。
- 项目选择器,可以在不同的Hibernate项目之间切换上下文。
使用HQL Editor,可以即时编写并运行HQL。编辑器利用MyEclipse从数据库进行反向工程的对象,将查询转换为SQL(如右下所示),然后运行它。结果在Java对象中返回,并显示在左下角。
![请输入图片名称](https://www.evget.com/Content/ ... 90.png)
对数据库进行反向工程之后,就可以开始编写应用程序以读取、写入和更新数据库中的对象。放置好Java类和方法后,可以在HQL Editor中运行Hibernate查询来查询数据库,这是查询数据库的另一种方法。您还可以切换到Database Explorer透视图并从那里查询数据库以查看相同的结果。
**5、Criteria Editor**
除了HQL编辑器之外,MyEclipse Hibernate工具还包括一个Criteria编辑器。Hibernate中的Criteria是一种利用对象实例结合查询约束来针对实体创建查询的方法。例如,假设创建一个类型为User的实体实例,将实体指定为查询的条件,并告诉条件只返回前10个结果,这是创建用于实体的复杂查询的有效且快速的方法。
要访问Criteria Editor,请右键单击包含Hibernate facet的项目,然后选择MyEclipse > Open Criteria Editor。
![请输入图片名称](https://www.evget.com/Content/ ... 90.gif)
打开Criteria Editor后,可以在编辑器中输入任何表示条件的有效Java代码,并使用编辑器顶部的“Run”图标执行它们。
下面的示例显示了一个基于EchoMessage实体的简单条件,要求Hibernate返回其EchoMessageId值为2的实体。结果出现在Result视图中。
![请输入图片名称](https://www.evget.com/Content/ ... 92.png)
可以使用MyEclipse中的Criteria Editor来编写和执行任何有效的基于条件的代码。在Java编辑器中输入条件时,选择它并调用快速修复将显示“Copy to Criteria”编辑器操作。选择此操作将打开“Criteria”编辑器,并使用所选文本进行初始化。
![请输入图片名称](https://www.evget.com/Content/ ... 58.gif)
您可以在Criteria Editor中测试和编辑条件。完成后,关闭编辑器可用修改后的条件查询替换最开始选择的文本。
**6、常见问题**
**Q:**Hibernate与EJB 3/JPA相比如何?
**A:**Hibernate 3.2实际上是与JPA兼容的,它实现了所有新的注释,这些注释让JPA使用起来非常自动化且更简单。因此,除了使用JPA的commercial implementation外,还可以使用Hibernate,所有标准JPA批注仍将保留在类中,而无需进行任何更改。
**Q:**Hibernate可以扩展到非常大的应用程序吗?
**A:**可以。实际上,Hibernate的根源来自于两位创始人在大型企业应用程序中担任顾问的经验,Hibernate是他们对持久性在应用程序中应如何起作用的看法。
几年前,Gavin King向社区提出了一项挑战,要求找到手工调整的JDBC SQL。该SQL执行的幅度要比Hibernate生成的SQL快,由此也能看出该框架非常注重功能、灵活性和性能。
MyEclipse数据库教程:使用Hibernate开发Persistence(二)
Java EE开发 • momo77 发表了文章 • 0 个评论 • 293 次浏览 • 2019-11-11 11:41
**[在开始本教程之前,请先下载并熟悉MyEclipse数据库工具。](https://www.myeclipsecn.com/download/)**
**[慧都16周年·技术服务月,软件商城优惠券不限量免费领取,购物立减服务升级,购MyEclipse享折上折优惠!](https://www.evget.com/mall/detail/3016)**
**5、使用HQL Editor**
- 通过以下步骤使用ECHO_MESSAGE表(该表是使用本教程开始时提供的SQL命令添加的)。
- 映射到ECHO_MESSAGE表。
- 右键单击HibernateDemo项目,然后选择[MyEclipse](https://www.myeclipsecn.com/)>打开HQL Editor。
**注意:**每次打开扩展名为.hql的文件时,HQL Editor都会打开。
![请输入图片名称](https://www.evget.com/Content/ ... 77.gif)
- 编辑器打开后,输入EchoMessage。
- 单击运行图标或按CTRL + F9执行查询。
![请输入图片名称](https://www.evget.com/Content/ ... 19.png)
- 使用查询参数视图执行变量查询。
![请输入图片名称](https://www.evget.com/Content/ ... 23.png)
**注意:**在为项目初始化HQL Editor后更改配置、映射或数据对象,请使用编辑器工具栏上的“Refresh”按钮以确保编辑器选择了最新的更改。
如果您正在编辑一个NamedQuery注释,可以在查询属性重调用quick fix(通常为CTRL + 1)来复制到HQL Editor。这将打开HQL编辑器,并使用查询字符串对其进行初始化。
![请输入图片名称](https://www.evget.com/Content/ ... 72.gif)
您可以在HQL Editor中测试和编辑查询。完成后,关闭编辑器可让您将修改后的查询复制回Java编辑器中的query属性。
打开项目的HQL Editor后,将为NamedQueries提供内容辅助和验证(CTRL +空格键)。
![请输入图片名称](https://www.evget.com/Content/ ... 78.jpg)
**6、测试HibernateDemo应用程序**
测试Hibernate持久性的一种方法是使用main方法创建Java类。测试类使用Java对象和由Hibernate向导创建的HibernateSessionFactory。查看在HibernateSession类中定义的两个重要方法,如下所示,它们在测试代码中使用。
![请输入图片名称](https://www.evget.com/Content/ ... 70.gif)
显示的是SessionManager类中的两个重要的静态方法。
- getSession():此方法返回一个Session变量,可用于访问Hibernate Session类。每当您要使用Hibernate会话时,都可以调用此方法来获取缓存的Hibernate Session。
- closeSession():如果会话已经启动,则此方法可将其关闭。
以下是测试代码中的步骤列表以及源代码示例:
- 选择File > New > Class。
- 输入包名称。
- 在Name字段中输入HibernateReadTest。
- 如图所示完成页面,然后单击“完成”。
![请输入图片名称](https://www.evget.com/Content/ ... 64.gif)
- 打开HibernateReadTest.java文件,将源代码替换为下面的代码,然后按CTRL + S保存。
{{{
package com.myeclipse.hibernate;
import java.math.BigDecimal;
import org.hibernate.HibernateException;
public class HibernateReadTest {
public static void main(String[] args) {
// Step 1 - Create the DAO
EchoMessageDAO dao = new EchoMessageDAO();
try {
// Step 2 - Use findById to retrieve the message with ID = 1
EchoMessage echoMessage = dao.findById(new BigDecimal(1));
System.out.println("Entity retrieval successful, message is: "
+ echoMessage.getMsg());
} catch (HibernateException e){
System.err.println("Entity retrieval failed.");
e.printStackTrace();
} finally {
try {
dao.getSession().close();
} catch (Exception e) {
// do nothing
}
}
}
}
}}}
- 在资源管理器中右键单击HibernateReadTest.java文件,然后选择 Run > Run As > Java Application。将打开“Console”视图,如果测试成功,您将看到如下图所示的输出。
**注意:**如果看到log4j警告,可以忽略。
![请输入图片名称](https://www.evget.com/Content/ ... 01.gif)
**7、导入示例HibernateDemo项目**
- [下载HibernateDemo.zip。](https://www.evget.com/resource/detail-demo-14454)
- 从菜单中选择Import > Existing Projects into Workspace,选择“Select archive file”选项,然后导航至zip文件。单击完成将项目导入到工作区中。
- 由于此项目是使用旧版本的MyEclipse创建的,因此将打开“Project Migration”向导。请按照向导中的步骤迁移项目。
- 进行以下操作重新配置项目来匹配您的环境:
a、编辑hibernate.cfg.xml并更改连接设置以反映您的数据库设置。提示:可能需要更改EchoMessage.hbm.xml才能改变在class元素中指定的模式。
b、建立与数据库的连接,并执行DDL/DDL.sql文件中的代码创建并填充示例表。在执行之前,可能需要使用模式前缀来限定表,并对数据库特定的DDL进行其他更改。
c、将数据库的JDBC驱动程序JAR复制到项目中。右键单击项目,然后选择build path > Add to build path,将其添加到构建路径中。
本教程还包括以下文件:
- log4j.properties - 用于控制log4j库执行的日志记录级别。
- ehcache.xml - 用于配置ehcache库。
- HibernateWriteTest.java - 一个示例应用程序,演示了如何使用DAO来写数据库。
想与更多人聊MyEclips?加入**MyEclipse中国(官方2):742336981**畅所欲言吧!
想及时获取MyEclips资讯?扫描下方二维码,MyEclips信息跟你走!
![请输入图片名称](https://www.evget.com/Content/ ... 11.jpg) 查看全部
**[在开始本教程之前,请先下载并熟悉MyEclipse数据库工具。](https://www.myeclipsecn.com/download/)**
**[慧都16周年·技术服务月,软件商城优惠券不限量免费领取,购物立减服务升级,购MyEclipse享折上折优惠!](https://www.evget.com/mall/detail/3016)**
**5、使用HQL Editor**
- 通过以下步骤使用ECHO_MESSAGE表(该表是使用本教程开始时提供的SQL命令添加的)。
- 映射到ECHO_MESSAGE表。
- 右键单击HibernateDemo项目,然后选择[MyEclipse](https://www.myeclipsecn.com/)>打开HQL Editor。
**注意:**每次打开扩展名为.hql的文件时,HQL Editor都会打开。
![请输入图片名称](https://www.evget.com/Content/ ... 77.gif)
- 编辑器打开后,输入EchoMessage。
- 单击运行图标或按CTRL + F9执行查询。
![请输入图片名称](https://www.evget.com/Content/ ... 19.png)
- 使用查询参数视图执行变量查询。
![请输入图片名称](https://www.evget.com/Content/ ... 23.png)
**注意:**在为项目初始化HQL Editor后更改配置、映射或数据对象,请使用编辑器工具栏上的“Refresh”按钮以确保编辑器选择了最新的更改。
如果您正在编辑一个NamedQuery注释,可以在查询属性重调用quick fix(通常为CTRL + 1)来复制到HQL Editor。这将打开HQL编辑器,并使用查询字符串对其进行初始化。
![请输入图片名称](https://www.evget.com/Content/ ... 72.gif)
您可以在HQL Editor中测试和编辑查询。完成后,关闭编辑器可让您将修改后的查询复制回Java编辑器中的query属性。
打开项目的HQL Editor后,将为NamedQueries提供内容辅助和验证(CTRL +空格键)。
![请输入图片名称](https://www.evget.com/Content/ ... 78.jpg)
**6、测试HibernateDemo应用程序**
测试Hibernate持久性的一种方法是使用main方法创建Java类。测试类使用Java对象和由Hibernate向导创建的HibernateSessionFactory。查看在HibernateSession类中定义的两个重要方法,如下所示,它们在测试代码中使用。
![请输入图片名称](https://www.evget.com/Content/ ... 70.gif)
显示的是SessionManager类中的两个重要的静态方法。
- getSession():此方法返回一个Session变量,可用于访问Hibernate Session类。每当您要使用Hibernate会话时,都可以调用此方法来获取缓存的Hibernate Session。
- closeSession():如果会话已经启动,则此方法可将其关闭。
以下是测试代码中的步骤列表以及源代码示例:
- 选择File > New > Class。
- 输入包名称。
- 在Name字段中输入HibernateReadTest。
- 如图所示完成页面,然后单击“完成”。
![请输入图片名称](https://www.evget.com/Content/ ... 64.gif)
- 打开HibernateReadTest.java文件,将源代码替换为下面的代码,然后按CTRL + S保存。
{{{
package com.myeclipse.hibernate;
import java.math.BigDecimal;
import org.hibernate.HibernateException;
public class HibernateReadTest {
public static void main(String[] args) {
// Step 1 - Create the DAO
EchoMessageDAO dao = new EchoMessageDAO();
try {
// Step 2 - Use findById to retrieve the message with ID = 1
EchoMessage echoMessage = dao.findById(new BigDecimal(1));
System.out.println("Entity retrieval successful, message is: "
+ echoMessage.getMsg());
} catch (HibernateException e){
System.err.println("Entity retrieval failed.");
e.printStackTrace();
} finally {
try {
dao.getSession().close();
} catch (Exception e) {
// do nothing
}
}
}
}
}}}
- 在资源管理器中右键单击HibernateReadTest.java文件,然后选择 Run > Run As > Java Application。将打开“Console”视图,如果测试成功,您将看到如下图所示的输出。
**注意:**如果看到log4j警告,可以忽略。
![请输入图片名称](https://www.evget.com/Content/ ... 01.gif)
**7、导入示例HibernateDemo项目**
- [下载HibernateDemo.zip。](https://www.evget.com/resource/detail-demo-14454)
- 从菜单中选择Import > Existing Projects into Workspace,选择“Select archive file”选项,然后导航至zip文件。单击完成将项目导入到工作区中。
- 由于此项目是使用旧版本的MyEclipse创建的,因此将打开“Project Migration”向导。请按照向导中的步骤迁移项目。
- 进行以下操作重新配置项目来匹配您的环境:
a、编辑hibernate.cfg.xml并更改连接设置以反映您的数据库设置。提示:可能需要更改EchoMessage.hbm.xml才能改变在class元素中指定的模式。
b、建立与数据库的连接,并执行DDL/DDL.sql文件中的代码创建并填充示例表。在执行之前,可能需要使用模式前缀来限定表,并对数据库特定的DDL进行其他更改。
c、将数据库的JDBC驱动程序JAR复制到项目中。右键单击项目,然后选择build path > Add to build path,将其添加到构建路径中。
本教程还包括以下文件:
- log4j.properties - 用于控制log4j库执行的日志记录级别。
- ehcache.xml - 用于配置ehcache库。
- HibernateWriteTest.java - 一个示例应用程序,演示了如何使用DAO来写数据库。
想与更多人聊MyEclips?加入**MyEclipse中国(官方2):742336981**畅所欲言吧!
想及时获取MyEclips资讯?扫描下方二维码,MyEclips信息跟你走!
![请输入图片名称](https://www.evget.com/Content/ ... 11.jpg)
MyEclipse数据库教程:使用Hibernate开发Persistence(一)
Java EE开发 • momo77 发表了文章 • 0 个评论 • 454 次浏览 • 2019-11-11 11:22
**[慧都16周年·技术服务月,软件商城优惠券不限量免费领取,购物立减服务升级,购MyEclipse享折上折优惠!](https://www.evget.com/mall/detail/3016)**
在本教程中,将介绍如何:
- 在Java项目中启用Hibernate支持
- 创建一个Hibernate配置文件
- 使用自定义Session Factory
- 使用HQL编辑器生成Java类和数据库映射文件
**1、创建一个示例数据库表**
在开始本教程之前,必须设置受支持的数据库服务器,例如嵌入式Derby数据库或外部安装的数据库。对于本教程,则使用在MyEclipse中连接到数据库中创建的Oracle数据库连接配置文件。
首先,请使用以下SQL命令创建您将映射到Java类的数据库表。为方便测试,该表包括几个记录。
echo_message DDL
创建表echo_message
(
id整数PRIMARY KEY不为null,
msg VARCHAR(255)
);
插入echo_message值(1,'hello world');
插入echo_message值(2,'goodbye world');
**注意**:即使本教程使用Oracle,上面的说明和示例表也足够通用,可以用于任何数据库。
**2、创建一个启用了Hibernate的Java项目**
- 选择 File>New>Project>Java Project。
- 在“HibernateDemo”字段中键入HibernateDemo,然后单击“完成”。
![请输入图片名称](https://www.evget.com/Content/ ... 12.gif)
- 右键单击HibernateDemo,然后选择MyEclipse> Project Facets> Install Hibernate Facet。
- 从目标运行时下拉列表中选择MyEclipse通用Java Runtime,然后单击下一步。MyEclipse 为您创建一个新的hibernate.cfg.xml文件。
![请输入图片名称](https://www.evget.com/Content/ ... 83.png)
**注:**启用Hibernate注释支持仅适用于Hibernate 3.2和3.3,Hibernate 4.x自动包含注释支持。注释支持在SessionFactory类中创建AnnotationConfiguration而不是常规Configuration。如果您要使用带注释的POJO而不是Hibernate映射文件,这一点很有必要。
- 单击“Java Package”字段旁边的“新建”以为session factory类创建新的软件包。键入com.myeclipse.hibernate作为程序包名称,然后单击“完成”。
![请输入图片名称](https://www.evget.com/Content/ ... 13.png)
- 单击“Next”,然后保留“ Specify数据库连接详细信息”复选框。
- 从DB Driver下拉列表中,选择在MyEclipse中连接数据库时创建的Oracle配置文件。这一操作将自动填充其余字段。
- 您可以通过单击Next添加库,或单击Finish接受默认的库。
**注意:**在这个阶段不需要配置文件。您无需选择概要文件,采用手动填充此页面上显示的其余详细信息。但有一点必须注意,一定要在向导完成后将JDBC驱动程序JAR文件复制到项目中。
![请输入图片名称](https://www.evget.com/Content/ ... 01.gif)
现在,可以跳过上面执行的数据源配置,稍后使用Hibernate Configuration编辑器进行。
**注意:**稍后还可以通过选择File > New >Other,展开MyEclipse > Hibernate并选择Hibernate Session Factory来创建Session Factory。如果您选择将库复制到项目中,那么在完成过程中,向导在复制库和更新各种项目资源时最多可能会出现30秒钟的非活动状态。这时,需耐心等待所有操作完成,然后再采取其他措施。
完成向导将执行以下操作:
- 如果选择将Hibernate库(JAR)复制到项目中,则将其安装到项目中
- 更新项目的构建路径以包括已安装的Hibernate库
- 为项目创建和配置hibernate.cfg.xml文件
- 为项目创建一个自定义SessionFactory类(例如HibernateSessionFactory),以简化Hibernate会话处理。
下图突出显示了新创建的HibernateSessionFactory.java文件的重要功能。此类管理单个Hibernate Session对象,该对象由该getSession()方法延迟初始化,并由该方法刷新和释放closeSession()。在运行时,Hibernate会话创建过程必须能够在类路径上找到hibernate.cfg.xml文件。
CONFIG_FILE_LOCATION变量定义了hibernate.cfg.xml文件相对于软件包的路径,默认值由Hibernate支持向导提供。如果您重新定位 hibernate.cfg.xml文件,则必须手动修改CONFIG_FILE_LOCATION值来引用新位置,或者在使用前使用该setConfigFile()方法进行设置。
![请输入图片名称](https://www.evget.com/Content/ ... 23.gif)
**3、自定义Hibernate配置文件**
完成添加Hibernate功能的向导后,hibernate配置文件将自动打开。如果在添加功能时跳过了数据源配置,那么现在需要使用以下步骤进行操作。如果您已经配置了数据源,请继续添加属性。
- 选择“Use JDBC Driver”选项,指定在数据库资源管理器中定义的JDBC驱动程序。如果尚未配置JDBC驱动程序,请阅读[MyEclipse教程“连接到数据库”](https://www.evget.com/article/2015/2/4/22120.html),并继续之前进行的配置。
- 在“Connection Profile”下拉列表中选择配置文件。如果配置了JDBC驱动程序但未配置连接配置文件,则可以单击“New profile”来创建一个新的连接配置文件。如果已经有一个连接配置文件,从下拉列表中选择它时,接下来的四个字段将自动填写。
- 单击 Copy JDBC Driver并添加到类路径链接。
- 从“Dialect”下拉列表中,为数据库选择适当的Hibernate方言。
Configuration页现在应该像这样:
![请输入图片名称](https://www.evget.com/Content/ ... 20.gif)
您可以使用“Properties”选项来添加和编辑属性。
![请输入图片名称](https://www.evget.com/Content/ ... 71.gif)
![请输入图片名称](https://www.evget.com/Content/ ... 74.gif)
映射部分允许您添加项目中可能已经存在的映射文件,同时还支持从资源管理器中拖放映射文件。
![请输入图片名称](https://resources.cloud.genuit ... ng.gif)
![请输入图片名称](https://resources.cloud.genuit ... ng.gif)
![请输入图片名称](https://resources.cloud.genuit ... ot.gif)
下图显示的是完成上述步骤后的Hibernate配置文件源。
![请输入图片名称](https://www.evget.com/Content/ ... 47.gif)
**4、使用逆向工程进行Java表映射**
由于大多数公司的Web项目都涉及到与关系数据库中现有的公司数据进行交互,所以本节重点介绍正向工程Java数据对象和来自现有数据库的映射描述符。
- 选择Window > Open Perspective > Other,然后选择MyEclipse Hibernate。
- 使用您在Hibernate配置中使用的配置文件打开数据库连接。
- 浏览数据库架构,直到找到要为其创建Hibernate映射的表/实体。
- 右键单击该表,然后选择“Hibernate Reverse Engineering”。或者从数据库浏览器中拖动表,并将它们放到Hibernate Configuration编辑器中以启动向导。
**注意:**您可以在数据库浏览器中选择多个表,以便同时对它们进行反向工程。
![请输入图片名称](https://www.evget.com/Content/ ... 83.gif)
![请输入图片名称](https://www.evget.com/Content/ ... 84.png)
- 单击Java src文件夹字段旁边的浏览,查看可用的Hibernate项目和可在其中生成文件的源文件夹。在HibernateDemo项目中选择src文件夹。
- 单击Java软件包字段旁边的浏览,然后选择com.myeclipse.hibernate软件包。
- 如下所示完成向导的其余部分,然后单击“下一步”。
**注意:**向导的第2页和第3页的设置用于自定义逆向工程过程。无需自定义任何设置,通过单击Finish now就可以启动该过程。
![请输入图片名称](https://www.evget.com/Content/ ... 24.gif)
- 接受默认设置,然后单击“下一步”。
![请输入图片名称](https://www.evget.com/Content/ ... 41.gif)
- 单击两个“Include Referenced Tables”复选框,使向导在反向工程过程中包括引用表。单击完成。
![请输入图片名称](https://resources.cloud.genuit ... es.png)
**注意:**选择表或列可以专门针对表或列定制逆向工程。
![请输入图片名称](https://www.evget.com/Content/ ... 29.gif)
![请输入图片名称](https://www.evget.com/Content/ ... 35.gif)
逆向工程执行以下操作:
- 创建Abstract <tablename>类。这个抽象类提供了必需的Hibernate兼容性功能,例如用于与数据库表中的列相对应的持久属性的公共getter和setter方法。
- 创建<tablename> Java类,它是Abstract <tablename>类的具体子类。所述<表名> 类旨直接使用附加的业务和验证逻辑进行修改,并且在后续的生成过程中不会被覆盖。
- 创建.hbm.xml Hibernate映射描述符。这个文件指导Hibernate如何<tablename> Java类和数据库表之间映射数据。
- 在hibernate.cfg.xml文件中注册<tablename> .hbm.xml映射描述符。
- 创建<tablename> DAO Java类。该类提供对<tablename>数据对象类的便捷性访问。
- 创建IBaseHibernateDAO接口和BaseHibernateDAO类。这些类对于基本DAO的功能是必需的,它们使用添加Hibernate功能时生成的Session工厂(com.myeclipse.hibernate.HibernateSessionFactory)来获取Hibernate会话。
下图突出显示了所生成的类、关键方法和映射文件,以及对hibernate.cfg.xml文件中添加的映射文件的引用。
![请输入图片名称](https://www.evget.com/Content/ ... 84.jpg)
**4.1使用Templates对生成的代码进行微调**
- [将模板文件](https://www.evget.com/resource/detail-demo-14454)下载并解压到、文件系统。
- 按照zip文件中README.txt的说明自定义模板。
- 调用逆向工程向导。在向导的第一页上,选择“Use Custom Templates”选项,然后在“Template Directory”字段中,指定包含您下载的模板的文件夹。
**4.2使用Custom Reverse Engineering Strategy**
- 右键单击项目,选择Properties,并选择Java构建路径。
- 单击Libraries标签,然后单击Add Library。
- 选择MyEclipse Library,单击Next,并选择MyEclipse Persistence Tools。单击Finish。
![请输入图片名称](https://www.evget.com/Content/ ... 23.gif)
![请输入图片名称](https://www.evget.com/Content/ ... 78.gif)
- 在项目中创建一个新类,来扩展org.hibernate.cfg.reveng.DelegatingReverseEngineeringStrategy类。
- 定义单个参数构造函数,例如columnToPropertyName。以下是一个示例MyStrategy.java文件,该文件将ME_前缀添加到所有生成的属性中。
{{{
package com.myeclipse.hibernate;
import org.hibernate.cfg.reveng.DelegatingReverseEngineeringStrategy;
import org.hibernate.cfg.reveng.ReverseEngineeringStrategy;
import org.hibernate.cfg.reveng.TableIdentifier;
public class MyStrategy extends DelegatingReverseEngineeringStrategy {
public MyStrategy(ReverseEngineeringStrategy strategy){
super(strategy);
}
public String
columnToPropertyName(TableIdentifier table, String columnName) { return "ME_" + super.columnToPropertyName(table, columnName);
}
}
}}}
- 在“Reverse Engineering”向导的第二页上,指定刚创建的类。
![请输入图片名称](https://www.evget.com/Content/ ... 83.gif)
想与更多人聊MyEclips?加入***MyEclipse中国(官方2):742336981***畅所欲言吧!
想及时获取MyEclips资讯?扫描下方二维码,MyEclips信息跟你走!
![请输入图片名称](https://www.evget.com/Content/ ... 11.jpg) 查看全部
**[慧都16周年·技术服务月,软件商城优惠券不限量免费领取,购物立减服务升级,购MyEclipse享折上折优惠!](https://www.evget.com/mall/detail/3016)**
在本教程中,将介绍如何:
- 在Java项目中启用Hibernate支持
- 创建一个Hibernate配置文件
- 使用自定义Session Factory
- 使用HQL编辑器生成Java类和数据库映射文件
**1、创建一个示例数据库表**
在开始本教程之前,必须设置受支持的数据库服务器,例如嵌入式Derby数据库或外部安装的数据库。对于本教程,则使用在MyEclipse中连接到数据库中创建的Oracle数据库连接配置文件。
首先,请使用以下SQL命令创建您将映射到Java类的数据库表。为方便测试,该表包括几个记录。
echo_message DDL
创建表echo_message
(
id整数PRIMARY KEY不为null,
msg VARCHAR(255)
);
插入echo_message值(1,'hello world');
插入echo_message值(2,'goodbye world');
**注意**:即使本教程使用Oracle,上面的说明和示例表也足够通用,可以用于任何数据库。
**2、创建一个启用了Hibernate的Java项目**
- 选择 File>New>Project>Java Project。
- 在“HibernateDemo”字段中键入HibernateDemo,然后单击“完成”。
![请输入图片名称](https://www.evget.com/Content/ ... 12.gif)
- 右键单击HibernateDemo,然后选择MyEclipse> Project Facets> Install Hibernate Facet。
- 从目标运行时下拉列表中选择MyEclipse通用Java Runtime,然后单击下一步。MyEclipse 为您创建一个新的hibernate.cfg.xml文件。
![请输入图片名称](https://www.evget.com/Content/ ... 83.png)
**注:**启用Hibernate注释支持仅适用于Hibernate 3.2和3.3,Hibernate 4.x自动包含注释支持。注释支持在SessionFactory类中创建AnnotationConfiguration而不是常规Configuration。如果您要使用带注释的POJO而不是Hibernate映射文件,这一点很有必要。
- 单击“Java Package”字段旁边的“新建”以为session factory类创建新的软件包。键入com.myeclipse.hibernate作为程序包名称,然后单击“完成”。
![请输入图片名称](https://www.evget.com/Content/ ... 13.png)
- 单击“Next”,然后保留“ Specify数据库连接详细信息”复选框。
- 从DB Driver下拉列表中,选择在MyEclipse中连接数据库时创建的Oracle配置文件。这一操作将自动填充其余字段。
- 您可以通过单击Next添加库,或单击Finish接受默认的库。
**注意:**在这个阶段不需要配置文件。您无需选择概要文件,采用手动填充此页面上显示的其余详细信息。但有一点必须注意,一定要在向导完成后将JDBC驱动程序JAR文件复制到项目中。
![请输入图片名称](https://www.evget.com/Content/ ... 01.gif)
现在,可以跳过上面执行的数据源配置,稍后使用Hibernate Configuration编辑器进行。
**注意:**稍后还可以通过选择File > New >Other,展开MyEclipse > Hibernate并选择Hibernate Session Factory来创建Session Factory。如果您选择将库复制到项目中,那么在完成过程中,向导在复制库和更新各种项目资源时最多可能会出现30秒钟的非活动状态。这时,需耐心等待所有操作完成,然后再采取其他措施。
完成向导将执行以下操作:
- 如果选择将Hibernate库(JAR)复制到项目中,则将其安装到项目中
- 更新项目的构建路径以包括已安装的Hibernate库
- 为项目创建和配置hibernate.cfg.xml文件
- 为项目创建一个自定义SessionFactory类(例如HibernateSessionFactory),以简化Hibernate会话处理。
下图突出显示了新创建的HibernateSessionFactory.java文件的重要功能。此类管理单个Hibernate Session对象,该对象由该getSession()方法延迟初始化,并由该方法刷新和释放closeSession()。在运行时,Hibernate会话创建过程必须能够在类路径上找到hibernate.cfg.xml文件。
CONFIG_FILE_LOCATION变量定义了hibernate.cfg.xml文件相对于软件包的路径,默认值由Hibernate支持向导提供。如果您重新定位 hibernate.cfg.xml文件,则必须手动修改CONFIG_FILE_LOCATION值来引用新位置,或者在使用前使用该setConfigFile()方法进行设置。
![请输入图片名称](https://www.evget.com/Content/ ... 23.gif)
**3、自定义Hibernate配置文件**
完成添加Hibernate功能的向导后,hibernate配置文件将自动打开。如果在添加功能时跳过了数据源配置,那么现在需要使用以下步骤进行操作。如果您已经配置了数据源,请继续添加属性。
- 选择“Use JDBC Driver”选项,指定在数据库资源管理器中定义的JDBC驱动程序。如果尚未配置JDBC驱动程序,请阅读[MyEclipse教程“连接到数据库”](https://www.evget.com/article/2015/2/4/22120.html),并继续之前进行的配置。
- 在“Connection Profile”下拉列表中选择配置文件。如果配置了JDBC驱动程序但未配置连接配置文件,则可以单击“New profile”来创建一个新的连接配置文件。如果已经有一个连接配置文件,从下拉列表中选择它时,接下来的四个字段将自动填写。
- 单击 Copy JDBC Driver并添加到类路径链接。
- 从“Dialect”下拉列表中,为数据库选择适当的Hibernate方言。
Configuration页现在应该像这样:
![请输入图片名称](https://www.evget.com/Content/ ... 20.gif)
您可以使用“Properties”选项来添加和编辑属性。
![请输入图片名称](https://www.evget.com/Content/ ... 71.gif)
![请输入图片名称](https://www.evget.com/Content/ ... 74.gif)
映射部分允许您添加项目中可能已经存在的映射文件,同时还支持从资源管理器中拖放映射文件。
![请输入图片名称](https://resources.cloud.genuit ... ng.gif)
![请输入图片名称](https://resources.cloud.genuit ... ng.gif)
![请输入图片名称](https://resources.cloud.genuit ... ot.gif)
下图显示的是完成上述步骤后的Hibernate配置文件源。
![请输入图片名称](https://www.evget.com/Content/ ... 47.gif)
**4、使用逆向工程进行Java表映射**
由于大多数公司的Web项目都涉及到与关系数据库中现有的公司数据进行交互,所以本节重点介绍正向工程Java数据对象和来自现有数据库的映射描述符。
- 选择Window > Open Perspective > Other,然后选择MyEclipse Hibernate。
- 使用您在Hibernate配置中使用的配置文件打开数据库连接。
- 浏览数据库架构,直到找到要为其创建Hibernate映射的表/实体。
- 右键单击该表,然后选择“Hibernate Reverse Engineering”。或者从数据库浏览器中拖动表,并将它们放到Hibernate Configuration编辑器中以启动向导。
**注意:**您可以在数据库浏览器中选择多个表,以便同时对它们进行反向工程。
![请输入图片名称](https://www.evget.com/Content/ ... 83.gif)
![请输入图片名称](https://www.evget.com/Content/ ... 84.png)
- 单击Java src文件夹字段旁边的浏览,查看可用的Hibernate项目和可在其中生成文件的源文件夹。在HibernateDemo项目中选择src文件夹。
- 单击Java软件包字段旁边的浏览,然后选择com.myeclipse.hibernate软件包。
- 如下所示完成向导的其余部分,然后单击“下一步”。
**注意:**向导的第2页和第3页的设置用于自定义逆向工程过程。无需自定义任何设置,通过单击Finish now就可以启动该过程。
![请输入图片名称](https://www.evget.com/Content/ ... 24.gif)
- 接受默认设置,然后单击“下一步”。
![请输入图片名称](https://www.evget.com/Content/ ... 41.gif)
- 单击两个“Include Referenced Tables”复选框,使向导在反向工程过程中包括引用表。单击完成。
![请输入图片名称](https://resources.cloud.genuit ... es.png)
**注意:**选择表或列可以专门针对表或列定制逆向工程。
![请输入图片名称](https://www.evget.com/Content/ ... 29.gif)
![请输入图片名称](https://www.evget.com/Content/ ... 35.gif)
逆向工程执行以下操作:
- 创建Abstract <tablename>类。这个抽象类提供了必需的Hibernate兼容性功能,例如用于与数据库表中的列相对应的持久属性的公共getter和setter方法。
- 创建<tablename> Java类,它是Abstract <tablename>类的具体子类。所述<表名> 类旨直接使用附加的业务和验证逻辑进行修改,并且在后续的生成过程中不会被覆盖。
- 创建.hbm.xml Hibernate映射描述符。这个文件指导Hibernate如何<tablename> Java类和数据库表之间映射数据。
- 在hibernate.cfg.xml文件中注册<tablename> .hbm.xml映射描述符。
- 创建<tablename> DAO Java类。该类提供对<tablename>数据对象类的便捷性访问。
- 创建IBaseHibernateDAO接口和BaseHibernateDAO类。这些类对于基本DAO的功能是必需的,它们使用添加Hibernate功能时生成的Session工厂(com.myeclipse.hibernate.HibernateSessionFactory)来获取Hibernate会话。
下图突出显示了所生成的类、关键方法和映射文件,以及对hibernate.cfg.xml文件中添加的映射文件的引用。
![请输入图片名称](https://www.evget.com/Content/ ... 84.jpg)
**4.1使用Templates对生成的代码进行微调**
- [将模板文件](https://www.evget.com/resource/detail-demo-14454)下载并解压到、文件系统。
- 按照zip文件中README.txt的说明自定义模板。
- 调用逆向工程向导。在向导的第一页上,选择“Use Custom Templates”选项,然后在“Template Directory”字段中,指定包含您下载的模板的文件夹。
**4.2使用Custom Reverse Engineering Strategy**
- 右键单击项目,选择Properties,并选择Java构建路径。
- 单击Libraries标签,然后单击Add Library。
- 选择MyEclipse Library,单击Next,并选择MyEclipse Persistence Tools。单击Finish。
![请输入图片名称](https://www.evget.com/Content/ ... 23.gif)
![请输入图片名称](https://www.evget.com/Content/ ... 78.gif)
- 在项目中创建一个新类,来扩展org.hibernate.cfg.reveng.DelegatingReverseEngineeringStrategy类。
- 定义单个参数构造函数,例如columnToPropertyName。以下是一个示例MyStrategy.java文件,该文件将ME_前缀添加到所有生成的属性中。
{{{
package com.myeclipse.hibernate;
import org.hibernate.cfg.reveng.DelegatingReverseEngineeringStrategy;
import org.hibernate.cfg.reveng.ReverseEngineeringStrategy;
import org.hibernate.cfg.reveng.TableIdentifier;
public class MyStrategy extends DelegatingReverseEngineeringStrategy {
public MyStrategy(ReverseEngineeringStrategy strategy){
super(strategy);
}
public String
columnToPropertyName(TableIdentifier table, String columnName) { return "ME_" + super.columnToPropertyName(table, columnName);
}
}
}}}
- 在“Reverse Engineering”向导的第二页上,指定刚创建的类。
![请输入图片名称](https://www.evget.com/Content/ ... 83.gif)
想与更多人聊MyEclips?加入***MyEclipse中国(官方2):742336981***畅所欲言吧!
想及时获取MyEclips资讯?扫描下方二维码,MyEclips信息跟你走!
![请输入图片名称](https://www.evget.com/Content/ ... 11.jpg)
MyEclipse数据库教程:使用Hibernate和Spring执行数据库操作(二)
Java EE开发 • momo77 发表了文章 • 0 个评论 • 291 次浏览 • 2019-11-11 10:41
**[免费下载MyEclipse>>>](https://www.myeclipsecn.com/download/)**
**[慧都16周年·技术服务月,软件商城优惠券不限量免费领取,购物立减服务升级,购MyEclipse享折上折优惠!](https://www.evget.com/mall/detail/3016)**
**7、创建一个Spring Bean作为PersistenceLayer**
PersistenceLayer如何获得对UserDAO的引用来真正执行那些持久性操作?答案是:您需要为抽象的持久层创建一个新的Spring bean配置条目,让它通过正确引用MyEclipse生成的DAO,来与数据库进行通信。
- 单击 Window > Show View > Other展开Spring,然后选择Spring Explorer打开Spring Explorer。
- 展开HibernateSpringProject> Beans> applicationContext.xml,右键单击bean,然后选择New Bean。
- 输入持久层的Bean的标识字段,然后输入在Bean类字段中的com.myeclipse.hibernatespring.PersistenceLayer。
![请输入图片名称](https://www.evget.com/Content/ ... 95.png)
- 单击属性标签,然后单击添加。
- 在“Name”字段中键入userDAO,从“Spring Type”下拉列表中选择ref,在“Reference”字段中输入UserDAO,然后单击“完成”。
![请输入图片名称](https://www.evget.com/Content/ ... 73.png)
- 在Bean向导窗口上单击Finish,然后按Ctrl+S保存配置文件。完成以上操作后,业务逻辑代码就可以向BeanFactory请求persistenceLayer Bean,并获取该Bean的准备好的实例。
**8、创建一个数据源Spring Bean**
- 使用Spring Explorer创建一个新的bean。
- 在“Bean Id”字段中输入dataSource,并在“Bean class”字段中输入org.springframework.jdbc.datasource.DriverManagerDataSource。
![请输入图片名称](https://www.evget.com/Content/ ... 03.png)
- 单击“Properties”标签,添加以下属性:
1、名称类型值
2、riverClassName value:com.mysql.jdbc.Drive
3、rurl value jdbc:mysql://localhost:3306/test
4、用户名值root
5、密码值<your password>
- 在Bean向导窗口上单击Finish。
- 在Spring资源管理器中,右键单击sessionFactory bean,并选择Add Properties。
- 在“Name”字段中输入dataSource,将Spring类型保留为ref,在“Reference”字段中输入dataSource。
![请输入图片名称](https://www.evget.com/Content/ ... 54.png)
- 单击“Finish”,然后按Ctrl S保存配置文件。
**9、运行应用程序**
- 在资源管理器中,展开 HibernateSpringProject > src > com.myeclipse.hibernatespring。
- 右键单击BusinessLogic.java,选择 Run As>Java Application。Console视图将显示结果。
![请输入图片名称](https://www.evget.com/Content/ ... 39.png)
通过以上步骤可以看到,使用PersistenceLayer时,仅用几行代码就可以从数据库中存储、更新和删除用户。
**10、使用Hibernate注释和Spring**
MyEclipse为独立的Hibernate项目和Spring/Hibernate项目提供了Hibernate注释支持。以下部分将简要概述对Hibernate Annotations和Spring的支持。
注意:Hibernate 4.x自动包含注释支持。
**10.1 创建具有注释支持的Hibernate / Spring项目(Hibernate 3.x)**
在为Hibernate 3.x创建、启用Hibernate和spring的项目时,需要执行以下操作来启用注释支持。当项目添加Hibernate3.x功能时,一定要选择“启用Hibernate注释支持”复选框。
![请输入图片名称](https://www.evget.com/Content/ ... 77.gif)
- 在第3页上添加Spring功能时,请选中“Enable Hibernate annotation support”复选框。这将创建一个AnnotationSessionFactoryBean,而不是LocalSessionFactoryBean。在使用注释时,AnnotationSessionFactoryBean是必需的。
![请输入图片名称](https://www.evget.com/Content/ ... 86.gif)
**10.2 逆向工程**
当您选择Spring bean配置文件时,使用上述过程的项目设置中的Hibernate项目属性页会在SessionFactory Bean ID下拉列表中同时列出LocalSessionFactoryBean bean和AnnotationSessionFactoryBean bean。
注意:为了在逆向工程过程中为Hibernate 3.x提供注释支持,必须在Active Configuration File字段中选择Hibernate配置文件,或者为SessionFactory选择Spring bean配置文件和 AnnotationSessionFactoryBean。
![请输入图片名称](https://www.evget.com/Content/ ... 36.gif)
为Spring DAO提供的会话工厂bean Ids取决于您是否选择生成带注释的POJO或Hibernate映射文件。如果选择生成带注释的POJO,那么SessionFactory Id下拉列表中将仅显示AnnotationSessionFactoryBeans,否则将同时列出LocalSessionFactoryBean bean和AnnotationSessionFactoryBean bean。
![请输入图片名称](https://www.evget.com/Content/ ... 75.gif)
想与更多人聊MyEclips?加入****MyEclipse中国(官方2):742336981****畅所欲言吧!
想及时获取MyEclips资讯?扫描下方二维码,MyEclips信息跟你走!
![请输入图片名称](https://www.evget.com/Content/ ... 11.jpg) 查看全部
**[免费下载MyEclipse>>>](https://www.myeclipsecn.com/download/)**
**[慧都16周年·技术服务月,软件商城优惠券不限量免费领取,购物立减服务升级,购MyEclipse享折上折优惠!](https://www.evget.com/mall/detail/3016)**
**7、创建一个Spring Bean作为PersistenceLayer**
PersistenceLayer如何获得对UserDAO的引用来真正执行那些持久性操作?答案是:您需要为抽象的持久层创建一个新的Spring bean配置条目,让它通过正确引用MyEclipse生成的DAO,来与数据库进行通信。
- 单击 Window > Show View > Other展开Spring,然后选择Spring Explorer打开Spring Explorer。
- 展开HibernateSpringProject> Beans> applicationContext.xml,右键单击bean,然后选择New Bean。
- 输入持久层的Bean的标识字段,然后输入在Bean类字段中的com.myeclipse.hibernatespring.PersistenceLayer。
![请输入图片名称](https://www.evget.com/Content/ ... 95.png)
- 单击属性标签,然后单击添加。
- 在“Name”字段中键入userDAO,从“Spring Type”下拉列表中选择ref,在“Reference”字段中输入UserDAO,然后单击“完成”。
![请输入图片名称](https://www.evget.com/Content/ ... 73.png)
- 在Bean向导窗口上单击Finish,然后按Ctrl+S保存配置文件。完成以上操作后,业务逻辑代码就可以向BeanFactory请求persistenceLayer Bean,并获取该Bean的准备好的实例。
**8、创建一个数据源Spring Bean**
- 使用Spring Explorer创建一个新的bean。
- 在“Bean Id”字段中输入dataSource,并在“Bean class”字段中输入org.springframework.jdbc.datasource.DriverManagerDataSource。
![请输入图片名称](https://www.evget.com/Content/ ... 03.png)
- 单击“Properties”标签,添加以下属性:
1、名称类型值
2、riverClassName value:com.mysql.jdbc.Drive
3、rurl value jdbc:mysql://localhost:3306/test
4、用户名值root
5、密码值<your password>
- 在Bean向导窗口上单击Finish。
- 在Spring资源管理器中,右键单击sessionFactory bean,并选择Add Properties。
- 在“Name”字段中输入dataSource,将Spring类型保留为ref,在“Reference”字段中输入dataSource。
![请输入图片名称](https://www.evget.com/Content/ ... 54.png)
- 单击“Finish”,然后按Ctrl S保存配置文件。
**9、运行应用程序**
- 在资源管理器中,展开 HibernateSpringProject > src > com.myeclipse.hibernatespring。
- 右键单击BusinessLogic.java,选择 Run As>Java Application。Console视图将显示结果。
![请输入图片名称](https://www.evget.com/Content/ ... 39.png)
通过以上步骤可以看到,使用PersistenceLayer时,仅用几行代码就可以从数据库中存储、更新和删除用户。
**10、使用Hibernate注释和Spring**
MyEclipse为独立的Hibernate项目和Spring/Hibernate项目提供了Hibernate注释支持。以下部分将简要概述对Hibernate Annotations和Spring的支持。
注意:Hibernate 4.x自动包含注释支持。
**10.1 创建具有注释支持的Hibernate / Spring项目(Hibernate 3.x)**
在为Hibernate 3.x创建、启用Hibernate和spring的项目时,需要执行以下操作来启用注释支持。当项目添加Hibernate3.x功能时,一定要选择“启用Hibernate注释支持”复选框。
![请输入图片名称](https://www.evget.com/Content/ ... 77.gif)
- 在第3页上添加Spring功能时,请选中“Enable Hibernate annotation support”复选框。这将创建一个AnnotationSessionFactoryBean,而不是LocalSessionFactoryBean。在使用注释时,AnnotationSessionFactoryBean是必需的。
![请输入图片名称](https://www.evget.com/Content/ ... 86.gif)
**10.2 逆向工程**
当您选择Spring bean配置文件时,使用上述过程的项目设置中的Hibernate项目属性页会在SessionFactory Bean ID下拉列表中同时列出LocalSessionFactoryBean bean和AnnotationSessionFactoryBean bean。
注意:为了在逆向工程过程中为Hibernate 3.x提供注释支持,必须在Active Configuration File字段中选择Hibernate配置文件,或者为SessionFactory选择Spring bean配置文件和 AnnotationSessionFactoryBean。
![请输入图片名称](https://www.evget.com/Content/ ... 36.gif)
为Spring DAO提供的会话工厂bean Ids取决于您是否选择生成带注释的POJO或Hibernate映射文件。如果选择生成带注释的POJO,那么SessionFactory Id下拉列表中将仅显示AnnotationSessionFactoryBeans,否则将同时列出LocalSessionFactoryBean bean和AnnotationSessionFactoryBean bean。
![请输入图片名称](https://www.evget.com/Content/ ... 75.gif)
想与更多人聊MyEclips?加入****MyEclipse中国(官方2):742336981****畅所欲言吧!
想及时获取MyEclips资讯?扫描下方二维码,MyEclips信息跟你走!
![请输入图片名称](https://www.evget.com/Content/ ... 11.jpg)
MyEclipse数据库教程:使用Hibernate和Spring执行数据库操作(一)
Java EE开发 • momo77 发表了文章 • 0 个评论 • 142 次浏览 • 2019-11-11 10:27
- 连接到数据库
- 将Hibernate和Spring添加到项目中
- 通过对数据库表进行逆向工程来生成实体
- 创建Spring Beans作为持久层和数据源
- 启用Hibernate 3.x注释支持
**[免费下载MyEclipse](https://www.myeclipsecn.com/download/)**
**[慧都16周年·技术服务月,软件商城优惠券不限量免费领取,购物立减服务升级,购MyEclipse享折上折优惠!](https://www.evget.com/mall/detail/3016)**
**1、设置样本数据库**
本教程中的示例使用了一个带有用户表和数据的MySQL 5实例,用到了以下文件准备样本数据。在开始本教程之前,您必须建立一个数据库。
- 示例数据库内容
- 为用户表创建SQL脚本
**2、连接到数据库**
- 单击打开Database Explorer图标 ,选择MyEclipse数据库浏览器。
- 在数据库浏览器中,单击,然后选择新建。
- 从“Driver Template”下拉菜单中选择“MySQL Connector/J”,在“Driver name field”字段中键入MySQL Connector/J,将<hostname> [<:3306>] / <dbname>替换为localhost:3306 / test,然后输入用户名和密码。
![请输入图片名称](https://www.evget.com/Content/ ... 72.png)
- 单击添加JAR。导航到MySQL Connector/J JAR文件的位置,然后选择文件。“Driver classname field”将自动填充,然后点击Finish。
![请输入图片名称](https://www.evget.com/Content/ ... 85.png)
- 在DB Explorer中选择MySQL Connector/J,然后单击 ![请输入图片名称](https://www.evget.com/Content/ ... 48.png)打开链接。
**3、创建一个启用了Hibernate的项目**
您可以为任何受支持的基础项目(通常是Java或Web)启用Hibernate和Spring。
- 选择File>New>Project,展开Java,选择Java项目,然后单击下一步。
![请输入图片名称](https://www.evget.com/Content/ ... 98.png)
- 在“Project name”字段中输入HibernateSpringProject,然后单击“完成”。系统将提示您切换到Java透视图。选择“Yes”。
![请输入图片名称](https://www.evget.com/Content/ ... 04.png)
- 右键单击该项目,选择 Configure Facets > Install Hibernate Facet。注意,这里需要选择4.1作为Hibernate规范版本。
![请输入图片名称](https://www.evget.com/Content/ ... 45.png)
- 点击下一步。MyEclipse将创建一个新的hibernate.cfg.xml文件。
![请输入图片名称](https://www.evget.com/Content/ ... 09.png)
- 单击Java package字段旁边的New为session factory class创建一个新的软件包,并命名为com.myeclipse.hibernatespring,然后单击“完成”。
![请输入图片名称](https://www.evget.com/Content/ ... 45.png)
- 单击下一步,从数据库驱动程序下拉列表中选择MySQL Connector/J,输入密码,然后单击完成。
![请输入图片名称](https://www.evget.com/Content/ ... 15.png)
现在,该项目包含所有Hibernate和JDBC库,并且hibernate.cfg.xml文件在“Configuration”编辑器中打开。配置文件包含来自连接配置文件的连接信息。当您对数据库表进行反向工程时,实体将出现在配置文件的Mappings部分。
![请输入图片名称](https://www.evget.com/Content/ ... 26.png)
**4、将Spring Facet添加到项目中**
对于小型应用程序来说,Spring并不太适用,但是当您看到使用Spring通过简单地调整bean配置文件中的引用来交换代码库的整个部分有多么容易时,您就会意识到该工具的功能真的很强大。最明显的是,使用Spring来测试将会简单很多。例如,您可以交换一个持久性实现,该实现将其所有调用都发送给嵌入式DBMS,或者记录其所有活动。然后,当应用程序部署到生产环境中时,将持久性实现切换回使用主DBMS的代码,这些代码不使用日志记录就能提高性能。
- 右键单击该项目,然后选择 Configure Facets > Install Spring Facet。
- 接受默认的Spring版本和目标运行时,然后单击Next。
- MyEclipse将创建一个新的applicationContext.xml文件。点击完成。
![请输入图片名称](https://www.evget.com/Content/ ... 56.png)
现在,这个项目就同时具有Hibernate和Spring功能。
![请输入图片名称](https://www.evget.com/Content/ ... 61.png)
**5、逆向工程数据库表**
对数据库表进行反向工程时,会在项目中生成Hibernate(Java)对象。由于该项目是Hibernate-Spring项目,所以MyEclipse在逆向工程期间提供的不仅仅是普通DAO,而是Spring DAO选项。这就意味着系统将自动创建DAO Spring bean,这些bean的sessionFactory属性已经正确配置为对Hibernate SessionFactory的现有Spring引用。接下来,我们将通过几个步骤使用简单的逆向工程形式,让向导获取所有默认值。但是,为了实现最大程度的控制,您可以使用“Nxt”按钮,通过向导一步一步地浏览详细信息,比如主键生成策略、对象名称、类型等。
- 切换回数据库浏览器透视图。
- 在数据库浏览器中,将MySQL Connector/J扩展到用户表。
![请输入图片名称](https://www.evget.com/Content/ ... 82.png)
- 右键单击用户表,然后选择“Hibernate Reverse Engineering”。
- 单击Java src文件夹旁边的浏览,展开 HibernateSpringProject > src,选择com.myeclipse.hibernatespring,然后单击确定。
![请输入图片名称](https://www.evget.com/Content/ ... 33.png)
- 选择 Create POJO <> DB 表映射信息复选框,选择Java数据对象复选框,再选择Java数据访问对象(DAO)复选框,然后单击完成。您将收到系统关于切换到Hibernate透视图的提示,只需要单击“Yes”即可。
![请输入图片名称](https://www.evget.com/Content/ ... 65.png)
- 将Hibernate类生成到Java包中,并创建Spring Bean。
![请输入图片名称](https://www.evget.com/Content/ ... 45.png)
![请输入图片名称](https://www.evget.com/Content/ ... 49.png)
**6、编写 Hibernate-Spring 代码**
设置好项目后,就可以开始编写代码了。本过程需要两段代码:
- 业务逻辑:表示应用程序代码的主要方法。
- 持久层:这是业务逻辑应用于数据库功能的应用程序的抽象部分。如果使用的所有业务逻辑都是持久性层,那么您可以在这一层后面隐藏它工作的一些细节。本例使用Spring将执行数据库操作所需的必要DAO引用填充到持久层,这样做的好处是业务逻辑不需要了解任何相关信息。
将每个名为BusinessLogic.java和PersistenceLayer.java的类添加到com.myeclipse.hibernatespring包。从持久性层开始,因为它位于刚刚生成的所有代码和在业务逻辑层中编写的代码之间。它是持久化技术(Hibernate)和由Spring管理的业务逻辑(main方法)之间的抽象。将以下代码添加到PersistenceLayer类,这个类的目的是获得一个由Spring注入的UserDAO实例,然后使用该引用来实现save/find/update和delete操作(不需要调用代码的)。这使您不用完全更改应用程序的代码就能轻松、快速地修改应用程序中的持久性代码。更具体地说,如果您想更改PersistenceLayer的实现方式,比如说要更好地管理异常、事务或其他任何事情,可以通过编辑此类来完成。只要所有方法标签保持不变,就不需要重构整个应用程序。
{{{
package com.myeclipse.hibernatespring;
public class PersistenceLayer {
private UserDAO userDAO;
public UserDAO getUserDAO() {
return userDAO;
}
public void setUserDAO(UserDAO userDAO) {
this.userDAO = userDAO;
}
public void addUser(User user) {
userDAO.save(user);
}
public User findUserById(Integer id) {
return
userDAO.findById(id);
}
public void updateUser(User user) {
userDAO.merge(user);
}
public void deleteUser(User user) {
userDAO.delete(user);
}
}
}}}
另外,由于此抽象层与应用程序代码中的持久性代码是松散地耦合的,可以轻松的使用Spring注入一个测试UserDAO实现。例如,该实现模拟数据库操作,但实际上并不执行这些操作。现在您已经实现了PersistenceLayer,接下来将以下业务逻辑(或主要方法实现)代码添加到BusinessLogic类。业务逻辑(主要方法)利用抽象的持久层来添加/查找/更新以及从数据库中删除用户。
{{{
package com.myeclipse.hibernatespring;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class BusinessLogic {
public static void main(String[] args) {
/* 1. Create a new user */
Integer id = new Integer(1);
User user = new User();
user.setId(id);
user.setUsername("jdoe");
user.setPassword("1234");
user.setFirstName("John");
user.setLastName("Doe");
user.setDateCreated(Long.valueOf(System.currentTimeMillis()));
/* 2. Load the Spring bean configuration and create a bean factory */
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
/* 3. Create instance of PersistenceLayer */
PersistenceLayer persistenceLayer = (PersistenceLayer) ctx.getBean("persistenceLayer");
/* 4. Save the new user to the database */
persistenceLayer.addUser(user);
/* 5. Confirm that our user was saved */
User userLoadedFromDB = persistenceLayer.findUserById(id);
System.out.println("User Loaded from DB [username="
+ userLoadedFromDB.getUsername() + ", password="
+ userLoadedFromDB.getPassword() + ", firstName="
+ userLoadedFromDB.getFirstName() + ", lastName="
+ userLoadedFromDB.getLastName() + "]");
/* 6. Update the user */
userLoadedFromDB.setFirstName("Johnathan");
persistenceLayer.updateUser(userLoadedFromDB);
/* 7. Confirm that the update worked */
User userLoadedFromDBAgain = persistenceLayer
.findUserById(id);
System.out.println("User Loaded from DB Again [firstName="
+ userLoadedFromDBAgain.getFirstName() + "]");
/* 8. Delete the user */
persistenceLayer.deleteUser(user);
}
}
}}}
这个代码具有以下功能:
+ 创建一个新用户来插入数据库。它使用MyEclipse在从数据库逆向工程用户表时生成的用户POJO。
+ 创建一个bean工厂。它的作用是读入Spring bean配置文件,然后向“工厂”提供一个实例,该“工厂”可用于根据该文件中的规范获取bean的实例。这是Spring的“入口点”。
+ 创建PersistenceLayer实例,这样就可以执行数据库操作了!注意,为了正确填充UserDAO引用,您必须使用bean工厂来获取实例。
+ 使用创建的PersistenceLayer实例将新用户保存到数据库。注意,由于所有调用都通过PersistenceLayer进行,因此BusinessLogic类不了解UserDAO类或任何底层详细信息。
+ 在保存时,分配给用户的ID将从数据库中重新加载用户,通过这样的方式来检查并确保所有值都是正确的。
+ 更新用户名查看更新记录是否有效。
+ 重新从数据库加载用户,以确保修改的地方已完全更新。
+ 从数据库中删除用户。
想与更多人聊MyEclips?加入****MyEclipse中国(官方2):742336981****畅所欲言吧!
想及时获取MyEclips资讯?扫描下方二维码,MyEclips信息跟你走!
![请输入图片名称](https://www.evget.com/Content/ ... 11.jpg) 查看全部
- 连接到数据库
- 将Hibernate和Spring添加到项目中
- 通过对数据库表进行逆向工程来生成实体
- 创建Spring Beans作为持久层和数据源
- 启用Hibernate 3.x注释支持
**[免费下载MyEclipse](https://www.myeclipsecn.com/download/)**
**[慧都16周年·技术服务月,软件商城优惠券不限量免费领取,购物立减服务升级,购MyEclipse享折上折优惠!](https://www.evget.com/mall/detail/3016)**
**1、设置样本数据库**
本教程中的示例使用了一个带有用户表和数据的MySQL 5实例,用到了以下文件准备样本数据。在开始本教程之前,您必须建立一个数据库。
- 示例数据库内容
- 为用户表创建SQL脚本
**2、连接到数据库**
- 单击打开Database Explorer图标 ,选择MyEclipse数据库浏览器。
- 在数据库浏览器中,单击,然后选择新建。
- 从“Driver Template”下拉菜单中选择“MySQL Connector/J”,在“Driver name field”字段中键入MySQL Connector/J,将<hostname> [<:3306>] / <dbname>替换为localhost:3306 / test,然后输入用户名和密码。
![请输入图片名称](https://www.evget.com/Content/ ... 72.png)
- 单击添加JAR。导航到MySQL Connector/J JAR文件的位置,然后选择文件。“Driver classname field”将自动填充,然后点击Finish。
![请输入图片名称](https://www.evget.com/Content/ ... 85.png)
- 在DB Explorer中选择MySQL Connector/J,然后单击 ![请输入图片名称](https://www.evget.com/Content/ ... 48.png)打开链接。
**3、创建一个启用了Hibernate的项目**
您可以为任何受支持的基础项目(通常是Java或Web)启用Hibernate和Spring。
- 选择File>New>Project,展开Java,选择Java项目,然后单击下一步。
![请输入图片名称](https://www.evget.com/Content/ ... 98.png)
- 在“Project name”字段中输入HibernateSpringProject,然后单击“完成”。系统将提示您切换到Java透视图。选择“Yes”。
![请输入图片名称](https://www.evget.com/Content/ ... 04.png)
- 右键单击该项目,选择 Configure Facets > Install Hibernate Facet。注意,这里需要选择4.1作为Hibernate规范版本。
![请输入图片名称](https://www.evget.com/Content/ ... 45.png)
- 点击下一步。MyEclipse将创建一个新的hibernate.cfg.xml文件。
![请输入图片名称](https://www.evget.com/Content/ ... 09.png)
- 单击Java package字段旁边的New为session factory class创建一个新的软件包,并命名为com.myeclipse.hibernatespring,然后单击“完成”。
![请输入图片名称](https://www.evget.com/Content/ ... 45.png)
- 单击下一步,从数据库驱动程序下拉列表中选择MySQL Connector/J,输入密码,然后单击完成。
![请输入图片名称](https://www.evget.com/Content/ ... 15.png)
现在,该项目包含所有Hibernate和JDBC库,并且hibernate.cfg.xml文件在“Configuration”编辑器中打开。配置文件包含来自连接配置文件的连接信息。当您对数据库表进行反向工程时,实体将出现在配置文件的Mappings部分。
![请输入图片名称](https://www.evget.com/Content/ ... 26.png)
**4、将Spring Facet添加到项目中**
对于小型应用程序来说,Spring并不太适用,但是当您看到使用Spring通过简单地调整bean配置文件中的引用来交换代码库的整个部分有多么容易时,您就会意识到该工具的功能真的很强大。最明显的是,使用Spring来测试将会简单很多。例如,您可以交换一个持久性实现,该实现将其所有调用都发送给嵌入式DBMS,或者记录其所有活动。然后,当应用程序部署到生产环境中时,将持久性实现切换回使用主DBMS的代码,这些代码不使用日志记录就能提高性能。
- 右键单击该项目,然后选择 Configure Facets > Install Spring Facet。
- 接受默认的Spring版本和目标运行时,然后单击Next。
- MyEclipse将创建一个新的applicationContext.xml文件。点击完成。
![请输入图片名称](https://www.evget.com/Content/ ... 56.png)
现在,这个项目就同时具有Hibernate和Spring功能。
![请输入图片名称](https://www.evget.com/Content/ ... 61.png)
**5、逆向工程数据库表**
对数据库表进行反向工程时,会在项目中生成Hibernate(Java)对象。由于该项目是Hibernate-Spring项目,所以MyEclipse在逆向工程期间提供的不仅仅是普通DAO,而是Spring DAO选项。这就意味着系统将自动创建DAO Spring bean,这些bean的sessionFactory属性已经正确配置为对Hibernate SessionFactory的现有Spring引用。接下来,我们将通过几个步骤使用简单的逆向工程形式,让向导获取所有默认值。但是,为了实现最大程度的控制,您可以使用“Nxt”按钮,通过向导一步一步地浏览详细信息,比如主键生成策略、对象名称、类型等。
- 切换回数据库浏览器透视图。
- 在数据库浏览器中,将MySQL Connector/J扩展到用户表。
![请输入图片名称](https://www.evget.com/Content/ ... 82.png)
- 右键单击用户表,然后选择“Hibernate Reverse Engineering”。
- 单击Java src文件夹旁边的浏览,展开 HibernateSpringProject > src,选择com.myeclipse.hibernatespring,然后单击确定。
![请输入图片名称](https://www.evget.com/Content/ ... 33.png)
- 选择 Create POJO <> DB 表映射信息复选框,选择Java数据对象复选框,再选择Java数据访问对象(DAO)复选框,然后单击完成。您将收到系统关于切换到Hibernate透视图的提示,只需要单击“Yes”即可。
![请输入图片名称](https://www.evget.com/Content/ ... 65.png)
- 将Hibernate类生成到Java包中,并创建Spring Bean。
![请输入图片名称](https://www.evget.com/Content/ ... 45.png)
![请输入图片名称](https://www.evget.com/Content/ ... 49.png)
**6、编写 Hibernate-Spring 代码**
设置好项目后,就可以开始编写代码了。本过程需要两段代码:
- 业务逻辑:表示应用程序代码的主要方法。
- 持久层:这是业务逻辑应用于数据库功能的应用程序的抽象部分。如果使用的所有业务逻辑都是持久性层,那么您可以在这一层后面隐藏它工作的一些细节。本例使用Spring将执行数据库操作所需的必要DAO引用填充到持久层,这样做的好处是业务逻辑不需要了解任何相关信息。
将每个名为BusinessLogic.java和PersistenceLayer.java的类添加到com.myeclipse.hibernatespring包。从持久性层开始,因为它位于刚刚生成的所有代码和在业务逻辑层中编写的代码之间。它是持久化技术(Hibernate)和由Spring管理的业务逻辑(main方法)之间的抽象。将以下代码添加到PersistenceLayer类,这个类的目的是获得一个由Spring注入的UserDAO实例,然后使用该引用来实现save/find/update和delete操作(不需要调用代码的)。这使您不用完全更改应用程序的代码就能轻松、快速地修改应用程序中的持久性代码。更具体地说,如果您想更改PersistenceLayer的实现方式,比如说要更好地管理异常、事务或其他任何事情,可以通过编辑此类来完成。只要所有方法标签保持不变,就不需要重构整个应用程序。
{{{
package com.myeclipse.hibernatespring;
public class PersistenceLayer {
private UserDAO userDAO;
public UserDAO getUserDAO() {
return userDAO;
}
public void setUserDAO(UserDAO userDAO) {
this.userDAO = userDAO;
}
public void addUser(User user) {
userDAO.save(user);
}
public User findUserById(Integer id) {
return
userDAO.findById(id);
}
public void updateUser(User user) {
userDAO.merge(user);
}
public void deleteUser(User user) {
userDAO.delete(user);
}
}
}}}
另外,由于此抽象层与应用程序代码中的持久性代码是松散地耦合的,可以轻松的使用Spring注入一个测试UserDAO实现。例如,该实现模拟数据库操作,但实际上并不执行这些操作。现在您已经实现了PersistenceLayer,接下来将以下业务逻辑(或主要方法实现)代码添加到BusinessLogic类。业务逻辑(主要方法)利用抽象的持久层来添加/查找/更新以及从数据库中删除用户。
{{{
package com.myeclipse.hibernatespring;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class BusinessLogic {
public static void main(String[] args) {
/* 1. Create a new user */
Integer id = new Integer(1);
User user = new User();
user.setId(id);
user.setUsername("jdoe");
user.setPassword("1234");
user.setFirstName("John");
user.setLastName("Doe");
user.setDateCreated(Long.valueOf(System.currentTimeMillis()));
/* 2. Load the Spring bean configuration and create a bean factory */
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
/* 3. Create instance of PersistenceLayer */
PersistenceLayer persistenceLayer = (PersistenceLayer) ctx.getBean("persistenceLayer");
/* 4. Save the new user to the database */
persistenceLayer.addUser(user);
/* 5. Confirm that our user was saved */
User userLoadedFromDB = persistenceLayer.findUserById(id);
System.out.println("User Loaded from DB [username="
+ userLoadedFromDB.getUsername() + ", password="
+ userLoadedFromDB.getPassword() + ", firstName="
+ userLoadedFromDB.getFirstName() + ", lastName="
+ userLoadedFromDB.getLastName() + "]");
/* 6. Update the user */
userLoadedFromDB.setFirstName("Johnathan");
persistenceLayer.updateUser(userLoadedFromDB);
/* 7. Confirm that the update worked */
User userLoadedFromDBAgain = persistenceLayer
.findUserById(id);
System.out.println("User Loaded from DB Again [firstName="
+ userLoadedFromDBAgain.getFirstName() + "]");
/* 8. Delete the user */
persistenceLayer.deleteUser(user);
}
}
}}}
这个代码具有以下功能:
+ 创建一个新用户来插入数据库。它使用MyEclipse在从数据库逆向工程用户表时生成的用户POJO。
+ 创建一个bean工厂。它的作用是读入Spring bean配置文件,然后向“工厂”提供一个实例,该“工厂”可用于根据该文件中的规范获取bean的实例。这是Spring的“入口点”。
+ 创建PersistenceLayer实例,这样就可以执行数据库操作了!注意,为了正确填充UserDAO引用,您必须使用bean工厂来获取实例。
+ 使用创建的PersistenceLayer实例将新用户保存到数据库。注意,由于所有调用都通过PersistenceLayer进行,因此BusinessLogic类不了解UserDAO类或任何底层详细信息。
+ 在保存时,分配给用户的ID将从数据库中重新加载用户,通过这样的方式来检查并确保所有值都是正确的。
+ 更新用户名查看更新记录是否有效。
+ 重新从数据库加载用户,以确保修改的地方已完全更新。
+ 从数据库中删除用户。
想与更多人聊MyEclips?加入****MyEclipse中国(官方2):742336981****畅所欲言吧!
想及时获取MyEclips资讯?扫描下方二维码,MyEclips信息跟你走!
![请输入图片名称](https://www.evget.com/Content/ ... 11.jpg)
【教程连载-服务器篇】MyEclipse应用程序服务连接器
下载|安装|配置|更新 • besy 发表了文章 • 0 个评论 • 98 次浏览 • 2015-03-16 11:18
MyEclipse企业版平台为开发者提供seamlessly部署、执行并在几十个不同应用程序服务器中测试MyEclipse JEE应用程序的能力。其中这些应用程序服务器包括:
Geronimo
Glassfish
JBoss/Wildfly
Jetty
JOnAS
JRun
Liberty Profile
Oracle
Orion
Resin
SpringSource
Sun
Tomcat
TomEE
WebLogic
WebSphere
虽然MyEclipse中提供了许多现成的服务连接器,但是您还必须下载并安装第三方服务连接器来完成您的项目工作,就如同它包含在MyEclipse IDE中一样。
为了快速部署和测试,MyEclipse中包括了一个特殊安装的Tomcat 7和MyEclipse Derby数据库来作为集成沙盒的一部分。
**点击查看完整原文:**[MyEclipse应用程序服务连接器详细介绍](http://www.myeclipsecn.com/lea ... erver/)
还在用MyEclipse 10?out了![立即下载MyEclipse 2015](http://www.myeclipsecn.com/download/) 查看全部
MyEclipse企业版平台为开发者提供seamlessly部署、执行并在几十个不同应用程序服务器中测试MyEclipse JEE应用程序的能力。其中这些应用程序服务器包括:
Geronimo
Glassfish
JBoss/Wildfly
Jetty
JOnAS
JRun
Liberty Profile
Oracle
Orion
Resin
SpringSource
Sun
Tomcat
TomEE
WebLogic
WebSphere
虽然MyEclipse中提供了许多现成的服务连接器,但是您还必须下载并安装第三方服务连接器来完成您的项目工作,就如同它包含在MyEclipse IDE中一样。
为了快速部署和测试,MyEclipse中包括了一个特殊安装的Tomcat 7和MyEclipse Derby数据库来作为集成沙盒的一部分。
**点击查看完整原文:**[MyEclipse应用程序服务连接器详细介绍](http://www.myeclipsecn.com/lea ... erver/)
还在用MyEclipse 10?out了![立即下载MyEclipse 2015](http://www.myeclipsecn.com/download/)
【教程连载-数据库篇】表、外键和索引的使用方法
Java EE开发 • besy 发表了文章 • 0 个评论 • 68 次浏览 • 2015-03-10 13:35
- 创建和删除表
- 创建和删除外键
- 创建和删除索引
没有MyEclipse?[立即下载](http://www.myeclipsecn.com/download/)
点击查看完整原文:[MyEclipse表、外键和索引使用方法](http://www.myeclipsecn.com/lea ... dices/) 查看全部
- 创建和删除表
- 创建和删除外键
- 创建和删除索引
没有MyEclipse?[立即下载](http://www.myeclipsecn.com/download/)
点击查看完整原文:[MyEclipse表、外键和索引使用方法](http://www.myeclipsecn.com/lea ... dices/)
【教程连载-数据库篇】查看和编辑数据表
Java EE开发 • besy 发表了文章 • 0 个评论 • 64 次浏览 • 2015-03-06 11:42
- 浏览连接数据库
- 编辑表数据
没有MyEclipse?[立即下载](http://www.myeclipsecn.com/download/)
**1. 浏览表数据**
**2. 编辑表数据**
**点击查看完整原文:**[查看和编辑数据表](http://www.myeclipsecn.com/lea ... -data/) 查看全部
- 浏览连接数据库
- 编辑表数据
没有MyEclipse?[立即下载](http://www.myeclipsecn.com/download/)
**1. 浏览表数据**
**2. 编辑表数据**
**点击查看完整原文:**[查看和编辑数据表](http://www.myeclipsecn.com/lea ... -data/)
【教程连载-数据库篇】设置MyEclipse数据库资源管理器参数
Java EE开发 • besy 发表了文章 • 0 个评论 • 194 次浏览 • 2015-02-26 11:26
![请输入图片名称](http://www.myeclipsecn.com/ima ... ef.gif)
一般参数
**点击查看完整原文:**[设置MyEclipse数据库资源管理器参数](http://www.myeclipsecn.com/lea ... ences/)
## 没有MyEclipse?[立即下载](http://www.myeclipsecn.com/download/) ##
MyEclipse官方中文网免费推出中文教程连载,敬请关注!有什么意见或建议欢迎在下方留言 ↓↓ 查看全部
![请输入图片名称](http://www.myeclipsecn.com/ima ... ef.gif)
一般参数
**点击查看完整原文:**[设置MyEclipse数据库资源管理器参数](http://www.myeclipsecn.com/lea ... ences/)
## 没有MyEclipse?[立即下载](http://www.myeclipsecn.com/download/) ##
MyEclipse官方中文网免费推出中文教程连载,敬请关注!有什么意见或建议欢迎在下方留言 ↓↓
【教程连载-数据库篇】优化MyEclipse数据库过滤模式
Java EE开发 • besy 发表了文章 • 0 个评论 • 65 次浏览 • 2015-02-25 10:54
当在数据库浏览器中打开一个数据库连接时,默认的操作是获取每个数据库模式的相关信息。数据库资源管理器允许您通过数据库连接选择过滤器来管理这些模式,应用模式过滤器的主要原因是优化。在这个教程中,您将学习到:
- 过滤数据库模式
没有MyEclipse?[立即下载](http://www.myeclipsecn.com/download/)
过滤数据库模式具有以下优点:
打开一个数据库连接时提高连接性能
限制数据库浏览器呈现的信息量
为支持SQL代码完成功能新增元数据检索性能
**点击查看完整原文:**[优化MyEclipse数据库过滤模式](http://www.myeclipsecn.com/lea ... mance/) 查看全部
当在数据库浏览器中打开一个数据库连接时,默认的操作是获取每个数据库模式的相关信息。数据库资源管理器允许您通过数据库连接选择过滤器来管理这些模式,应用模式过滤器的主要原因是优化。在这个教程中,您将学习到:
- 过滤数据库模式
没有MyEclipse?[立即下载](http://www.myeclipsecn.com/download/)
过滤数据库模式具有以下优点:
打开一个数据库连接时提高连接性能
限制数据库浏览器呈现的信息量
为支持SQL代码完成功能新增元数据检索性能
**点击查看完整原文:**[优化MyEclipse数据库过滤模式](http://www.myeclipsecn.com/lea ... mance/)
【教程连载-数据库篇】在WebSphere中创建数据源
Java EE开发 • besy 发表了文章 • 0 个评论 • 49 次浏览 • 2015-02-09 14:36
- 使用WebSphere管理控制台创建一个数据源
- 测试数据源
持续时间:30分钟
没有MyEclipse?[立即下载](http://www.myeclipsecn.com/download/)
查看完整原文:[在WebSphere中创建数据源](http://www.myeclipsecn.com/lea ... phere/)
MyEclipse官方中文网免费推出中文教程连载,敬请关注!有什么意见或建议欢迎在下方留言 ↓↓ 查看全部
- 使用WebSphere管理控制台创建一个数据源
- 测试数据源
持续时间:30分钟
没有MyEclipse?[立即下载](http://www.myeclipsecn.com/download/)
查看完整原文:[在WebSphere中创建数据源](http://www.myeclipsecn.com/lea ... phere/)
MyEclipse官方中文网免费推出中文教程连载,敬请关注!有什么意见或建议欢迎在下方留言 ↓↓
【教程连载-数据库篇】MyEclipse Derby数据库服务器使用方法
Java EE开发 • besy 发表了文章 • 0 个评论 • 63 次浏览 • 2015-02-06 10:20
- 启动和停止MyEclipse Derby服务器
- 连接MyEclipse Derby服务器
- 定制服务器
持续时间:10分钟
没有MyEclipse?[立即下载](http://www.myeclipsecn.com/download/)
点击查看完整原文:[MyEclipse Derby数据库服务器使用方法](http://www.myeclipsecn.com/lea ... erver/)
MyEclipse官方中文网近期将持续推出中文教程连载,敬请关注!有什么意见或建议欢迎在下方留言 ↓↓ 查看全部
- 启动和停止MyEclipse Derby服务器
- 连接MyEclipse Derby服务器
- 定制服务器
持续时间:10分钟
没有MyEclipse?[立即下载](http://www.myeclipsecn.com/download/)
点击查看完整原文:[MyEclipse Derby数据库服务器使用方法](http://www.myeclipsecn.com/lea ... erver/)
MyEclipse官方中文网近期将持续推出中文教程连载,敬请关注!有什么意见或建议欢迎在下方留言 ↓↓
【教程连载-数据库篇】在MyEclipse中连接到数据库
Java EE开发 • besy 发表了文章 • 0 个评论 • 89 次浏览 • 2015-02-05 13:40
- 配置JDBC数据库驱动程序
- 创建数据库配置文件和连接
持续时间:15分钟
没有MyEclipse?[立即下载](http://www.myeclipsecn.com/download/)
点击这里查看完整原文:[在MyEclipse中连接到数据库](http://www.myeclipsecn.com/lea ... lipse/)
MyEclipse官方中文网近期将持续推出中文教程连载,敬请关注!有什么意见或建议欢迎在下方留言 ↓↓ 查看全部
- 配置JDBC数据库驱动程序
- 创建数据库配置文件和连接
持续时间:15分钟
没有MyEclipse?[立即下载](http://www.myeclipsecn.com/download/)
点击这里查看完整原文:[在MyEclipse中连接到数据库](http://www.myeclipsecn.com/lea ... lipse/)
MyEclipse官方中文网近期将持续推出中文教程连载,敬请关注!有什么意见或建议欢迎在下方留言 ↓↓
【教程连载-数据库篇】带你初步了解MyEclipse数据库工具
Java EE开发 • besy 发表了文章 • 0 个评论 • 115 次浏览 • 2015-02-04 14:40
**1. 企业应用程序的数据库工具**
在开发Java企业应用程序时,经常需要存储和检索应用程序和企业数据库中的数据。MyEclipse中丰富的数据库和持久性功能能帮助您快速开发 以数据库为中心的Java EE/JEE、Spring、Hibernate、POJOs平台下的应用程序或者结合thereof.The MyEclipse数据库的资源管理器可以直接访问您的企业数据存储,并提供以下功能:
JDBC connection templates for all popular relational databases
SQL Editor with code completion and query execution
ERD Viewer
Enhanced DB Editing Capabilities
Oracle
Microsoft SQL Server and Sybase
MySQL
Database browser for exploring database structure, e.g., tables, columns, sequences
View table and JDBC connection details
Manually edit table data
DDL export
Integrated Derby database and JDBC driver for testing
Export table definition to Hibernate project for Java OR mapping
任何应用程序使用数据库都需要某种持久层。 MyEclipse的持久性支持创建或生成使用JPA OR映射、Hibernate OR映射或使用或不使用EJBs的Spring框架。
查看完整原文:[MyEclipse的数据库工具](http://www.myeclipsecn.com/lea ... tools/)
MyEclipse官方中文网近期将持续推出中文教程连载,敬请关注!有什么意见或建议欢迎在下方留言 ↓↓ 查看全部
**1. 企业应用程序的数据库工具**
在开发Java企业应用程序时,经常需要存储和检索应用程序和企业数据库中的数据。MyEclipse中丰富的数据库和持久性功能能帮助您快速开发 以数据库为中心的Java EE/JEE、Spring、Hibernate、POJOs平台下的应用程序或者结合thereof.The MyEclipse数据库的资源管理器可以直接访问您的企业数据存储,并提供以下功能:
JDBC connection templates for all popular relational databases
SQL Editor with code completion and query execution
ERD Viewer
Enhanced DB Editing Capabilities
Oracle
Microsoft SQL Server and Sybase
MySQL
Database browser for exploring database structure, e.g., tables, columns, sequences
View table and JDBC connection details
Manually edit table data
DDL export
Integrated Derby database and JDBC driver for testing
Export table definition to Hibernate project for Java OR mapping
任何应用程序使用数据库都需要某种持久层。 MyEclipse的持久性支持创建或生成使用JPA OR映射、Hibernate OR映射或使用或不使用EJBs的Spring框架。
查看完整原文:[MyEclipse的数据库工具](http://www.myeclipsecn.com/lea ... tools/)
MyEclipse官方中文网近期将持续推出中文教程连载,敬请关注!有什么意见或建议欢迎在下方留言 ↓↓