`
ww2
  • 浏览: 419875 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

MyEclipse下Spring、Hibernate结合[转贴]

阅读更多

时下流行的开发模式:Spring+Hibernate+Struts,在这里我介绍一下Spring+Hibernate的结合,加入Struts表示层那是非常简单的事情了。话不多说,让我们现在开始:

数据库准备:
数据库名称:AT_SMS
表名称:admin
字段如下:
sid bigint 从1开始自动增加,步长为1,单独做表的主键
name varchar(50)
password varchar(50)

开发软件准备:
Eclipse 3.1
MyEclipse Enterprise Workbench v4.1.1 GA
JDK1.4.2
Spring1.2[MyEclipse自带的]
Hibernate3.0[MyEclipse自带的]

步骤:
1、设定自己的WorkSpace[D:\Eclipse3.1\MyWorkspace];

2、建立普通Java工程[不是MyEclipse Web工程]MyProject[D:\Eclipse3.1\MyWorkspace\MyProject;

2A、配置数据库连接备用。东东在Window->Open Perspective->My Eclipse Database Explore下。在左边空白框点右键选择New,弹出框后填写Profile name:MyTestDB;驱动点Configure database driver去配置,其它的看着填,不想看到所以数据库就在第二步选择Display the selected schemas,点按钮Add时会自动连接数据库显示所有的数据,选择你想看到的,在这我们选择AT_SMS,点finish完成了。

3、添加Spring相关东西[点击菜单MyEclipse->Add SPring Capabilities...][注意:把光标停在工程根目录才能添加,不然是灰灰的];弹出窗口默认选中Spring1.2 Core包,把Spring1.2 ORM/DAO/Hibernate3选中,把Spring1.2 AOP,Spring1.2 Testing都选中[省得测试时候遇到找不到jar再去导入],next,创建一个src目录存放配置文件,finish。

4、添加Hibernate相关东西,注意根Spring关联起来,数据库连接选择之前创建的MyTestDB即可,Dialect默认是Sysbase,我用Sql Server,所以要改过来;Hibernate的bean ID设成跟Spring的一样,结果配置文件提示ID不唯一,哈哈,那就清除Hiebernate相关的东西先,这还有些麻烦,首先要切换到MyEclipse J2EE Development[如果没有这个可能是你的工作区没有这种工程,去创建一个MyEclipseJ2EE工程],接着把工程视图从PackageExplorer切换到Navigator,删除文件名带Hibernate字样的文件,打开.project文件,删除里头关于Hibernate的一个buildCommand,和一个nature.Ok了,可以重新添加Hibernate相关的东西.[注意:SessionFactory就是Spring用来关联Hibernate的那Bean的ID我填SessionFactory,填写数据库参数时的那个BeanID就是数据源名称,我填dataSource]

5、接下来产生Hibernate映射,将视图切换到MyEclipse Database Explorer,点右键打开连接,选择你要产生Java代码的表,我们在这选择admin,弹出窗口发现会默认带出一些参数,由于这个DB连接不是属于单个工程的是个全局的东东,默认参数可能不是你想要的,不管那么多你选择Java src folder到你当前工程的src目录,这就与你的工程关联起来了,参数也跟着变了,Java package设为com.kama.hibernate,选中产生Spring DAO;其它默认,表的主键产生要设置一些,选中表名,在ID Generator选择native;就这样了。

6、让Spring管理数据库事务,在配置文件applicationContext.xml中添加内容:
    <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
        <property name="sessionFactory">
            <ref bean="SessionFactory"/>
        </property>
    </bean>

 <bean id="baseTransactionProxy" class="org.springframework.transaction.interceptor.TransactionInterceptor">
        <property name="transactionManager">
            <ref bean="transactionManager"/>
        </property>
        <property name="transactionAttributes">
            <props>
                <prop key="load*">PROPAGATION_REQUIRED,readOnly</prop>
                <prop key="list*">PROPAGATION_REQUIRED,readOnly</prop>
                <prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
                <prop key="add*">PROPAGATION_REQUIRED</prop>
                <prop key="create*">PROPAGATION_REQUIRED</prop>
                <prop key="update*">PROPAGATION_REQUIRED</prop>
                <prop key="delete*">PROPAGATION_REQUIRED</prop>
                <prop key="save*">PROPAGATION_REQUIRED</prop>
                <prop key="regedit*">PROPAGATION_REQUIRED</prop>
                <prop key="remove*">PROPAGATION_REQUIRED</prop>
                <prop key="do*">PROPAGATION_REQUIRED</prop>
            </props>
        </property>
 </bean>


    <bean id="autoProxyCreator"
          class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
        <property name="interceptorNames">
            <list>
                <value>baseTransactionProxy</value>
            </list>
        </property>
        <property name="beanNames">
            <value>*DAO</value>
        </property>
    </bean> 

 

7、事务中,必须是接口调用,具体原因请看其它资料,现在我们增加接口:AdoInterface,在其中定义方法:public void save(Object transientInstance);[用Object做参数类型是为了让所有DAO类共用这个接口];

8、AdminDAO中增加实现接口AdoInterface,修改其save方法的声明,public void save(Object transientInstance)

9、测试方法一,写如下代码来测试:
   ApplicationContext ctx = new ClassPathXmlApplicationContext(
   "applicationContext.xml");
   AdoInterface dao = (AdoInterface) ctx.getBean("AdminDAO");
  
  System.out.println(dao.toString());  
  Admin admin = new Admin();
  admin.setName("Kama");
  admin.setPassword("123456");  
  dao.save(admin);
  System.out.println("--测试完毕--"); 
  看到插入的记录了吧!

10、测试方法二:在工程属性的JAVA Builder path->Libraries里头设置导入D:\MyEclipse\eclipse\plugins\com.genuitec.eclipse.springframework_4.1.1\data\1.2\lib\spring-mock.jar
产生测试类继承org.springframework.test.AbstractTransactionalSpringContextTests;修改:
 protected String[] getConfigLocations() {
  return new String[]
              { "/applicationContext.xml" };
 }
增加:
 private AdoInterface adminDAO;
 public void setAdminDAO(AdoInterface adminDAO)
 {
  this.adminDAO = adminDAO;
 }
 
 public void testSave()
 {
  this.setComplete();//想将数据插入数据库就保留这个,不想插入数据库,去掉这句Junit测试会自动回滚。
  Admin admin = new Admin();
  admin.setName("KamaSupport");
  admin.setPassword("123456");
  this.adminDAO.save(admin);
 }
以Junit形式运行测试程序。大功告成!

附录A:applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>


 <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
  <property name="driverClassName">
   <value>net.sourceforge.jtds.jdbc.Driver</value>
  </property>
  <property name="url">
   <value>jdbc:jtds:sqlserver://127.0.0.1:3344/AT_SMS;SelectMethod=cursor</value>
  </property>
  <property name="username">
   <value>sa</value>
  </property>
  <property name="password">
   <value>123456</value>
  </property>
 </bean>
 
    <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
        <property name="sessionFactory">
            <ref bean="SessionFactory"/>
        </property>
    </bean>

 <bean id="baseTransactionProxy" class="org.springframework.transaction.interceptor.TransactionInterceptor">
        <property name="transactionManager">
            <ref bean="transactionManager"/>
        </property>
        <property name="transactionAttributes">
            <props>
                <prop key="load*">PROPAGATION_REQUIRED,readOnly</prop>
                <prop key="list*">PROPAGATION_REQUIRED,readOnly</prop>
                <prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
                <prop key="add*">PROPAGATION_REQUIRED</prop>
                <prop key="create*">PROPAGATION_REQUIRED</prop>
                <prop key="update*">PROPAGATION_REQUIRED</prop>
                <prop key="delete*">PROPAGATION_REQUIRED</prop>
                <prop key="save*">PROPAGATION_REQUIRED</prop>
                <prop key="regedit*">PROPAGATION_REQUIRED</prop>
                <prop key="remove*">PROPAGATION_REQUIRED</prop>
                <prop key="do*">PROPAGATION_REQUIRED</prop>
            </props>
        </property>
 </bean>


    <bean id="autoProxyCreator"
          class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
        <property name="interceptorNames">
            <list>
                <value>baseTransactionProxy</value>
            </list>
        </property>
        <property name="beanNames">
            <value>*DAO</value>
        </property>
    </bean> 
 
 <bean id="SessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
  <property name="dataSource">
   <ref bean="dataSource" />
  </property>
  <property name="hibernateProperties">
   <props>
    <prop key="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</prop>
   </props>
  </property>
  <property name="mappingResources">
   <list>
    <value>com/kama/hibernate/Admin.hbm.xml</value>
   </list>
  </property>
 </bean>
 <bean id="AdminDAO" class="com.kama.hibernate.AdminDAO">
  <property name="sessionFactory">
   <ref bean="SessionFactory" />
  </property>
 </bean>
</beans>

附录B:log4j.properties
log4j.rootLogger=INFO,default
log4j.logger.org=ERROR
log4j.logger.com.comp=ERROR
log4j.logger.net.sf.hibernate=ERROR
log4j.logger.net.sf.hibernate.SQL=ERROR
log4j.logger.net.sf.hibernate.type=ERROR
log4j.logger.net.sf.ehcache=ERROR
log4j.logger.org.springframework=ERROR

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.Threshold=DEBUG
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS}:[%p]  [%t] %r   %l %m%n

log4j.appender.default=org.apache.log4j.RollingFileAppender
log4j.appender.default.Threshold=DEBUG
log4j.appender.default.File=kama.log
log4j.appender.default.Append=true
log4j.appender.default.MaxFileSize=1000KB
log4j.appender.default.MaxBackupIndex=3
log4j.appender.default.layout=org.apache.log4j.PatternLayout
log4j.appender.default.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS}:[%p]  [%t] %r   %l %m%n


终于写完了,学会这个是得到了多位朋友的帮助,特别是[无聊的神灯]不厌其烦的帮助我解决各种问题,谢谢他们! 

转自:http://hi.baidu.com/hi%5Fkama/blog/item/131bdfb4933238738ad4b225.html

分享到:
评论

相关推荐

    Spring集成Hibernate myeclipse 下

    总结来说,Spring集成Hibernate在MyEclipse环境下,主要是通过配置Spring的IoC容器和事务管理,结合Hibernate的ORM能力,实现高效的数据库操作。这个过程涉及到了项目结构、配置文件、实体类、DAO、Service等多个...

    使用MyEclipse下整合Spring和Hibernate

    在IT行业中,集成Spring和Hibernate框架是常见的开发实践,尤其在企业级应用中,这两个框架的结合能够提供强大的数据访问和业务逻辑管理能力。MyEclipse作为一款强大的Java集成开发环境,提供了便捷的工具支持来简化...

    用MyEclipse搭建Struts+Spring+Hibernate框架(图文).doc

    标题与描述均指向了“用MyEclipse搭建Struts+Spring+Hibernate框架”的主题,这一文档旨在指导读者如何在MyEclipse环境下构建一个基于Struts、Spring和Hibernate的开发框架,通常被称为SSH(Struts-Spring-Hibernate...

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

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

    Myeclipse Oracle9i hibernate3.2 Spring2.5 Struts2简单示例

    自己做的一个Myeclipse Oracle9i hibernate3.2 Spring2.5 Struts2, 包删除了, 自己在myeclipse里添加就行了, 已经调试成功. 建表语句: create table CUSTOMER ( ID INTEGER not null, USERNAME VARCHAR2(12), ...

    myeclipse下整合spring和hibernate

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

    MYECLIPSE + STRUTS2 + SPRING4 + HIBERNATE4 + STRUCTS2S+OGNL + MYSQL_5.7.12

    根据提供的标题、描述以及部分内容,本文将详细解析与MYECLIPSE + STRUTS2 + SPRING4 + HIBERNATE4 + STRUCTS2S+OGNL + MYSQL_5.7.12相关的技术栈及其应用。这些技术在企业级开发中非常常见,能够帮助开发者构建高效...

    使用MyEclipse查看Spring的依赖视图

    - 如果你的应用使用了Hibernate或其他ORM框架,那么你可能还需要配置`SessionFactory`,以便Spring能够管理Hibernate会话的生命周期。 - 配置`SessionFactory`通常需要在Spring配置文件中定义相关的bean。 5. **...

    myeclipse下hibernate用法

    MyEclipse 中使用 Hibernate 的步骤 MyEclipse 是一个功能强大的集成开发环境,支持多种编程语言和框架,而 Hibernate 则是一种流行的 ORM(Object-Relational Mapping)框架,用于简化数据库交互。本文将指导您...

    Myeclipse 10.0 + Hibernate 4.3.5 连接 Oracle 11G的演示代码

    标题 "Myeclipse 10.0 + Hibernate 4.3.5 连接 Oracle 11G的演示代码" 描述的是一个整合项目,它将Myeclipse 10.0集成开发环境、Hibernate 4.3.5对象关系映射框架与Oracle 11G数据库相结合,用于演示如何在这样的...

    myeclipse自动生成hibernate映射文件

    myeclipse自动生成hibernate映射文件

    myeclipse for spring 8.6

    根据提供的文件信息,“myeclipse for spring 8.6”主要涉及的是MyEclipse这款集成开发环境(IDE)与Spring框架结合使用的版本介绍及相关知识点。接下来将从几个方面详细阐述这些知识点。 ### 一、MyEclipse简介 ...

    MyEclipse Hibernate Spring 例子

    Welcome to the MyEclipse Hibernate and Spring tutorial. This tutorial is meant to be a quick overview of how using both Hibernate and Spring in the same project works in MyEclipse.

    springmvc-spring4.3-hibernate5框架整合

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

    MyEclipse for spring9.0下载地址

    根据提供的信息,我们可以详细探讨与"MyEclipse for Spring 9.0"相关的知识点,包括其功能、使用场景以及如何下载安装等内容。 ### MyEclipse for Spring 9.0概述 MyEclipse是一款非常受欢迎的集成开发环境(IDE)...

    Myeclipse开发struts+hibernate+spring新手入门--环境配置---项目开发示例

    在Myeclipse中开发基于Struts、Hibernate和Spring的项目,首先需要正确配置这三个框架的环境,包括安装Myeclipse、下载相关插件和数据库驱动,然后在项目中添加Struts、Hibernate和Spring的支持。接着,根据项目需求...

    用myeclipse自动生成hibernate配置文件

    MyEclipse作为一款强大的集成开发环境,提供了自动生成Hibernate配置文件的功能,帮助开发者快速构建项目。以下是使用MyEclipse自动生成Hibernate配置文件的详细步骤: 1. **创建数据库表**: 在开始之前,需要先...

    MyEclipse+Hibernate快速入门中文版

    本文档旨在通过一个简单易懂的方式,介绍如何在MyEclipse环境下配置并使用Hibernate框架。这是一份非常适合初学者使用的指南,特别是对于那些希望快速掌握在MyEclipse环境中配置Hibernate基本步骤的学习者来说尤为...

    在Myeclipse下搭建的SpringMvc+Spring+Hibernate框架

    【标题】"在Myeclipse下搭建的SpringMvc+Spring+Hibernate框架"涉及的主要知识点是企业级Java开发中的三大核心技术:SpringMVC、Spring和Hibernate,以及如何在集成开发环境MyEclipse中进行项目构建。 1. **...

Global site tag (gtag.js) - Google Analytics