MyEclipse Spring Hibernate整合开发

开发 后端
MyEclipse Spring Hibernate整合是什么特点呢?本篇文章我们就向你介绍MyEclipse Spring Hibernate整合方面的情况。

MyEclipse Hibernate Spring整合开发是如何进行呢?让我们开始讲解吧:

MyEclipse Spring Hibernate整合一、开发环境

MyEclipse6.01GA,MySQL。

MyEclipse Spring Hibernate整合二、表结构

  1.    CREATE TABLE `user` (  
  2.   `id` int(10) unsigned NOT NULL auto_increment,  
  3.   `username` varchar(64) NOT NULL,  
  4.   `passwordvarchar(64) NOT NULL,  
  5.   `first_name` varchar(128) NOT NULL,  
  6.   `last_name` varchar(128) NOT NULL,  
  7.   `date_created` bigint(20) unsigned NOT NULL,  
  8.   PRIMARY KEY  (`id`)  
  9. ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

MyEclipse Spring Hibernate整合三、具体步骤:

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

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

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

MyEclipse Spring Hibernate整合1 

MyEclipse Spring Hibernate整合图1

其余的选项默认,点击 “下一步”,提示是否建立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

按照下图所示进行设置

MyEclipse Spring Hibernate整合2 

MyEclipse Spring Hibernate整合图2

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

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

  1. ﹤property name="mappingResources"﹥  
  2.  ﹤list﹥  
  3.   ﹤value﹥com/simon/model/User.hbm.xml﹤/value﹥  
  4.   ﹤/list﹥  
  5. ﹤/property﹥ 

此时在观察类结构:

MyEclipse Spring Hibernate整合3 

MyEclipse Spring Hibernate整合图3

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

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

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

  1. import org.springframework.context.ApplicationContext;  
  2. import org.springframework.context.support.ClassPathXmlApplicationContext;  
  3. import com.simon.model.UserDAO;  
  4. import com.simon.model.User;  
  5. public class TestWithoutTx {  
  6.  
  7.  /**  
  8.   * @param args  
  9.   */ 
  10.  public static void main(String[] args) {  
  11.   // TODO Auto-generated method stub  
  12.         User user=new User();  
  13.         user.setFirstName("first name");  
  14.         user.setLastName("last name");  
  15.         user.setUsername("user name");  
  16.         user.setPassword("password");  
  17.         user.setDateCreated(new Long(111111));  
  18.         ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");  
  19.         UserDAO userdao=(UserDAO)context.getBean("UserDAO");  
  20.         userdao.save(user);   
  21.  }  

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

如下:

  1. ﹤bean id="myTransactionManager"  class="org.springframework.orm.hibernate3.HibernateTransactionManager"﹥  
  2. ﹤property name="sessionFactory"﹥  
  3. ﹤ref bean="sessionFactory" /﹥  
  4. ﹤/property﹥  
  5. ﹤/bean﹥  

继续增加如下配置信息:

  1. ﹤bean id="userDAOProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"﹥  
  2.   ﹤property name="proxyTargetClass"﹥  
  3.    ﹤value﹥true﹤/value﹥  
  4.   ﹤/property﹥  
  5.   ﹤property name="transactionManager"﹥  
  6.    ﹤ref bean="myTransactionManager" /﹥  
  7.   ﹤/property﹥  
  8.   ﹤property name="target"﹥  
  9.    ﹤ref local="UserDAO" /﹥  
  10.   ﹤/property﹥  
  11.   ﹤property name="transactionAttributes"﹥  
  12.    ﹤props﹥  
  13.     ﹤!-- 这里的方法签名可以精确到方法, 先懒惰一下全配置上 --﹥  
  14.     ﹤prop key="*"﹥PROPAGATION_REQUIRED﹤/prop﹥  
  15.    ﹤/props﹥  
  16.   ﹤/property﹥  
  17.  ﹤/bean﹥ 

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

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

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

换成

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

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

MyEclipse Spring Hibernate整合开发就向你介绍到这里,那么你是不是对MyEclipse Spring Hibernate整合有了一些了解了呢?

【编辑推荐】

  1. MyEclipse UML架构设计浅谈
  2. MyEclipse开发Spring入门操作
  3. Eclipse和MyEclipse的比较浅析
  4. MyEclipse+WebLogic+MySQL数据源的配置图解
  5. MyEclipse JSP+JavaBean如何单步调试
责任编辑:仲衡 来源: 百度空间
相关推荐

2016-12-14 09:03:34

springhibernate异常

2009-06-30 14:02:00

hibernate入门MyEclipse开发

2009-07-10 15:24:33

MyEclipse开发Spring

2009-07-09 18:24:00

WebWork与Spr

2009-09-23 17:56:45

JSF入门

2009-03-06 14:34:31

StrutsHibernateSpring

2011-05-19 09:52:48

SSH

2009-07-14 16:25:04

MyEclipse开发

2009-06-26 16:07:43

MyEclipse开发Hibernate程序

2009-06-02 14:09:37

myeclipse smyeclipse开发myeclipse

2010-05-28 19:15:53

2010-08-06 10:56:11

Flex4MyEclipse

2009-09-23 13:23:12

Hibernate M

2009-06-01 15:55:06

JPAEclipseMyEclipse 6

2009-08-14 09:40:55

MyEclipse整合

2009-09-22 17:55:51

Spring Hibe

2009-09-24 09:52:20

Spring Hibe

2009-07-02 09:39:37

Hibernate延迟

2009-09-21 17:10:14

struts Hibe

2009-09-22 14:46:18

struts-spri
点赞
收藏

51CTO技术栈公众号