Hibernate4实现单表CRUD.docx

上传人:b****9 文档编号:25837741 上传时间:2023-06-16 格式:DOCX 页数:22 大小:289.02KB
下载 相关 举报
Hibernate4实现单表CRUD.docx_第1页
第1页 / 共22页
Hibernate4实现单表CRUD.docx_第2页
第2页 / 共22页
Hibernate4实现单表CRUD.docx_第3页
第3页 / 共22页
Hibernate4实现单表CRUD.docx_第4页
第4页 / 共22页
Hibernate4实现单表CRUD.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

Hibernate4实现单表CRUD.docx

《Hibernate4实现单表CRUD.docx》由会员分享,可在线阅读,更多相关《Hibernate4实现单表CRUD.docx(22页珍藏版)》请在冰豆网上搜索。

Hibernate4实现单表CRUD.docx

Hibernate4实现单表实现单表CRUDHibernate4.1实现单表CRUD学习JavaWeb的人,我想对Hibernate都不陌生,是一个比较流行的ORM框架,ORM简称对象关系映射,那你用此框架实现过单表的CRUD吗;我们来试试利用hibernate实现单表的CRUD,也就是我们所说的增删改查;打开我们熟悉常用的开发工具myeclipse;新建项目Hibernate4Project添加Hibernate开发支持,很多人使用的手动配置,其实也是可以自动配置的,右键项目MyeclipseProjectFacetsInstallHibernateFacet表示添加Hibernate开发支持,不用你在很多JAR包中寻找了;然后选择4.1版本,下面默认然后下一步Next;下面按照如图配置即可,在javapackage那一个文本框之中,如果你没有建立包的话,就点击后面的New,然后继续NEXT;下面我们要选择我们要操作的数据源,前提你一定要配置好数据源,如果选择,如果你没配置DBDriver的话,是没有其他选项的,点击Next下面就是选择插件的了,如果你不需要什么插件,就选择核心包即可,core包;点击finish即可,现在hibernate的开发支持就OK了;如果你没有配置数据源可以看下此项选择WindowOther下面选择要打开的视图DBBrowser你会看到下面的一个视图被打开了,应该在右下角显示的;新建一个你要连接的数据库,空白出点击右键new在下面这个界面中配置就OK了;Drivertemplate选择你要连接的数据库类型;Drivername自定义一个名称即可;ConnectionURL数据库连接地址;Username数据库用户名;Password密码DriveJAR数据库驱动包;Driverclassname选择一个常用的驱动Savepassword勾选此项,然后点击TestDriver最后保存即可;然后我们继续我们的单表CRUD实现;当我们添加好hibernate支持的时候,myeclipse会自动生成一个HibernateSessionFactory.java的类,这个类就是我们在用的数据库连接类,在hibernate之中,一个数据库连接叫做一个session,可以看下下面的这个类,我添加了一些注释;packagecn.oracle.dbc;importorg.hibernate.HibernateException;importorg.hibernate.Session;importorg.hibernate.cfg.Configuration;importorg.hibernate.service.ServiceRegistry;importorg.hibernate.service.ServiceRegistryBuilder;/*数据库连接类*authorcongz_000*/publicclassHibernateSessionFactory/*ThreadLocal保存数据库连接;*/privatestaticfinalThreadLocalthreadLocal=newThreadLocal();/*连接工厂*/privatestaticorg.hibernate.SessionFactorysessionFactory;privatestaticConfigurationconfiguration=newConfiguration();privatestaticServiceRegistryserviceRegistry;statictryconfiguration.configure();serviceRegistry=newServiceRegistryBuilder().applySettings(configuration.getProperties().buildServiceRegistry();sessionFactory=configuration.buildSessionFactory(serviceRegistry);catch(Exceptione)System.err.println(%ErrorCreatingSessionFactory%);e.printStackTrace();/*无参构造方法*/privateHibernateSessionFactory()/*静态方法,我们用来得到数据库的连接;*return返回一个数据库连接;*throwsHibernateException*/publicstaticSessiongetSession()throwsHibernateExceptionSessionsession=(Session)threadLocal.get();if(session=null|!

session.isOpen()if(sessionFactory=null)rebuildSessionFactory();session=(sessionFactory!

=null)?

sessionFactory.openSession():

null;threadLocal.set(session);returnsession;/*从名称可以看到重建连接工厂;*/publicstaticvoidrebuildSessionFactory()tryconfiguration.configure();serviceRegistry=newServiceRegistryBuilder().applySettings(configuration.getProperties().buildServiceRegistry();sessionFactory=configuration.buildSessionFactory(serviceRegistry);catch(Exceptione)System.err.println(%ErrorCreatingSessionFactory%);e.printStackTrace();/*关闭数据库连接,静态方法,可以类名称直接调用;*throwsHibernateException*/publicstaticvoidcloseSession()throwsHibernateExceptionSessionsession=(Session)threadLocal.get();threadLocal.set(null);if(session!

=null)session.close();/*建立数据库连接工厂;*return*/publicstaticorg.hibernate.SessionFactorygetSessionFactory()returnsessionFactory;publicstaticConfigurationgetConfiguration()returnconfiguration;我们还需要映射表,我们拿emp表来做,打开你创建的数据源,然后我们找到要操作的表,右键HibernateReverseEngineering选择创建的pojo的位置,和一些自动生成配置,选择NEXT;下面选择主键的生成类型IDGenerator,选择assigned表示指派,也就是自定义;下一步同样,选择assigned,其他不做修改,点击Finish;等一会就会生成一个简单java类和一个Emp.hbm.xml文件,如果此表中有关系字段的话,删除即可;Emp.javapackagecn.oracle.pojo;importjava.util.Date;SuppressWarnings(serial)publicclassEmpimplementsjava.io.SerializableprivateShortempno;privateStringename;privateStringjob;privateShortmgr;privateDatehiredate;privateDoublesal;privateDoublecomm;Emp.hbm.xml对应的数据表和用户字段empno的数据类型及对应的列名称和允许的大小,及主键的指派类型;对应的列名称和精度job字段对象的列和精度以上就是自动生成,需要简单修改的一部分,下面的就需要自己编写了,不过和从头到尾不用工具实现的CRUD相对简单多了;编写DAO接口,首先我们可以编写一个公共的接口IDAO.javaIDAO.javapackagecn.oracle.dao;importjava.util.List;/*一个公共接口,实现单表的CRUD加分页的操作;*authorcongz_000*param主键类型*param简单java类*/publicinterfaceIDAO/*实现数据的增加*paramvo简单java类对象;*return返回boolean值,返回true表示增加成功,false表示添加失败!

*throwsException*/publicbooleandoCreat(Vvo)throwsException;/*删除一条数据;*paramid参数是删除数据的主键类型;*return返回boolean数据类型,true表示删除成功,false表示删除失败;*throwsException*/publicbooleandoRemove(Kid)throwsException;/*修改一条数据;*paramvo参数为简单java类对象;*return返回boolean类型,true表示修改成功,false表示修改失败;*throwsException*/publicbooleandoUpdate(Vvo)throwsException;/*查询一条数据*paramid根据参数id查询数据;*return返回一个简单java类对象;*throwsException*/publicVfindById(Kid)throwsException;/*查询表中所有数据;*return返回一个List集合,里面是每条数据对应的简单java类对象;*throwsException*/publicListlist()throwsException;/*模糊查询*paramcolumn要模糊查询的列;*paramkeyWord模糊查询的关键字;*paramcurrentPage当前页数;*paramlineSize每页显示数据条目数;*return返回一个list集合;*throwsException*/publicListlist(Stringcolumn,StringkeyWord,IntegercurrentPage,IntegerlineSize)throwsException;/*统计模糊查询的条目数;*paramcolumn要模糊查询的列;*paramkeyWord要模糊查询的关键字;*return*throwsException*/publicIntegergetAllCount(Stringcolumn,StringkeyWord)throwsException;IEmpDAO.java直接继承IDAO即可;packagecn.oracle.dao;importcn.oracle.pojo.Emp;publicinterfaceIEmpDAOextendsIDAOIEmpDAO接口的实现类,EmpDAOImpl.javapackagecn.oracle.dao.impl;importjava.util.List;importorg.hibernate.Query;importcn.oracle.dao.IEmpDAO;importcn.oracle.dbc.HibernateSessionFactory;importcn.oracle.pojo.Emp;publicclassEmpDAOImplimplementsIEmpDAOOverridepublicbooleandoCreat(Empvo)throwsExceptionStringhql=INSERTINTOemp(empno,ename,job,hiredate,sal,comm)VALUES(?

?

?

?

?

?

);Queryquery=HibernateSessionFactory.getSession().createQuery(hql);query.setShort(0,vo.getEmpno();query.setString(1,vo.getEname();query.setString(2,vo.getJob();query.setDate(3,vo.getHiredate();query.setDouble(4,vo.getSal();query.setDouble(5,vo.getComm();returnquery.executeUpdate()=1;OverridepublicbooleandoRemove(Shortid)throwsExceptionStringhql=DELETEFROMempASnWHEREn.empno=?

;Queryquery=HibernateSessionFactory.getSession().createQuery(hql);query.setShort(0,id);returnquery.executeUpdate()0;OverridepublicbooleandoUpdate(Empvo)throwsExceptionStringhql=UPDATEempASnSETn.ename=?

n.job=?

n.hiredate=?

n.sal=?

m=?

WHEREn.empno=?

;Queryquery=HibernateSessionFactory.getSession().createQuery(hql);query.setShort(1,vo.getEmpno();query.setString(2,vo.getEname();query.setString(3,vo.getJob();query.setDate(4,vo.getHiredate();query.setDouble(5,vo.getSal();query.setDouble(0,vo.getComm();returnquery.executeUpdate()0;OverridepublicEmpfindById(Shortid)throwsExceptionreturn(Emp)HibernateSessionFactory.getSession().get(Emp.class,id);SuppressWarnings(unchecked)OverridepublicListlist()throwsExceptionStringhql=FROMempASn;Queryquery=HibernateSessionFactory.getSession().createQuery(hql);Listall=query.list();returnall;OverridepublicListlist(Stringcolumn,StringkeyWord,IntegercurrentPage,IntegerlineSize)throwsExceptionStringhql=SELECTempno,ename,job,hiredate,sal,comm+FROM+(SELECTempno,ename,job,hiredate,sal,comm,ROWNUMrnWHERE+column+LIKE?

ROWNUM?

;Queryquery=HibernateSessionFactory.getSession().createQuery(hql);query.setString(0,%+keyWord+%);query.setInteger(1,currentPage*lineSize);query.setInteger(2,(currentPage-1)*lineSize);SuppressWarnings(unchecked)Listall=query.list();returnall;OverridepublicIntegergetAllCount(Stringcolumn,StringkeyWord)throwsExceptionStringhql=SELCTCOUNT(empno)FROMempWHERE+column+LIKE?

;Queryquery=HibernateSessionFactory.getSession().createQuery(hql);query.setString(0,%+keyWord+%);returnquery.executeUpdate();建立工厂类DAOFactory.javapackagecn.oracle.factory;importcn.oracle.dao.IEmpDAO;importcn.oracle.dao.impl.EmpDAOImpl;publicclassDAOFactorypublicstaticIEmpDAOgetIEmpDAOInstance()returnnewEmpDAOImpl();建立IEmpService.java接口;packagecn.oracle.service;importjava.util.List;importjava.util.Map;importcn.oracle.pojo.Emp;publicinterfaceIEmpServicepublicbooleaninsert(Empvo)throwsException;publicbooleanupdate(Empvo)throwsException;publicbooleandelete(intid)throwsException;publicEmpget(intid)throwsException;publicListlist()throwsException;publicMaplist(Stringcolumn,StringkeyWord,IntegercurrentPage,IntegerlineSize)throwsException;建立接口IEmpService.java的实现类,EmpServiceImpl.javapackagecn.oracle.service.impl;importjava.util.HashMap;importjava.util.List;importjava.util.Map;importcn.oracle.dbc.HibernateSessionFactory;importcn.oracle.factory.DAOFactory;importcn.oracle.pojo.Emp;importcn.oracle.service.IEmpService;publicclassEmpServiceImplimplementsIEmpServiceOverridepublicbooleaninsert(Empvo)throwsExceptiontryreturnDAOFactory.getIEmpDAOInstance().doCreat(vo);catch(Exceptione)throwe;finallyHibernateSessionFactory.getSession().beginTransaction().commit();HibernateSessionFactory.closeSession();Overridepublicbooleanupdate(Empvo)throwsExceptiontryreturnDAOFactory.getIEmpDAOInstance().doUpdate(vo);catch(Exceptione)throwe;finallyHibernateSessionFactory.getSession().beginTransaction().commit();HibernateSessionFactory.closeSession();Overridepublicbooleandelete(Shortid)throwsExceptiontryreturnDAOFactory.getIEmpDAOInstance().doRemove(id);catch(Exceptione)throwe;finallyHibernateSessionFactory.getSession().beginTransaction().commit();HibernateSessionFactory.closeSession();OverridepublicEmpget(Shortid)throwsExceptiontryreturnDAOFactory.getIEmpDAOInstance().findById(id);catch(Exceptione)throwe;finallyHibernateSessionFactory.getSession().beginTransaction().commit();HibernateSessionFactory.closeSession();OverridepublicListlist()throwsExceptiontryreturnDAOFactory.getIEmpDAOInstance().list();catch(Exceptione)throwe;finallyHibernateSessionFactory.getSession().beginTransaction().commit();HibernateSessionFactory.closeSession();OverridepublicMaplist(Stringcolumn,StringkeyWord,IntegercurrentPage,IntegerlineSize)throwsExceptionMapmap=newHashMap();trymap.put(allEmps,DAOFactory.getIEmpDAOInstance().list(column,keyWord,currentPage,lineSize);map.put(allCount,DAOFactory.getIEmpDAOInstance().getAllCount(column,keyWord);returnmap;catch(Exceptione)throw

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1