彩票走势图

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

翻译|使用教程|编辑:陈津勇|2019-11-01 13:53:50.870|阅读 408 次

概述:将Spring与Hibernate结合使用可在持久性代码和业务逻辑之间添加一个抽象级别,以控制底层的持久性引擎。本教程适用于熟悉Spring以及Java中的依赖注入和持久性的人员。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

相关链接:

在本教程中,您将学习如何:

  • 连接到数据库

  • 将Hibernate和Spring添加到项目中

  • 通过对数据库表进行逆向工程来生成实体

  • 创建Spring Beans作为持久层和数据源

  • 启用Hibernate 3.x注释支持

  购买MyEclipse

1、设置样本数据库

本教程中的示例使用了一个带有用户表和数据的MySQL 5实例,用到了以下文件准备样本数据。在开始本教程之前,您必须建立一个数据库。

2、连接到数据库

  • 单击打开Database Explorer图标 ,选择MyEclipse数据库浏览器。

  • 在数据库浏览器中,单击,然后选择新建。

  • 从“Driver Template”下拉菜单中选择“MySQL Connector/J”,在“Driver name field”字段中键入MySQL Connector/J,将

  • 单击添加JAR。导航到MySQL Connector/J JAR文件的位置,然后选择文件。“Driver classname field”将自动填充,然后点击Finish。

  • 在DB Explorer中选择MySQL Connector/J,然后单击 打开链接。

3、创建一个启用了Hibernate的项目

您可以为任何受支持的基础项目(通常是Java或Web)启用Hibernate和Spring。

  • 选择File>New>Project,展开Java,选择Java项目,然后单击下一步。

  • 在“Project name”字段中输入HibernateSpringProject,然后单击“完成”。系统将提示您切换到Java透视图。选择“Yes”。

  • 右键单击该项目,选择 Configure Facets > Install Hibernate Facet。注意,这里需要选择4.1作为Hibernate规范版本。

  • 点击下一步。MyEclipse将创建一个新的hibernate.cfg.xml文件。

  • 单击Java package字段旁边的New为session factory class创建一个新的软件包,并命名为com.myeclipse.hibernatespring,然后单击“完成”。

  • 单击下一步,从数据库驱动程序下拉列表中选择MySQL Connector/J,输入密码,然后单击完成。

现在,该项目包含所有Hibernate和JDBC库,并且hibernate.cfg.xml文件在“Configuration”编辑器中打开。配置文件包含来自连接配置文件的连接信息。当您对数据库表进行反向工程时,实体将出现在配置文件的Mappings部分。

hibernate_caps_and_config_file2.png

4、将Spring Facet添加到项目中

对于小型应用程序来说,Spring并不太适用,但是当您看到使用Spring通过简单地调整bean配置文件中的引用来交换代码库的整个部分有多么容易时,您就会意识到该工具的功能真的很强大。最明显的是,使用Spring来测试将会简单很多。例如,您可以交换一个持久性实现,该实现将其所有调用都发送给嵌入式DBMS,或者记录其所有活动。然后,当应用程序部署到生产环境中时,将持久性实现切换回使用主DBMS的代码,这些代码不使用日志记录就能提高性能。

  • 右键单击该项目,然后选择 Configure Facets > Install Spring Facet

  • 接受默认的Spring版本和目标运行时,然后单击Next。

  • MyEclipse将创建一个新的applicationContext.xml文件。点击完成。

现在,这个项目就同时具有Hibernate和Spring功能。

5、逆向工程数据库表

对数据库表进行反向工程时,会在项目中生成Hibernate(Java)对象。由于该项目是Hibernate-Spring项目,所以MyEclipse在逆向工程期间提供的不仅仅是普通DAO,而是Spring DAO选项。这就意味着系统将自动创建DAO Spring bean,这些bean的sessionFactory属性已经正确配置为对Hibernate SessionFactory的现有Spring引用。接下来,我们将通过几个步骤使用简单的逆向工程形式,让向导获取所有默认值。但是,为了实现最大程度的控制,您可以使用“Nxt”按钮,通过向导一步一步地浏览详细信息,比如主键生成策略、对象名称、类型等。

  • 切换回数据库浏览器透视图。

  • 在数据库浏览器中,将MySQL Connector/J扩展到用户表。

  • 右键单击用户表,然后选择“Hibernate Reverse Engineering”。

  • 单击Java src文件夹旁边的浏览,展开 HibernateSpringProject > src,选择com.myeclipse.hibernatespring,然后单击确定。

  • 选择 Create POJO <> DB 表映射信息复选框,选择Java数据对象复选框,再选择Java数据访问对象(DAO)复选框,然后单击完成。您将收到系统关于切换到Hibernate透视图的提示,只需要单击“Yes”即可。

  • 将Hibernate类生成到Java包中,并创建Spring Bean。

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将从数据库中重新加载用户,通过这样的方式来检查并确保所有值都是正确的。

  • 更新用户名查看更新记录是否有效。

  • 重新从数据库加载用户,以确保修改的地方已完全更新。

  • 从数据库中删除用户。

更多“使用Hibernate和Spring执行数据库操作”的教程内容,请点击此处查看>>>



想进一步了解MyEclips?知你所需,解你所惑!

想与更多人聊MyEclips?加入MyEclipse中国(官方2):742336981畅所欲言吧!

想及时获取MyEclips资讯?扫描下方二维码,MyEclips信息跟你走!


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@capbkgr.cn

文章转载自:

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP