javascript
eclipse 达梦 连接_达梦Hibernate Spring集成开发示例
【IT168 技術(shù)文檔】DM是武漢華工達(dá)夢(mèng)數(shù)據(jù)庫(kù)有限公司推出的新一代高性能、高安全性的數(shù)據(jù)庫(kù)產(chǎn)品。它具有開(kāi)放的、可擴(kuò)展的體系結(jié)構(gòu),高性能事務(wù)處理能力,以及低廉的維護(hù)成本。DM是完全自主開(kāi)發(fā)的數(shù)據(jù)庫(kù)軟件,其安全級(jí)別達(dá)到了國(guó)內(nèi)所有數(shù)據(jù)庫(kù)產(chǎn)品中的最高級(jí)---B1級(jí)。在這里我準(zhǔn)備用時(shí)下比較流行的開(kāi)發(fā)工具,Hibernate和Spring,達(dá)夢(mèng)數(shù)據(jù)庫(kù)。以及MyEclipse來(lái)完成一個(gè)簡(jiǎn)單的應(yīng)用。
數(shù)據(jù)庫(kù)采用達(dá)夢(mèng)5.0
1、用達(dá)夢(mèng)創(chuàng)建一個(gè)test數(shù)據(jù)庫(kù),再創(chuàng)建一個(gè)user表,再創(chuàng)建兩個(gè)字段username和password。腳本如下
createdatabasetest datafile'test.dbf'size100;setcurrentdatabasetestcreatelogin test identifiedbytest123defaultdatabasetest;createusertest relatedbytest;grantresourcetotest at test;
以上腳本為創(chuàng)建test數(shù)據(jù)庫(kù) ,并且創(chuàng)建一個(gè)登陸名為 test 密碼是test123
droptablext_user;createtablext_user(user_idvarchar(30)notnull,user_namevarchar(20)notnull,
user_pwdvarchar(30)notnull,primarykey(user_id)
);
2、打開(kāi)myeclipse的database explore透視圖,右鍵單擊左側(cè)的空白區(qū)域 ,點(diǎn)擊 new 按鈕單擊“configure database driver”來(lái)配置數(shù)據(jù)庫(kù)的驅(qū)動(dòng)。完成以后,做如下操作:
然后測(cè)試數(shù)據(jù)庫(kù)是否連接成功。
如果測(cè)試成功顯示如下圖:
1.新建一個(gè)web項(xiàng)目testSpring
2.引入Spring包
注意:這里為了省得以后再添加spring的相關(guān)包,所以一次性的選中了所有的包。選中
Copy選項(xiàng),它會(huì)把這些包拷貝到/WebRoot/WEB-INF/lib目錄下,方便以后實(shí)際項(xiàng)目中的使用。其余選下一步,完成
3.添加hibernate包
這時(shí)候,系統(tǒng)會(huì)檢測(cè)到已經(jīng)添加了spring包。選擇使用Spring的配置文件
點(diǎn)next
點(diǎn)next
這里Dialect先空著。點(diǎn)下一步
點(diǎn)完成
4.由于達(dá)夢(mèng)數(shù)據(jù)庫(kù)不支持Hibrnate Reverse Engineering,在這里推薦使用Hibernate Synchronizer插件。下載以后直接接壓到eclipse的plug文件夾下面就可以使用了。在工程上面右鍵點(diǎn)新建 -> 其它 ->
選擇Hibernate Configuration File點(diǎn)下一步
這里的Database Type先暫時(shí)不要選擇(沒(méi)有達(dá)夢(mèng)數(shù)據(jù)庫(kù)選項(xiàng)),點(diǎn)完成。
將org.hibernate.dialect.DB2Dialect更改為
org.hibernate.dialect.DMDialect這個(gè)類的代碼在達(dá)夢(mèng)的幫助文檔中可以找到。
5.新建一個(gè)包c(diǎn)om.dm.vo用來(lái)存放我們的實(shí)體類。
在新建 -> 其它
選擇Hibernate Mapping File點(diǎn)下一步
點(diǎn)Refresh按鈕以后會(huì)看到數(shù)據(jù)庫(kù)中我們創(chuàng)建的xt_user表,然后選擇放到剛才我們建好的包里面,這樣會(huì)看到生成了一個(gè) xtUser.hbm.xml的hibernate的映射文件。選中該文件點(diǎn)鼠標(biāo)右鍵會(huì)看到HibernateSynchronizer選項(xiàng)。選擇Synchronizer File
會(huì)看到給我們生成了三個(gè)包,連DAO都幫我們生成了。還比較方便。
但是當(dāng)和Spring整合時(shí),會(huì)有一個(gè)小問(wèn)題,就是Hibernate Synchronizer產(chǎn)生的DAO,有自己控制Session的方法,如果直接使用Spring的HibernateTemplate,那么 Hibernate Synchronizer產(chǎn)生的那些DAO就變成沒(méi)用處,反過(guò)來(lái)直接使用Hibernate Synchronizer產(chǎn)生的DAO,那么會(huì)變成自己要想辦法管理session,就失去和Spring整合的方便,而如果混著用,那么session又變成不好控制。要解決這個(gè)問(wèn)題就要修改Hibernate Synchronizer產(chǎn)生的_BaseRootDAO,讓他直接extends HibernateDaoSupport
publicabstractclass_BaseRootDAOextendsHibernateDaoSupport {...protectedObject load(Class refClass, Serializable key) {
log.debug("load"+refClass+"instance with id:"+key);try{//使用getHibernateTemplate()去操作DB。returngetHibernateTemplate().load(refClass, key);
}catch(RuntimeException re) {
log.error("load failed", re);throwre;
}
}publicjava.util.List findBySQL(finalString queryString,finalString alias,finalClass refClass) {
log.debug("findBySQL queryString"+queryString);return(List) getHibernateTemplate().execute(newHibernateCallback() {publicObject doInHibernate(Session session)throwsHibernateException {
SQLQuery sqlQ=session.createSQLQuery(queryString);if(alias==null) {
sqlQ.addEntity(refClass==null?getReferenceClass(): refClass);
}else{
sqlQ.addEntity(alias, refClass==null?getReferenceClass() : refClass);
}returnsqlQ.list();
}
},true);
}
按照以上這個(gè)原則修改代碼。就可以和spring整和在一起,在Spring架構(gòu)里面使用Hibernate就變的非常簡(jiǎn)單,下面先建立業(yè)務(wù)邏輯代碼
MyTestDAO"class="com.dm.dao.MyTestDAO">sessionFactory">mySessionFactory"/>
程序代碼如下:
MyTestDAO mDao=(MyTestDAO)apcontext.getBean("MyTestDAO");//查詢 用native SQLList list=mDao.findBySQL("select XtUser.* from XT_USER XtUser","tss");//查詢 用HQLList list=mDao.find("from XtUser");//新增mDao.save(newXtUser ());//修改mDao.saveOrUpdate(newXtUser ());//刪除mDao.delete(XtUser);
修改后spring ,hibernate就能夠整和在一起,以上的方法只是一個(gè)比較簡(jiǎn)單的示例,應(yīng)該有個(gè)service層用來(lái)提供服務(wù)。而DAO是具體的業(yè)務(wù)實(shí)現(xiàn)類。這樣每層之間是松散偶合。為了簡(jiǎn)便起見(jiàn)就沒(méi)有去編寫(xiě)service這一層。使用HibernateSynchronizer可以提高我們的開(kāi)發(fā)效率。MyEclipse的Hibernate插件不支持達(dá)夢(mèng)數(shù)據(jù)庫(kù)自動(dòng)生成映射文件。如果每個(gè)表都需要我們?nèi)ブ饌€(gè)來(lái)編寫(xiě)映像文件是比較煩瑣的工作。利用HibernateSynchronize能夠較好的解決這個(gè)問(wèn)題。提高開(kāi)發(fā)的效率。
總結(jié)
以上是生活随笔為你收集整理的eclipse 达梦 连接_达梦Hibernate Spring集成开发示例的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 生鲜配送小程序源码_生鲜配送小程序开发
- 下一篇: redis 用中文做key_推荐一款Re