`

myeclipse hibernate spring整合开发

阅读更多

转:myeclipse hibernate spring整合开发

在网上漫无边际地搜索了一天,绝大部分都是垃圾信息,只好自己做一遍

    好了,下面我就将我所完成的例子程序完整的叙述,希望对读者有所帮助。

一、开发环境

   myeclipse6.01GA,mysql。

二、表结构

   CREATE TABLE `user` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `username` varchar(64) NOT NULL,
  `password` varchar(64) NOT NULL,
  `first_name` varchar(128) NOT NULL,
  `last_name` varchar(128) NOT NULL,
  `date_created` bigint(20) unsigned NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

三、具体步骤:

1、在myeclipse中建立一个“java project”,工程名为:HibernateSpringProject,这个程序用java应用程序就可以实现。

 

2、右键点击工程文件,然后选择MyEclipse->Add Spring Capabilities...

第一步选择需要加载的包,如下图所示:



其余的选项默认,点击 “下一步”,提示是否建立spring配置文件,选择默认,然后直接点击“finish”。

3、右键点击工程文件,然后选择MyEclipse->Add Hibernate Capabilities...

第一步选择默认,点击“下一步”。

第二步提示你是用hibernate的配置文件还是用spring的配置文件进行SessionFactory的配置,选择使用spring来对hibernate进行管理,这样最后生成的工程里就不包含hibernate.cfg.xml了,好处是在一个地方就可以对hibernate进行管理了。

 

第三步提示你是创建一个新的hibernate配置文件还是使用已有的配置文件,由于我们刚才已经生成了spring配置文件,并且要在其中进行hibernate的配置,所以选择复选框“Existing Spring configuration file”,选择该项后,下方的“Spring Config:”后的下拉列表框自动填入了刚才生成的spring配置文件路径。这时候有个错误,要求你填写SessionFactory ID,这个id就是我们要为hibernate注入的一个类的ID,随便取一个名字,例如“sessionFactory”。点击“下一步”。

 

第四步要求选择数据库连接信息,这个步骤可以参照网上的信息进行配置,很简单。这里需要注意一点,“bean id”处填写一个数据源的名称,例如“datasource”,下面的单选按钮选择“Use Jdbc Driver”就行了,此处没有用jndi。在“DB Driver”处选择配置好的数据库连接信息,其他信息自动填入余下的输入框中,点击下一步。

 

第四步提示是否创建“SessionFactory”类,由于本程序用spring替我们注入sessionfactory,此处可以不用创建,勾掉复选框。然后直接点击“finish”。

 

4、建立三个包,分别是com.simon.dao,com.simon.model,com.simon.service。这写包的定义可以参考我的另一篇文章ssh开发时目录的建议结构

 

5、打开myeclipse的database exployer perspective,右键选择user表,选择Hibernate reverse engineering

按照下图所示进行设置


点击下一步,在“ID generator”中选择native,如果愿意可以直接点击finish

这时再观察applicationContext.xml文件,发现在sessionFactory定义中增加了如下代码:

  <property name="mappingResources">
   <list>
    <value>com/simon/model/User.hbm.xml</value>
    </list>
  </property>

此时在观察类结构:


在model包下生成了三个类和一个映射文件。AbstractUser是User的抽象类,在此需要说明一点的是,在标准的spring应用中UserDAO应该是一个接口,而不是一个具体的类,而myeclipse将数据库操作方法直接写到了UserDAO中,另外,按照标准写法,DAO实现类要实现DAO接口,并且要包括SessionFactory的变量声明,但是生成的代码中UserDAO直接实现了HibernateDaoSupport类,需要特别注意。所以,如果你需要标准写法,可以将UserDAO中的方法提取出来,只保留方法声明,然后再间一个impl目录,将该DAO的实现类放在该impl中,按照管理将该类命名为UserDAOImpl,另外一点最好将DAO和它的实现类移到dao包中,结构和model包中的相同

在这个例子中暂且将生成的文件都放到model中。

此时我们可以写一个测试程序将一条记录插入到user表中,当然这个测试程序并没有用事务控制,后面我们还会介绍,测试程序如下:

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.simon.model.UserDAO;
import com.simon.model.User;
public class TestWithoutTx {

 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
        User user=new User();
        user.setFirstName("first name");
        user.setLastName("last name");
        user.setUsername("user name");
        user.setPassword("password");
        user.setDateCreated(new Long(111111));
        ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
        UserDAO userdao=(UserDAO)context.getBean("UserDAO");
        userdao.save(user);       
 }
}

现在的问题是增加事务处理功能,跟我继续,这时候源程序不需要修改,只需要修改applicationContext.xml配置文件,首先增加事务管理器,因为事务管理器也需要使用数据库,所以需要引入sessionFactory

如下:

 <bean id="myTransactionManager"  class="org.springframework.orm.hibernate3.HibernateTransactionManager">
 <property name="sessionFactory">
 <ref bean="sessionFactory" />
 </property>
 </bean> 

继续增加如下配置信息:

<bean id="userDAOProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
  <property name="proxyTargetClass">
   <value>true</value>
  </property>

  <property name="transactionManager">
   <ref bean="myTransactionManager" />
  </property>
  <property name="target">
   <ref local="UserDAO" />
  </property>
  <property name="transactionAttributes">
   <props>
    <!-- 这里的方法签名可以精确到方法, 先懒惰一下全配置上 -->
    <prop key="*">PROPAGATION_REQUIRED</prop>
   </props>
  </property>
 </bean>

 

注意以上红色部分:  注意这个属性,必须为 true, 使用CGLIB时才不用强制编写DAO接口,也就是由于myeclipse并没有为我们生成DAO接口,而是生成了一个数据库实现类,为了使spring不强迫我们必须定义一个DAO接口,只需要将这个proxyTargetClass属性定义为true,这点非常重要,程序出错很有可能和这个属性设置错误有关。

下面再写一个测试程序,和上面的测试程序基本相同,唯一不同是将上面的

UserDAO userdao=(UserDAO)context.getBean("userDAO");

换成

UserDAO userdao=(UserDAO)context.getBean("userDAOProxy");

执行,一切ok,数据正确的插入到数据库中。

分享到:
评论
1 楼 zbmartin 2008-08-14  
  ,真是太感谢你了,对我这初学者真是有莫大的帮助啊!!!

相关推荐

    JSF基于EJB Hibernate Spring整合开发与项目

    ### JSF基于EJB Hibernate Spring整合开发与项目 #### 一、JSF基础知识 ##### 1.1 了解JSF JavaServer Faces (JSF) 是一个用于构建基于Web的应用程序的标准Java EE技术。它提供了丰富的组件库以及一套声明式的...

    使用MyEclipse下整合Spring和Hibernate

    下面我们将详细探讨如何在MyEclipse环境下整合Spring和Hibernate。 1. 创建工程 首先,打开MyEclipse,选择"File" -&gt; "New" -&gt; "Dynamic Web Project",输入项目名称,选择JRE版本和Web容器,确保目标运行环境支持...

    Spring集成Hibernate myeclipse 下

    在MyEclipse这样的集成开发环境中,集成Spring和Hibernate可以构建高效且易于维护的Java Web应用。 在"Spring集成Hibernate Myeclipse下"的场景中,我们首先需要配置MyEclipse环境,确保安装了Spring和Hibernate的...

    Eclipse + MyEclipse整合Struts+Spring+Hibernate简单例子开发

    标题 "Eclipse + MyEclipse整合Struts+Spring+Hibernate简单例子开发" 指向的是一个关于如何在集成开发环境Eclipse与MyEclipse中搭建Struts、Spring和Hibernate(SSH)框架的教程。SSH是Java Web开发中常用的一个...

    springmvc-spring4.3-hibernate5框架整合

    标题 "springmvc-spring4.3-hibernate5框架整合" 暗示了这是一个关于集成Spring MVC、Spring 4.3和Hibernate 5的项目。这个项目可能是一个基础的Web应用开发环境,用于演示或教学如何将这三大流行Java框架协同工作。...

    myeclipse下整合spring和hibernate

    在 MyEclipse 下整合 Spring 和 Hibernate 是一个常见的开发任务,特别是在构建企业级 Java 应用程序时。Spring 是一个强大的轻量级框架,提供依赖注入、AOP(面向切面编程)等功能,而 Hibernate 是一个优秀的 ORM...

    struts+spring+hibernate整合

    Struts、Spring和Hibernate是Java Web开发中的三大主流框架,它们分别负责表现层、业务层和服务层的管理。Struts提供了MVC模式的实现,Spring则是一个全面的轻量级应用框架,包括依赖注入(DI)、面向切面编程(AOP...

    MyEclipse图文整合SSH,Struts2+Spring+Hibernate整合过程详解

    Struts2+Spring+Hibernate(SSH)框架的整合是Java Web开发中常见的一种技术组合,它们各自具有独特的优势,能够高效地处理Web应用程序中的模型、视图和控制,以及对象持久化和依赖注入。以下是对Struts2、Spring、...

    MyEclipse Hibernate 和 Spring 教程(含官方视频)

    【标题】"MyEclipse Hibernate 和 Spring 教程(含官方视频)" 提供了一个全面的学习路径,涵盖了三个关键的Java企业级开发技术:MyEclipse、Hibernate和Spring。MyEclipse是一款强大的集成开发环境(IDE),特别适合...

    struts2,hibernate,spring整合开发用户注册

    struts2,hibernate,spring整合开发用户注册,用了MyEclipse和mysql

    使用myeclipse集成struts,hibernate,spring的一个示例程序

    【使用MyEclipse集成Struts、Hibernate、Spring的示例程序】 在Java企业级应用开发中,曾经EJB因其强大的功能和复杂的配置而备受关注。然而,随着Java开源项目的崛起,开发者有了更多轻量级的选择,例如Struts、...

    Spring2 Struts2 Hibernate3 MyEclipse 整合开发实例

    本实例将详细讲解如何在MyEclipse中整合Spring2、Struts2和Hibernate3,并通过Sql server 2005数据库进行实际操作。 Spring框架是整个应用的核心,它提供了管理对象和处理事务的能力。Spring2引入了AOP(面向切面...

    Struts+Spring+Hibernate整合开发详解

    ### Struts+Spring+Hibernate整合开发详解 #### 一、项目背景与意义 在现代企业级应用开发中,为了提高软件质量和开发效率,通常会采用多种框架进行整合开发。Struts、Spring 和 Hibernate(通常简称 SSH)是三个...

    struts+spring+hibernate经典整合入门myeclipse实例

    Struts、Spring和Hibernate是Java开发中非常经典的三大框架,它们的整合应用,通常被称为SSH框架集成。这个实例是专为初学者设计的,旨在帮助理解如何在MyEclipse环境中进行SSH的集成与应用。 首先,Struts是MVC...

    myeclipse整合spring和hibernate和struts的源代码

    本源代码包"myeclipse整合spring和hibernate和struts的源代码"正是这样一个典型的Java企业级应用集成示例。下面将详细介绍这三个框架的整合方式以及它们各自的核心功能。 1. **Spring框架**:Spring是一个开源的...

    myeclipse+mysql+hibernate+struts2增删改查

    在IT行业中,构建一个完整的Web应用常常涉及到多个技术的整合,本项目就是一个很好的例子,它采用了"Myeclipse+MySQL+Hibernate+Struts2"的技术栈来实现数据的增删改查功能。这是一个典型的企业级应用架构,适用于...

    Myeclipse6.5+flex3+Blazeds+spring+hibernate完美整合源代码

    总结一下,"Myeclipse6.5+flex3+Blazeds+spring+hibernate完美整合源代码"代表了一个完整的、成熟的开发解决方案,它结合了现代Web开发的多个关键组件,提供了从前端用户界面到后端数据存储的全面支持。配合相应的...

    MyEclipse 搭建Struts2+Spring2+Hibernate3整合SSH2

    【SSH2整合详解】 ...通过以上步骤,你可以在MyEclipse中成功地搭建一个Struts2、Spring和Hibernate整合的项目,为后续的业务开发提供坚实的基础。记住,每个框架的配置都需要细心处理,以确保项目的稳定运行。

Global site tag (gtag.js) - Google Analytics