应用Hibernate技框架术示例

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

构建Web项目或者J2SE应用项目1、在Java应用中使用Hibernate包含以下步骤(1)创建Hibernate的数据库连接的配置文件(hibernate.cfg.xml)----为了达到连接数据库,提供数据库连接信息。(2)创建持久化类(PO)----代表我们的数据逻辑。(3)创建对象(PO)---关系映射(数据库表)文件----O/RMapping。(4)通过Hibernate框架级的API编写访问数据库的代码(DAO组件)。下面通过一个简单的JavaApplication程序的应用开发实现,演示如何运用Hibernate来访问关系数据库。该应用的功能非常简单:通过Hibernate保存、更新、删除、加载及查询Book对象。2、在Eclipse中新建一个Project,名称为J2SEAppByHibernate3、在该Project中增加一个J2SE的JavaApplication程序类名称为J2SEAppORMapping,包名称为com.px1987.sshwebcrm.model。将产生一个空的程序,并添加测试代码。packagecom.px1987.sshwebcrm.model;publicclassJ2SEAppORMapping{//可以将它看成为我们的系统的业务层组件publicJ2SEAppORMapping(){}publicstaticvoidmain(String[]args){newJ2SEAppORMapping();}}在项目中添加与Hibernate有关的各种*.jar包的库(构建出Hibernate的环境)1、将Hibernate的库文件放到Web应用的/WEB-INF/lib目录中----针对Hibernate3.2以前的版本(1)下载Hibernate的系统并解压缩包然后将下面的各个*.lib库文件(总共10文件)在Eclipse中导入放到Web应用的/WEB-INF/lib目录中。antlr-2.7.5H3.jar、cglib-2.1.2.jar、asm.jar、commons-collections-2.1.1.jar、commons-logging.jar(在Struts中已经包含有,可以不再需要它)、ehcache.jarhibernate3.jar、jta.jar、dom4j-1.6.1.jar和log4j-1.2.11.jar、c3p0-0.9.1.jar。(2)最后为下面的状态2、将Hibernate的库文件放到Web应用的/WEB-INF/lib目录中----针对Hibernate3.3版本(1)下载Hibernate3.3的系统并解压缩包(2)下载SLF4J()3、hibernate3.3.2的系统包文件的结构与前面的各个版本的文件结构发生了变化。(1)然后将下面的各个*.lib库文件(总共13文件)在Eclipse中导入放到Web应用的/WEB-INF/lib目录中。antlr-2.7.6.jar、cglib-2.2.jar、commons-collections-3.1.jar、commons-logging-1.0.4.jar(在Struts中已经包含有,可以不再需要它)、javassist-3.9.0.GA.jar、ehcache-1.2.3.jarhibernate3.jar、jta-1.1.jar、dom4j-1.6.1.jar和log4j-1.2.15.jar、slf4j-api-1.5.8.jar和slf4j-simple-1.5.8.jar和c3p0-0.9.1.jar。(2)最后为下面的状态4、同时还保证在本Project中还应该包含有MySQL的JDBC驱动程序的库mysql-connector-java-5.1.6-bin.jar如果项目中的数据库是Oracle数据库,则应该添加下面的系统库连接数据库系统---构建Hibernate的数据库连接环境1、设计数据库表(1)设置数据库中的各个主键(2)提供一些测试用的数据2、为本程序提供hibernate.cfg.xml文件(不需要hibernate.properties文件)Hibernate从其配置文件中读取和数据库连接有关的信息,这个配置文件应该位于应用的classpath中(对于Web项目为WEB-INF/classes目录)。提高该配置文件实现连接指定的数据库。(1)放到src的目录下指定文件名称为hibernate.cfg.xml将进入MyEclipse中的Hibernate的可视化状态可以可视化化的方式进行配置(2)内容为下面的?xmlversion='1.0'encoding='gb2312'?!DOCTYPEhibernate-configurationPUBLIC-//Hibernate/HibernateConfigurationDTD//EN=dialectorg.hibernate.dialect.MySQLDialect/propertypropertyname=connection.driver_classcom.mysql.jdbc.Driver/propertypropertyname=connection.urljdbc:mysql://localhost:3306/DataBase/propertypropertyname=connection.usernameroot/propertypropertyname=connection.passwordroot/propertypropertyname=show_sqltrue/property!--将Hibernate发送给数据库的sql显示出来--mappingresource=Book.hbm.xml/!--实体映射文件--/session-factory/hibernate-configuration3、配置log4j.properties属性文件(1)配置一个日志系统Hibernate使用Apachecommons-logging来为各种事件记录日志,commons-logging将直接输出到ApacheLog4j(如果在类路径中包括log4j.jar)或JDK1.4logging(如果运行在JDK1.4或以上的环境下);这允许我们在Log4j和JDK1.4logging之间进行选择。但多数开发者喜欢Log4j。(2)配置log4j.properties属性文件从Hibernate的分发版(它在etc/目录下)拷贝log4j.properties与hibernate.cfg.xml.放在一起。内容如下:log4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.Target=System.outlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE}%5p%c{1}:%L-%m%nlog4j.rootLogger=warn,stdoutlog4j.logger.org.hibernate=infolog4j.logger.org.hibernate.type=infolog4j.logger.org.hibernate.tool.hbm2ddl=debug(3)缺省情况下,只有Hibernate的启动信息会显示在标准输出上在应用系统运行过程中,可以观察Hibernate的提示内容。实现对PO类和数据库表之间的映射1、编写和实现本例中的PO类(1)添加一个PO类---类名称为Book,包名称为com.px1987.sshwebcrm.dao.pobject;(2)在该类中增加各个属性,并提供get/set方法privateStringid;privateStringbookName;privatecharbookKind;privatefloatbookPrice;(3)最后的代码为下面的状态packagecom.px1987.sshwebcrm.dao.pobject;importjava.util.*;publicclassBook{privateStringid;privateStringbookName;privatecharbookKind;privatefloatbookPrice;publicBook(){}publicStringgetId(){returnid;}privatevoidsetId(Stringid)//?{this.id=id;}publicStringgetBookName(){returnbookName;}publicvoidsetBookName(StringnewBookName){this.bookName=newBookName;}publicchargetBookKind(){returnbookKind;}publicvoidsetBookKind(charnewBookKind){this.bookKind=newBookKind;}publicfloatgetBookPrice(){returnbookPrice;}publicvoidsetBookPrice(floatnewBookPrice){this.bookPrice=newBookPrice;}@OverridepublicinthashCode(){finalintPRIME=31;intresult=1;result=PRIME*result+bookKind;result=PRIME*result+((bookName==null)?0:bookName.hashCode());result=PRIME*result+Float.floatToIntBits(bookPrice);result=PRIME*result+((id==null)?0:id.hashCode());returnresult;}@Overridepublicbooleanequals(Objectobj){if(this==obj)returntrue;if(obj==null)returnfalse;if(getClass()!=obj.getClass())returnfalse;finalBookother=(Book)obj;if(bookKind!=other.bookKind)returnfalse;if(bookName==null){if(other.bookName!=null)returnfalse;}elseif(!bookName.equals(other.bookName))returnfalse;if(Float.floatToIntBits(bookPrice)!=Float.floatToIntBits(other.bookPrice))returnfalse;if(id==null){if(other.id!=null)returnfalse;}elseif(!id.equals(other.id))returnfalse;returntrue;}}注意:OOP倡导的是基于setter/getter的方法访问,而非直接访问域。因此其各个属性设置为private。而其中的equals和hashCode方法可以采用Ec

1 / 28
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功