当前位置导航:炫浪网>>网络学院>>网页制作>>JSP教程

用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:[email protected]



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的文章,如有不对的地方,请批评指正。







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






相关内容
赞助商链接