仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 879|回复: 8
打印 上一主题 下一主题

[学习教程] MSSQL教程之Eclipse疾速上手Hibernate--1. 进门实例...

[复制链接]
透明 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:40:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
上面我们说了DML的闪回方案。但对于DDL却无能为力,对于大多数的DDL,即使是rowbase格式,二进制日志binlog中仍只记录语句本身。对于删表操作,只记录一个语句droptablet。仅凭这句话,无法还原表的数据。这篇文章次要谈谈Hibernate的进门开辟,例子很复杂,就是向数据表中增加用户名和暗码。我分离利用了三种办法,一种是间接写代码,写Hbm映照文件等;一种是经由过程Hbm映照文件来天生代码;一种是经由过程代码来天生Hbm映照文件。利用了一些主动化工具,XMLBuddy是用来编纂XML文件的,JBossEclipseIDE是用来编写Doclet标志的。这篇文章还谈到了一些Eclipse的利用技能,好比创建“用户库”、“天生Getter和Setter”等。关于一些软件的利用技能,我之前的文章都有说起,这里未几说了,需要时会提醒一下。1、下载、安装和设置1.所需软件●Ant1.6.2http://ant.apache.org下载http://mirror.apache.or.kr/ant/binaries/apache-ant-1.6.2-bin.zip●Eclipse3.0.1及言语包参考:http://blog.csdn.net/javamxj/archive/2004/10/11/131952.aspx●XDoclet1.2.2http://xdoclet.sourceforge.net/xdoclet/下载http://prdownloads.sourceforge.net/xdoclet/xdoclet-bin-1.2.2.zip?download●XMLBuddyhttp://www.xmlbuddy.com/下载XMLBuddy2.0.38●JBossEclipseIDEhttp://www.jboss.org/products/jbosside看看申明,必要选择与利用的eclipse绝对应的版本,这里选择JBossIDE-1.4.1-e30.zip,这是它的镜像下载地点:http://prdownloads.sourceforge.net/jboss/JBossIDE-1.4.1-e30.zip?download●Hibernatehttp://www.hibernate.org/下载Hibernate2.1.8http://prdownloads.sourceforge.net/hibernate/hibernate-2.1.8.zip?download同时也要把HibernateExtensions2.1.3下载了,它包括一些工具类。下载http://prdownloads.sourceforge.net/hibernate/hibernate-extensions-2.1.3.zip?download●MySQL4.1.8参考:http://blog.csdn.net/javamxj/archive/2005/01/13/251861.aspx注重必要mysql-connector-java-3.0.16-ga-bin.jar文件2.安装和设置这里侧重指出一下,必要在情况变量中设置ANT_HOME,并将其指向Ant安装目次,还要在Path变量值中增加“%ANT_HOME%in;”能够参考java情况变量设置。·XMLBuddy和Jboss-ide我都是接纳links体例安装的,参考http://blog.csdn.net/javamxj/archive/2004/10/11/132311.aspx●创建库文件夹:在D盘下新建一个java目次,在此目次下新建一个Hibernate子目次,在此子目次下再新建一个lib子目次。D:-java-Hibernate-lib·将下载的hibernate-2.1.8.zip解压,如解压后的目次名为hibernate-2.1,将这个目次下的hibernate2.jar复制到先前创建的lib目次下,即D:javaHibernatelib目次;·然后将hibernate-2.1目次下的lib子目次中的以下文件也复制到这个lib目次下:jta.jarcglib-full-2.0.2.jarcommons-collections-2.1.1.jarcommons-logging-1.0.4.jar
commons-lang-1.0.1.jar
dom4j-1.4.jarehcache-0.9.jarlog4j-1.2.8.jarodmg-3.0.jar·解压hibernate-extensions-2.1.3.zip,将其子目次tools中的hibernate-tools.jar和子目次lib中的velocity-1.3.1.jar、jdom.jar也复制到D:javaHibernatelib目次中·解压xdoclet-bin-1.2.2.zip,将其子目次lib中的xdoclet-1.2.2.jar、xdoclet-hibernate-module-1.2.2.jar、xjavadoc-1.1.jar、xdoclet-xdoclet-module-1.2.2.jar也复制到D:javaHibernatelib目次中·最初将mysql-connector-java-3.0.16-ga-bin.jar文件复制到这个lib目次下。如许,必要用到的库文件已筹办好了,假如以为如许对照贫苦,也能够将jar文件全体复制到lib目次。上面先容怎样在Eclipse中设置“用户库”。●设置“用户库”·窗口->首选项->Java->构建路径->用户库,·然后单击“增加JAR”如许,一个用户库文件就做好了,假如要更新Eclipse时,能够将其先导出,然后再导进便可。如许做,对库文件便于办理,并且假如必要交换大概晋级的话都对照便利。




●设置“构建路径”



·点击菜单“窗口”->首选项,以下都在“首选项”中设置:
Java->构建路径●更新xdoclet-hibernate-module将XDoclet1.2.2中的xdoclet-hibernate-module-1.2.2.jar复制到JBossIDE-1.4.1-e30eclipsepluginsorg.jboss.ide.eclipse.xdoclet.core_1.4.1目次中,而且删除其目次下的xdoclet-hibernate-module-1.2.1.jar文件,然后在eclipse界面中,窗口->首选项->JBoss-IDE->XDoclet->CodeAssist:点击右边的“RefreshXDocletData”栏,便可完成更新。假如要交换别的的模块,步骤与此相似。2、项目理论这里以一个复杂的程序来树模Hibernate的设置与功效,在这个例子中的一些操纵,实践上会利用一些主动化工具来完成,而纷歧订婚自手动操纵设定,这边完整手动的缘故原由,在于让你能够晓得Hibernate的基础流程。这是全部项目标布局:好了,上面就入手下手创立项目了。1.创立项目·新建一个Java项目:HibernateBegin_1,注重选中“创立独自的源文件夹和输入文件夹”。点击“下一步”,切换到“库”,点击“增加库”,以下图:·选择“用户库”·勾选先前设置好的hibernate用户库。2.创建可耐久化类·上面入手下手创立一个新类:User;包名:javamxj.hibernate;然后增加三个变量(斜体),代码以下:
/**接纳惯例办法开辟一个复杂的Hibernate实例*创立日期2005-3-31*@authorjavamxj(分享java康乐)*@linkBlog:htpp://javamxj.mblogger.cn*htpp://blog.csdn.net/javamxj/*/packagejavamxj.hibernate;publicclassUser{privateintid;privateStringusername;privateStringpassword;}
·点击工具栏上的“源代码(S)”,选择个中的“天生Getter和Setter”(右击,在弹出菜单也可选择),如图:点击“断定”后,天生以下代码:
/**接纳惯例办法开辟一个复杂的Hibernate实例*创立日期2005-3-31*@authorjavamxj(分享java康乐)*@linkBlog:htpp://javamxj.mblogger.cn*htpp://blog.csdn.net/javamxj/*/packagejavamxj.hibernate;publicclassUser{privateintid;privateStringusername;privateStringpassword;publicintgetId(){returnid;}publicvoidsetId(intid){this.id=id;}publicStringgetPassword(){returnpassword;}publicvoidsetPassword(Stringpassword){this.password=password;}publicStringgetUsername(){returnusername;}publicvoidsetUsername(Stringusername){this.username=username;}}
好了,这个类完成了。它是一个一般的Java工具(PlainOldJavaObjects,就是POJOs,偶然候也称作PlainOrdinaryJavaObjects),暗示一个数据汇合。上面创建一个Hbm文件将这个类映照到数据库的表格上。3.映照文件在javamxj.hibernate包下,新建一个称号为“User.hbm.xml”的文件,利用XMLBuddy编纂它(参考:使用XMLBuddy在Eclipse中开辟XML),如许对照便利。文件内容以下:
<?xmlversion="1.0"encoding="GBK"?><!DOCTYPEhibernate-mappingPUBLIC"-//Hibernate/HibernateMappingDTD//EN""http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd"><hibernate-mapping><classname="javamxj.hibernate.User"table="UserTable"><idname="id"><generatorclass="assigned"/></id><propertyname="username"/><propertyname="password"/></class></hibernate-mapping>
这个XML文件界说了工具属性映照到数据库表的干系,这里接纳了assigned(程序设置)体例天生主键。固然还可使用别的的体例来发生主键,前面的文章就接纳了别的的体例发生主键。<property>标签用于界说Java工具的属性,这里只界说了最复杂的体例,由Hibernate主动判别Java工具属性与数据库表称号对应干系。在<property/>标签上的分外设定(像是notnull、sql-type等),则能够用于主动发生Java工具与数据库表的工具上。4.设置文件Hibernate可使用XML或属性文件来举行设置,设置文件名默许为“hibernate.cfg.xml”(大概hibernate.properties)。在src目次下,新建一个hibernate.cfg.xml文件,内容以下:
<?xmlversion=1.0encoding=GBK?><!DOCTYPEhibernate-configurationPUBLIC"-//Hibernate/HibernateConfigurationDTD//EN""http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd"><hibernate-configuration><session-factory><!--是不是将运转期天生的SQL输入到日记以供调试--><propertyname="show_sql">true</property><!--SQL方言,这里设定的是MySQL--><propertyname="dialect">net.sf.hibernate.dialect.MySQLDialect</property><!--JDBC驱动程序--><propertyname="connection.driver_class">com.mysql.jdbc.Driver</property><!--JDBCURL,"?useUnicode=true&characterEncoding=GBK"暗示利用GBK举行编码--><propertyname="connection.url">jdbc:mysql://localhost:3306/HibernateTest?useUnicode=true&characterEncoding=GBK</property><!--数据库用户名--><propertyname="connection.username">root</property><!--数据库暗码--><propertyname="connection.password">javamxj</property><!--指定User的映照文件--><mappingresource="javamxj/hibernate/User.hbm.xml"/></session-factory></hibernate-configuration>
注重:这里利用的是“jdbc:mysql://localhost:3306/HibernateTest?useUnicod...”中的HibernateTest数据库,你必要在MySql中创建这个数据库。5.测试程序在javamxj.hibernate包下,新建一个Test类,内容以下:
/**复杂测试一下User类*创立日期2005-3-31*@authorjavamxj(分享java康乐)*/packagejavamxj.hibernate;importnet.sf.hibernate.*;importnet.sf.hibernate.cfg.*;publicclassTest{publicstaticvoidmain(String[]args){try{SessionFactorysf=newConfiguration().configure().buildSessionFactory();Sessionsession=sf.openSession();Transactiontx=session.beginTransaction();Useruser=newUser();user.setUsername("Blog");user.setPassword("分享java康乐");session.save(user);tx.commit();session.close();}catch(HibernateExceptione){e.printStackTrace();}}}
这里复杂说说一下游程,起首初始化Configuration,加载Hibernate的设置信息,然后Configuration获得SessionFactory工具,并由它来开启一个Session,它代表工具与表格的一次会话操纵,而Transaction则暗示一组会话操纵,我们只必要间接操纵User工具,并举行Session与Transaction的相干操纵,Hibernate就会主动完成对数据库的操纵。6.设置数据库在运转测试程序之前,还必需先设置好数据库。在MySQL中创建一个HibernateTest数据库,并创建UserTable表,SQL语句以下:CREATETABLEusertable(IDint(6)NOTNULLauto_increment,usernamevarchar(24)NOTNULLdefault,passwordvarchar(24)NOTNULLdefault,PRIMARYKEY(ID));CREATETABLEusertable(IDint(6)NOTNULLauto_increment,usernamevarchar(24)NOTNULLdefault,passwordvarchar(24)NOTNULLdefault,PRIMARYKEY(ID));这里,HibernateTest与hibernate.cfg.xml设置文件中的HibernateTest绝对应,UserTable与hbm映照文件中的UserTable绝对应。7.运转程序右击Test.java,点击运转,能够看到把持台输入一系列信息,最初一条输入语句应当是:Hibernate:insertintoUserTable(username,password,id)values(?,?,?)鄙人篇文章中会先容怎样使用log4j来把持输入信息。同时,在数据库中能够看到,数据已增加进内外了:小结:Hibernate道理方面我不想多说,实践上晓得也未几,何况这方面的材料良多,好比Hibernate自己自带的中文文档、夏昕编写的《Hibernate开辟指南》、良葛格编写的“Hibernate进门”等都长短常不错的,如今关于Hibetnate的书本也多了起来。我所作的事情就是要使老手能尽快上手Hibernate,实际方面我不想过量胶葛,只管以实例措辞。我想,与其平空说一个手艺多很多多少好,倒不如给我一个能够上手的实例操纵一下。好了,未几说空话了。 小结:Hibernate道理方面我不想多说,实践上晓得也未几,何况这方面的材料良多,好比Hibernate自己自带的中文文档、夏昕编写的《Hibernate开辟指南》、良葛格编写的“Hibernate进门”等都长短常不错的,如今关于Hibetnate的书本也多了起来。我所作的事情就是要使老手能尽快上手Hibernate,实际方面我不想过量胶葛,只管以实例措辞。我想,与其平空说一个手艺多很多多少好,倒不如给我一个能够上手的实例操纵一下。好了,未几说空话了。 Merge将一定数量的MyISAM表联合而成一个整体,在超大规模数据存储时很有用
金色的骷髅 该用户已被删除
沙发
发表于 2015-1-19 21:09:00 | 只看该作者
XML字段类型更好的解决了XML数据的操作。XQuery确实不错,但是个人对其没好感。(CSDN的开发者应该是相当的熟了!)
冷月葬花魂 该用户已被删除
板凳
发表于 2015-1-25 23:23:57 | 只看该作者
如果我们从集合论(关系代数)的角度来看,一张数据库的表就是一组数据元的关系,而每个SQL语句会改变一种或数种关系,从而产生出新的数据元的关系(即产生新的表)。
第二个灵魂 该用户已被删除
地板
发表于 2015-2-4 13:14:58 | 只看该作者
原理很简单,对要求长时间计算某一时间点的报表生成和防用户操作错误很有帮助。但是比起Oracle10g的闪回技术还是细粒度不够。可惜!
若相依 该用户已被删除
5#
发表于 2015-2-9 23:20:39 | 只看该作者
varchar(max)\\\\nvarchar(max)类型的引入大大的提高了编程的效率,可以使用字符串函数对CLOB类型进行操作,这是一个亮点。
因胸联盟 该用户已被删除
6#
发表于 2015-2-28 04:42:26 | 只看该作者
语句级快照和事务级快照终于为SQLServer的并发性能带来了突破。个人感觉语句级快照大家应该应用。事务级快照,如果是高并发系统还要慎用。如果一个用户总是被提示修改不成功要求重试时,会杀人的!
小妖女 该用户已被删除
7#
发表于 2015-3-9 21:08:36 | 只看该作者
大家注意一点。如下面的例子:
透明 该用户已被删除
8#
 楼主| 发表于 2015-3-17 01:09:16 | 只看该作者
一个是把SQL语句写到客户端,可以使用DataSet进行加工;
精灵巫婆 该用户已被删除
9#
发表于 2015-3-23 13:16:33 | 只看该作者
其中最有名的应该是row_number了。这个终于解决了用临时表生成序列号的历史,而且SQLServer2005的row_number比Oracle的更先进。因为它把Orderby集成到了一起,不用像Oracle那样还要用子查询进行封装。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-22 23:11

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表