用eclipse+Hibernate Synchronizer(plugin)开发例子(原创)

原创

1. 开发环境准备

       Eclipse3.0.1

       下载:http://www.eclipse.org/

Eclipse Plugin:Hibernate Synchronizer

下载:http://sourceforge.net/project/showfiles.php?group_id=99370

       Hibernate-2.1.8

       下载:http://internap.dl.sourceforge.net/sourceforge/hibernate/hibernate-2.1.8.zip

       MyS       QL 4.1

       下载:http://www.mysql.com

2.演示一个简单例子

2.1在mysql数据库中的test数据库下创建表内容表Content,脚本如下:

CREATE TABLE Content (

FID int(11) NOT NULL auto_increment,

FTitle varchar(100) NOT NULL default '',

FContent Text ,

PRIMARY KEY  (FID)

);

 

2.2检测Hibernate插件是否安装成功,进入菜单”window”下的”Preferences”,就有如下图所示的:

 

2.3用eclipse创建一个JAVA项目,如下所示:

 

选“Next>”一直到完成。

有一点要注意的是,创建完项目后,还要将Hibernate库及mysql驱动加入到项目的Libraries中。

2.4加入Hibernate配置文件“hibernate.cfg.xml”

选择该项目,点右键,“New”à “Other”进入如下界面,

选择“Hibernate Configuration File”à “Next”

选择数据库类型、Database URL、Username及Password,OK, 文件“hibernate.cfg.xml”系统自动生成。

2.5加入“*.hbm”配置文件

同样是,选择该项目,点右键,“New”à “Other”进入,不过这次要选择的是“Hibernate Mapping File”,点“Next”进入如下界面

注意,如果数据库有密码,则要先要输入密码再点“Refresh”按钮,数据中的表就会显示在Tables框中。选择一个表,如content后,点“Finish”按钮。

2.6根据content.hbm生成相关的JAVA代码,选择Content.hbm右键,操作如下界面:

2.7接一来简单地增加几行代码就可以了,进入系统生成的包DAO中,如例子中的“com.hibernate.example.dao”,打开文件ContentDAO.java,代码修改如下:

0: /*

1:  * 创建日期 2004-12-10

2:  * @author Oscar Lao

3:  * CopyRight 2005 S.W.S

4:  */

5:

 6: package com.hibernate.example.dao;

7:

 8: import org.apache.log4j.Logger;

9:

10: import com.hibernate.example.Content;

11: import com.hibernate.example.base.BaseContentDAO;

12:

13: /**

14:  * @author Oscar Lao

15:  * QQ:63065068

16:  * Email:e-silver@163.com

17:  * ClassDesc:Hibernate Example

18:  **/

19: public class ContentDAO extends BaseContentDAO {

20:     private static final Logger logger = Logger.getLogger(ContentDAO.class);

21:

22:     public static void main(String[] args){

23:         if (logger.isDebugEnabled()) {

24:             logger.debug("程序正在运行...");

25:         }

26:

27:         try {

28:             _RootDAO.initialize();

29:            

30:             ContentDAO cond = new ContentDAO();           

31:             Content cont = new Content();

32:             for (int i = 1; i < 100; i++) {

33:                 cont.setFid(new Integer(i));

34:                 cont.setFTitle("Title"+i);

35:                 cont.setFContent("Content"+i);

36:                 cond.save(cont);

37:            }

38:         } catch (Exception e) {

39:             logger.error("运行时出现异常...", e);

40:         }

41:

42:         if (logger.isDebugEnabled()) {

43:             logger.debug("运行完毕。");

44:         }

45:     }

46: }

 

3.欣赏成果

如果所有的配置正确,ContentDAO类应该可以运行了,运行后,程序会向表Content插入100条记录。祝你好运!!

4.在我测试时出现如下错误,现在也贴出来,希望对大家有所帮助:

4.1如果运行时出现如下异常

Could not find UserTransaction in JNDI javax.naming.NoInitialContextException:…

解决:把配置文件“hibernate.cfg.xml”中的

  <property name="hibernate.transaction.factory_class">

           net.sf.hibernate.transaction.JTATransactionFactory

       </property>

       <property name="jta.UserTransaction">

           java:comp/UserTransaction

       </property>

 两行设置JTA控制事务的属性注释掉就可以了,因为程序里还未使用JTA控制事务。

4.2 如果运行时出现如下异常

Error parsing XML: /hibernate.cfg.xml(33) The content of element type "session-factory" is incomplete, it must match "(property*,mapping+,(class-cache|collection-cache|jcs-class-cache|jcs-collection-cache)*)".

       解决:在配置文件“hibernate.cfg.xml”中的<session-factory>与</session-factory>之间加

              <mapping resource="Content.hbm" />

      

 

第一次写关于Hibernate的文章,如有不对的地方,请批评指正。

最后,祝大家成功!!^_^

时间: 2024-08-03 16:12:49

用eclipse+Hibernate Synchronizer(plugin)开发例子(原创)的相关文章

用Eclipse Hibernate Synchronizer插件开发Hibernate应用

Hibernate是一个开放源代码的O/R Mapping (对象关系映射框架),它对JDBC进行了轻量级的对象封装,使Java程序员可以使用对象编程思维来操纵数据库. Hibernate Synchronizer是一个Eclipse插件,可以自动生成*.hbm文件.持久化类和DAOs.了解Hibernate Synchronizer插件的详细信息可以访问:http://www.binamics.com/hibernatesync/ .     一.Hibernate Synchronizer的

netbeans6.5开发JSF+Hibernate的一个小例子(原创)

问题描述 只是一个简单的小例子,希望能对初学者有点帮助我也只是一个初学者,其中的错误还请大家指出http://www.cnblogs.com/halgogo/archive/2009/01/11/1373730.html 解决方案 解决方案二:加油解决方案三:我也是在初学,多多交流解决方案四:加油!

基于Java的Eclipse plugin开发概述

但 RTC 本身,或者说 eclipse 平台本身并没有一种很方便的途径让我们清楚地辨别出这些资源文件中的内容,而大量的信息只能以 Unicode 方式显示:例如:\u7675.因此我们急需一个工具或插件(eclipse plugin)自动地进行解码,来解决我的问题.这样我们所看到的将不再是让人费解的 Unicode,而是解码后的文字显示.(在刚才的例子中,会显示为"癵").总之,这个工具无论是对于http://www.aliyun.com/zixun/aggregation/7155

扩展Eclipse辅助和规范开发流程

规范 如果市场上的开发工具不能满足您的需要,而自己开发 IDE 又不太现实,那本文就是您所需要的,它介绍了如何扩展 eclipse JDT 来辅助规范你的项目开发流程和帮助约束你的代码规范. 一.前言 你的小组的人员是否不按照你制订的开发流程和代码规范来开发? 你的小组的成员经常变化,经常要对新手讲述什么是 Struts,什么是MVC? 已有的开发工具的功能不能满足你的需要? 如果你遇到上述问题,请看看本文,虽然它不一定能解决好你的问题,但至少它回给你一定的启发的.本文从实际案例触发,深入浅出,

eclipse + JBoss 5 + EJB3开发指南(10):通过继承实体Bean,将单个表映射成多个表(单表策略,SINGLE_TABLE)

本文为原创,如需转载,请注明作者和出处,谢谢! 上一篇:eclipse + JBoss 5 + EJB3开发指南(9):实现Entity Bean的多对多(many-to-many)映射     如果以前使用过EJB1.x或EJB2.x的实体Bean,会发现无法通过继承实体Bean将单个表分成多表.而在EJB3中,我们很容易实现这个功能.先看看图1所示的表结构和记录. 图1   t_accounts表的结构和记录 在t_accounts表中,有一个account_type字段.这个字段是一个长度

eclipse + JBoss 5 + EJB3开发指南(13):在Servlet中访问应用程序管制EntityManager对象

本文为原创,如需转载,请注明作者和出处,谢谢! 上一篇:eclipse + JBoss 5 + EJB3开发指南(12):使用命名查询执行JPQL      在前面的文章中使用的都是容器管制的EntityManager对象.这类EntityManager对象是由EJB容器创建的,在这种情况下,EntityManager对象的生命周期完全由EJB容器来管理.在SessionBean中可以使用如下的代码来通知EJB容器创建EntityManager对象: @PersistenceContext(un

eclipse + JBoss 5 + EJB3开发指南(1):编写第一个无状态的SessionBean

本文为原创,如需转载,请注明作者和出处,谢谢! 本系列教程使用的软件版本如下: Eclipse:3.4.2, Eclipse IDE for Java EE Developers JBoss :5.0.1,http://www.jboss.org/jbossas/downloads/ JDK:1.6.0.14,http://java.sun.com/javase/downloads/index.jsp     在本文中将编写一个简单的无状态SessionBean.在发布EJB时,一般需要将EJB

eclipse + JBoss 5 + EJB3开发指南(1):编写无状态的SessionBean

本文为原创,如需转载,请注明作者和出处,谢谢! 本系列教程使用的软件版本如下: Eclipse:3.4.2, Eclipse IDE for Java EE Developers JBoss :5.0.1,http://www.jboss.org/jbossas/downloads/ JDK:1.6.0.14,http://java.sun.com/javase/downloads/index.jsp     在本文中将编写一个简单的无状态SessionBean.在发布EJB时,一般需要将EJB

eclipse + JBoss 5 + EJB3开发指南(11):实体Bean的连接策略(JOINED Strategy)

本文为原创,如需转载,请注明作者和出处,谢谢! 上一篇:eclipse + JBoss 5 + EJB3开发指南(10):通过继承实体Bean,将单个表映射成多个表(单表策略,SINGLE_TABLE)    在上一篇文章中,使用单表策略将一个表从逻辑上分成了多个表.但这样可能会造成空巢字段,也就是说,一个逻辑表只由部分字段组成,而物理的表的很多字段的值就会为null.为了解决这个问题,可以将t_accounts表物理地分成多个表.为了与t_accounts表进行对比,新建一个t_myaccou