执行数据库操作使用Hibernate和Spring

使用Spring和Hibernate持久性代码之间添加一个抽象层次和业务逻辑控制潜在的持久性引擎。本教程是为熟悉Spring和依赖注入和Java持久性。在本教程中,您将学习如何:

  • 连接到数据库
  • Hibernate和Spring方面添加到一个项目
  • 逆向工程数据库表生成实体
  • 创建Spring bean的持久层和数据来源
  • 使Hibernate 3。x注释支持

这个功能是可用的MyEclipse

1。建立一个样本数据库

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

2。连接到数据库

  1. 通过单击打开Database Explorer视角,选择MyEclipse数据库浏览器。
  2. 在DB浏览器,点击,并选择New。
  3. 选择MySQL连接器/ J从司机模板拉,类型MySQL连接器/ J驱动程序名称字段,替换<主机名> (< 3306 >)/ < dbname >localhost: 3306 /测试,输入用户名和密码。


    添加一个新的数据库连接器
  4. 单击Add JARs。导航到MySQL连接器/ J JAR文件的位置,并选择它。司机类名称字段填写。单击Finish。


    JAR文件添加到连接器的信息
  5. 选择MySQL连接器/ J在DB浏览器,并点击打开连接。

3所示。创建一个Hibernate-Enabled项目

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

注意:这是同一个项目中创建的Hibernate概论如果你已经有了这个项目。你可以下载在本教程中创建完整的Hibernate /春天项目如果你喜欢。

  1. 选择File > New > Project,扩大Java,选择Java项目,并单击Next。


    创建一个新的Java项目

  2. 类型HibernateSpringProject在项目的的名字字段中,然后单击Finish。提示您切换到Java透视图。选择Yes。


    Java项目细节

  3. 右键单击该项目,并选择>安装Hibernate配置方面方面更新于2017年MyEclipse这个菜单选项。之前的版本,点击这里。选择规范的Hibernate 4.1版本。


    选择Hibernate规范版本

  4. 单击Next。MyEclipse创建一个新的hibernate.cfg.xml文件给你。


    新hibernate配置文件

  5. 单击New旁边Java包字段为会话工厂类创建一个新包。类型com.myeclipse.hibernatespring作为包名称,并单击Finish。


    创建一个新的Java包

  6. 单击Next,选择MySQL连接器/ J从DB司机拉,输入你的密码,并单击Finish。


    选择数据库连接器

现在的项目包含所有Hibernate和JDBC库,和hibernate.cfg.xml文件配置编辑器中打开。连接配置文件的配置文件包含连接信息。逆向工程数据库表时,实体的映射部分将出现在配置文件。


Hibernate项目能力和Hibernate配置文件

4所示。春天方面添加到项目中

对于小应用程序,使用Spring可能看起来无关紧要,但当你看到是多么容易使用Spring换出整个部分的代码库,只需调整引用bean配置文件,你认识这个工具的力量。最明显的情况下,它使得测试更加容易。例如,您可以交换在一个持久化实现让所有的嵌入式数据库管理系统调用或者日志活动。然后,当应用程序被部署到生产环境,坚持实现切换回主要利用DBMS的代码没有日志记录来提高性能。

  1. 右键单击该项目,并选择配置方面>安装弹簧方面更新于2017年MyEclipse这个菜单选项。之前的版本,点击这里
  2. 接受默认的春季版和目标运行时,单击Next。
  3. MyEclipse创建一个新的文件给你。单击Finish。


    新的Spring bean配置文件
这个项目现在Hibernate和Spring的能力。


Hibernate和Spring项目的能力

5。逆向工程一个数据库表中

逆向工程数据库表生成Hibernate对象(Java)到这个项目中。因为这个项目是一个Hibernate-Spring项目,MyEclipse给你选项来生成Spring dao在逆向工程而不是普通的dao。这个自动创建DAO的Spring beansessionFactory属性正确配置现有Spring Hibernate SessionFactory的引用。下面的步骤使用逆向工程的最简单的形式,让向导带所有缺省值。然而,对于最大的控制,您可以使用Next按钮和步骤通过向导选择细节像主键生成策略,对象名称,类型和更多。

  1. 切换回Database Explorer的视角。
  2. 在数据库浏览器,扩大MySQL连接器/ J用户表。


    扩展数据库

  3. 右键单击用户表,并选择Hibernate逆向工程。
  4. 单击Browse Java旁边src文件夹领域,扩大HibernateSpringProject > src,选择com.myeclipse.hibernatespring,然后单击OK。


    选择Java包生成的文件的位置

  5. 选择创建POJO< >数据库表的映射信息复选框,选择复选框的Java数据对象,选择Java数据访问对象(DAO)复选框,并单击Finish。提示您切换到Hibernate的视角。单击Yes。


    逆向工程的细节

Hibernate类生成Java包和Spring bean。


生成的类


Spring bean

6。编写Hibernate-Spring代码

使用您的项目设置,您就可以开始编写代码。有两段代码需要:

  • 业务逻辑:主要方法表示应用程序的代码。
  • 持久层:这是应用程序的业务逻辑的抽象部分依赖于数据库的功能。如果所有的业务逻辑都使用持久层,让你隐藏背后的一些细节,它是如何运作的这一层。这个示例使用Spring持久层填充必要的DAO它需要执行数据库操作的引用,但这里的好处是,业务逻辑不需要知道任何事情。

添加一个类为每个调用BusinessLogic.javaPersistenceLayer.javacom.myeclipse。hibernatespring包。从持久层之间因为坐在你的所有代码生成和代码编写业务逻辑层。持久性技术之间的抽象(Hibernate)和业务逻辑(主要方法),由弹簧。将下面的代码添加到PersistenceLayer类,这门课的目的是让UserDAO实例注入到春天然后实际上使用的引用引擎盖下实现保存/发现/更新和删除操作没有调用代码的知识。这允许您轻松快速地修改持久性代码在应用程序无需更改应用程序代码。更具体地说,如果你想改变PersistenceLayer更好地管理例外说,实施交易,或其他,你可以编辑这个类并完成。会有不需要重构整个应用程序,只要所有的方法签名保持不变。

包com.myeclipse.hibernatespring;公开课PersistenceLayer{私人UserDAO UserDAO;公共UserDAO getUserDAO(){返回UserDAO;}公共空setUserDAO (UserDAO UserDAO) {。userDAO = userDAO;}公共空addUser(用户用户){userDAO.save(用户);公共用户findUserById}(整数id){返回userDAO.findById (id);}公共空updateUser(用户用户){userDAO.merge(用户);}公共空deleteUser(用户用户){userDAO.delete(用户);}}

另一件重要的事情是要注意的是,由于这层的抽象与持久性代码从松散耦合的应用程序代码,很容易使用Spring注入一个测试UserDAO实现,例如,模拟数据库操作但不实际执行。这个设计有各种各样的好处。现在您已经PersistenceLayer实现,添加以下(或业务逻辑主要方法实现)的代码BusinessLogic类。业务逻辑(主要方法)利用抽象持久层添加/发现/更新和删除一个用户从数据库中。

包com.myeclipse.hibernatespring;进口org.springframework.context.ApplicationContext;进口org.springframework.context.support.ClassPathXmlApplicationContext;身份公开课BusinessLogic{公共静态void main (String [] args) {/ * 1。创建一个新的用户* /整数id =新的整数(1);用户用户=新用户();user.setId (id);user.setUsername (“jdoe”);user.setPassword (“1234”);user.setFirstName(“约翰”); 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); } }

这里是一个快速的看看这段代码在做什么:

  1. 创建一个新的用户插入到数据库中。这只是一个POJO;没有什么有趣的。它使用时生成的用户POJO MyEclipse逆向工程从数据库用户表。
  2. 创建一个bean工厂。这是在Spring bean配置文件,然后提供一个实例“工厂”,可以用来获取bean实例的基础上,规范文件。这是春天的“入口点”。
  3. 创建一个实例PersistenceLayer所以你可以执行数据库操作。注意你必须使用bean工厂实例为了UserDAO引用正确填充。
  4. 保存数据库使用的新用户PersistenceLayer创建实例。注意,BusinessLogic类没有UserDAO类的知识或任何潜在的细节因为所有的调用都通过PersistenceLayer
  5. 从数据库中重新加载用户使用ID分配时保存,并检查以确保所有的值是正确的。
  6. 更新用户名是否更新记录工作。
  7. 从数据库重新加载用户再次确认更新后的变化。
  8. 删除数据库的用户。

7所示。创建一个Spring Bean PersistenceLayer

你们中的一些人可能会问自己,“PersistenceLayer如何得到一个参考UserDAO为了实际执行持久化操作?我看不出这段代码。“答案是,你需要创建一个新的Spring bean配置条目的持久层所以它得到正确的引用生成的刀MyEclipse为了与数据库通信。

  1. 打开点击窗口>显示春天Explorer视图>其他,扩大弹簧,并选择春天探险家更新于2017年MyEclipse这个菜单选项。之前的版本,点击这里
  2. 扩大HibernateSpringProject >大豆> applicationContext。xml,右键单击Bean,并选择新的Bean。
  3. 类型persistenceLayer在Bean Id字段,类型com.myeclipse.hibernatespring.PersistenceLayer在Bean类领域。


    Spring bean的细节

  4. 单击Properties选项卡,然后单击Add。
  5. 类型userDAO在Name字段中,选择裁判弹簧式下拉,类型UserDAO在参考字段中,然后单击Finish。


    编辑userDAO价值

  6. 在Bean向导窗口中,单击Finish并按Ctrl + S来保存配置文件。现在,业务逻辑代码可以问BeanFactory persistenceLayer bean,并返回一个bean的实例。

8。创建一个数据源Spring Bean

  1. 创建另一个新的bean使用Spring的探险家。
  2. 类型数据源在Bean Id字段,类型org.springframework.jdbc.datasource.DriverManagerDataSource在Bean类领域。


    Spring bean的细节
  3. 单击属性选项卡,并添加以下属性:
    名称类型值
    driverClassName com.mysql.jdbc.Driver价值
    jdbc url值:mysql: / / localhost: 3306 /测试
    用户名值根
    密码值<密码>
  4. 单击Finish Bean向导窗口。
  5. 在春天explorer中,右键单击sessionFactory bean,并选择添加属性。
  6. 类型数据源在Name字段,离开弹簧类型作为裁判,和类型数据源在字段的引用。


    将属性添加到sessionFactory
  7. 单击Finish,按Ctrl + S来保存配置文件。

9。运行应用程序

  1. 探险家,扩大HibernateSpringProject > src > com.myeclipse.hibernatespring。
  2. 右键单击BusinessLogic.java,并选择Run As > Java应用程序。控制台视图显示结果。


    运行结果
你可以看到你是能够存储,更新和删除用户从数据库中只有几行代码。想象容易编写这个应用程序的其余部分可以因为所有您需要做的是使用PersistenceLayer

10。使用Hibernate注释和春天

MyEclipse Hibernate提供了Hibernate注释支持独立的项目和Spring / Hibernate项目。以下部分提供了一个简要概述支持Hibernate注释和春天。

注意:Hibernate 4。x包括注释自动支持。

10.1创建一个Hibernate / Spring项目注释支持(Hibernate 3. x)

在创建Hibernate和支持spring Hibernate项目3。x,做以下启用注释支持。当添加Hibernate3。项目x功能,选择启用Hibernate注释支持复选框。


添加注释支持Hibernate功能

当添加弹簧功能3页,选择启用Hibernate注释支持复选框。这将创建一个AnnotationSessionFactoryBean代替LocalSessionFactoryBean;前者是需要在处理注释。


增加弹簧功能注释的支持


通过添加弹簧功能AnnotationSessionFactoryBean生成

10.2逆向工程

Hibernate在项目设置项目属性页面使用上述过程列表LocalSessionFactoryBean Bean以及AnnotationSessionFactoryBean Bean的SessionFactory Bean ID拉当你选择一个Spring Bean配置文件。

注意:注释支持Hibernate 3。x在逆向工程,你必须选择一个Hibernate配置文件激活配置文件中的字段或一个Spring bean配置文件一个AnnotationSessionFactoryBean SessionFactory。


Hibernate项目属性页

提供的会话工厂bean id为Spring dao取决于您选择生成带注解的pojo或Hibernate映射文件。如果你选择生成带注解的pojo,那么只有AnnotationSessionFactoryBeans呈现的SessionFactory Id下拉,否则LocalSessionFactoryBean bean和AnnotationSessionFactoryBean bean都列出。


Hibernate注释逆向工程

Baidu
map