Spring

Spring

MyEclipse数据库教程:使用Hibernate和Spring执行数据库操作(二)

Java EE开发momo77 发表了文章 • 0 个评论 • 237 次浏览 • 2019-11-11 10:41 • 来自相关话题

在**[上篇](https://www.myeclipsecn.com/bbs/?/article/198)**中,介绍了设置样本数据库、连接到数据库、创建一个启用了Hibernate的项目、将Spring Facet添加到项目中、逆向工程数据库表以及编写 Hibernate-Spring 代码的详细操作方法。本文承接**[上篇](https://www.myeclipsecn.com/bbs/?/article/198)**,继续为大家介绍使用Hibernate和Spring执行数据库操作的相关内容。
**[免费下载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) 查看全部
在**[上篇](https://www.myeclipsecn.com/bbs/?/article/198)**中,介绍了设置样本数据库、连接到数据库、创建一个启用了Hibernate的项目、将Spring Facet添加到项目中、逆向工程数据库表以及编写 Hibernate-Spring 代码的详细操作方法。本文承接**[上篇](https://www.myeclipsecn.com/bbs/?/article/198)**,继续为大家介绍使用Hibernate和Spring执行数据库操作的相关内容。
**[免费下载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 个评论 • 122 次浏览 • 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 Spring 6.5折最后一天!错过再等一年!

MyEclipse IDE公告xiaobinwater 回复了问题 • 3 人关注 • 2 个回复 • 113 次浏览 • 2017-06-30 10:17 • 来自相关话题

【年中促销】MyEclipse Spring 6.5折抄底促销!仅限6.24-7.24

MyEclipse IDE公告besy 发表了文章 • 0 个评论 • 95 次浏览 • 2015-06-24 14:54 • 来自相关话题

**好消息!高级版 MyEclipse Spring 年中大放价,6月24日-7月24日6.5折促销,仅限一月!**

MyEclipse Spring功能丰富,价格适中,支持Web设计、移动开发、JAX Web Service、可视化编辑器、Java EE开发和Spring开发等等,可谓性价比之王!>>[查看版本对比表](http://www.myeclipsecn.com/buy/#EditionsCompare)

为了回馈广大客户对MyEclipse的厚爱,特于6月24日-7月24日低价让利,原价¥1499 的MyEclipse Spring,现价只要¥970!

##[ 立即抢购 ](http://www.myeclipsecn.com/buy/)##

另外,再告诉大家一个好消息,MyEclipse官方中文网特联合MyEclipse厂商于下个月**7月23日**,举办软件分发管理神器Secure Delivery Center免费技术交流会,MyEclipse原厂商高级产品经理倾力主讲,敬请关注! 查看全部
**好消息!高级版 MyEclipse Spring 年中大放价,6月24日-7月24日6.5折促销,仅限一月!**

MyEclipse Spring功能丰富,价格适中,支持Web设计、移动开发、JAX Web Service、可视化编辑器、Java EE开发和Spring开发等等,可谓性价比之王!>>[查看版本对比表](http://www.myeclipsecn.com/buy/#EditionsCompare)

为了回馈广大客户对MyEclipse的厚爱,特于6月24日-7月24日低价让利,原价¥1499 的MyEclipse Spring,现价只要¥970!

##[ 立即抢购 ](http://www.myeclipsecn.com/buy/)##

另外,再告诉大家一个好消息,MyEclipse官方中文网特联合MyEclipse厂商于下个月**7月23日**,举办软件分发管理神器Secure Delivery Center免费技术交流会,MyEclipse原厂商高级产品经理倾力主讲,敬请关注!

MyEclipse Spring 6.5折最后一天!错过再等一年!

回复

MyEclipse IDE公告xiaobinwater 回复了问题 • 3 人关注 • 2 个回复 • 113 次浏览 • 2017-06-30 10:17 • 来自相关话题

MyEclipse数据库教程:使用Hibernate和Spring执行数据库操作(二)

Java EE开发momo77 发表了文章 • 0 个评论 • 237 次浏览 • 2019-11-11 10:41 • 来自相关话题

在**[上篇](https://www.myeclipsecn.com/bbs/?/article/198)**中,介绍了设置样本数据库、连接到数据库、创建一个启用了Hibernate的项目、将Spring Facet添加到项目中、逆向工程数据库表以及编写 Hibernate-Spring 代码的详细操作方法。本文承接**[上篇](https://www.myeclipsecn.com/bbs/?/article/198)**,继续为大家介绍使用Hibernate和Spring执行数据库操作的相关内容。
**[免费下载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) 查看全部
在**[上篇](https://www.myeclipsecn.com/bbs/?/article/198)**中,介绍了设置样本数据库、连接到数据库、创建一个启用了Hibernate的项目、将Spring Facet添加到项目中、逆向工程数据库表以及编写 Hibernate-Spring 代码的详细操作方法。本文承接**[上篇](https://www.myeclipsecn.com/bbs/?/article/198)**,继续为大家介绍使用Hibernate和Spring执行数据库操作的相关内容。
**[免费下载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 个评论 • 122 次浏览 • 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 Spring 6.5折抄底促销!仅限6.24-7.24

MyEclipse IDE公告besy 发表了文章 • 0 个评论 • 95 次浏览 • 2015-06-24 14:54 • 来自相关话题

**好消息!高级版 MyEclipse Spring 年中大放价,6月24日-7月24日6.5折促销,仅限一月!**

MyEclipse Spring功能丰富,价格适中,支持Web设计、移动开发、JAX Web Service、可视化编辑器、Java EE开发和Spring开发等等,可谓性价比之王!>>[查看版本对比表](http://www.myeclipsecn.com/buy/#EditionsCompare)

为了回馈广大客户对MyEclipse的厚爱,特于6月24日-7月24日低价让利,原价¥1499 的MyEclipse Spring,现价只要¥970!

##[ 立即抢购 ](http://www.myeclipsecn.com/buy/)##

另外,再告诉大家一个好消息,MyEclipse官方中文网特联合MyEclipse厂商于下个月**7月23日**,举办软件分发管理神器Secure Delivery Center免费技术交流会,MyEclipse原厂商高级产品经理倾力主讲,敬请关注! 查看全部
**好消息!高级版 MyEclipse Spring 年中大放价,6月24日-7月24日6.5折促销,仅限一月!**

MyEclipse Spring功能丰富,价格适中,支持Web设计、移动开发、JAX Web Service、可视化编辑器、Java EE开发和Spring开发等等,可谓性价比之王!>>[查看版本对比表](http://www.myeclipsecn.com/buy/#EditionsCompare)

为了回馈广大客户对MyEclipse的厚爱,特于6月24日-7月24日低价让利,原价¥1499 的MyEclipse Spring,现价只要¥970!

##[ 立即抢购 ](http://www.myeclipsecn.com/buy/)##

另外,再告诉大家一个好消息,MyEclipse官方中文网特联合MyEclipse厂商于下个月**7月23日**,举办软件分发管理神器Secure Delivery Center免费技术交流会,MyEclipse原厂商高级产品经理倾力主讲,敬请关注!