HelloHibernate什么是Hibernate?一个框架一个Java领域的持久化框架一个ORM框架对象的持久化狭义的理解,“持久化”仅仅指把对象永久保存到数据库中广义的理解,“持久化”包括和数据库相关的各种操作:保存:把对象永久保存到数据库中。更新:更新数据库中对象(记录)的状态。删除:从数据库中删除一个对象。查询:根据特定的查询条件,把符合查询条件的一个或多个对象从数据库加载到内存中。加载:根据特定的OID,把一个对象从数据库加载到内存中。为了在系统中能够找到所需对象,需要为每一个对象分配一个唯一的标识号。在关系数据库中称之为主键,而在对象术语中,则叫做对象标识(Objectidentifier-OID).ORMORM(Object/RelationMapping):对象/关系映射ORM主要解决对象-关系的映射ORM的思想:将关系数据库中表中的记录映射成为对象,以对象的形式展现,程序员可以把对数据库的操作转化为对对象的操作。ORM采用元数据来描述对象-关系映射细节,元数据通常采用XML格式,并且存放在专门的对象-关系映射文件中.ORM流行的ORM框架Hibernate:非常优秀、成熟的ORM框架。完成对象的持久化操作Hibernate允许开发者采用面向对象的方式来操作关系数据库。消除那些针对特定数据库厂商的SQL代码MyBatis:相比Hibernate灵活高,运行速度快开发速度慢,不支持纯粹的面向对象操作,需熟悉sql语句,并且熟练使用sql语句优化功能TopLinkOJBHibernate与Jdbc代码对比Hibernate实现JDBC实现Eclipse安装hibernate插件安装方法说明:URL:安装hibernate插件从页面上可以看到,工具分为两种,一种是完整版本的Eclipse插件(左),一种是只支持Jboss社区版的Eclipse插件(只有插件)(右),我们下载右边的,它已经足够使用了。点击Download:Eclipse安装hibernate插件JBoss已经告诉我们下载插件的地址了:URL:安装hibernate插件点击Help--InstallNewSoftware...Eclipse安装hibernate插件点击Add...Eclipse安装hibernate插件在AddSite对话框中,输入name的值为JbossTools,location的值为点击OK按钮Eclipse安装hibernate插件耐心等待,直到出现提示,选择所有与Hibernate有关的,其余不装。去掉Contactallupdatesitesduringinstalltofindrequiredsoftware...上面的勾(一定要去掉,否则安装会很慢),点击nextEclipse安装hibernate插件Eclipse安装hibernate插件点击accept所在的单选按钮,接受协议,点击nextEclipse安装hibernate插件等待安装结束Eclipse安装hibernate插件弹出提示信息,点击OKEclipse安装hibernate插件提示我们Eclipse需要重启以完成安装,点击OKEclipse安装hibernate插件判断安装是否成功的标准是如果Eclipse的new选项里面有Hibernate配置文件的相关选项,就说明安装是成功的。准备Hibernate环境导入Hibernate必须的jar包:加入数据库驱动的jar包:Hibernate开发步骤hibernate.cfg.xml*.hbm.xml2.创建持久化类3.创建对象-关系映射文件4.通过HibernateAPI编写访问数据库的代码1.创建Hibernate配置文件1.创建持久化Java类提供一个无参的构造器:使Hibernate可以使用Constructor.newInstance()来实例化持久化类提供一个标识属性(identifierproperty):通常映射为数据库表的主键字段.如果没有该属性,一些功能将不起作用,如:Session.saveOrUpdate()为类的持久化类字段声明访问方法(get/set):Hibernate对JavaBeans风格的属性实行持久化。使用非final类:在运行时生成代理是Hibernate的一个重要的功能.如果持久化类没有实现任何接口,Hibnernate使用CGLIB生成代理.如果使用的是final类,则无法生成CGLIB代理.重写eqauls和hashCode方法:如果需要把持久化类的实例放到Set中(当需要进行关联映射时),则应该重写这两个方法1.创建持久化Java类Hibernate不要求持久化类继承任何父类或实现接口,这可以保证代码不被污染。这就是Hibernate被称为低侵入式设计的原因hibernate-mappingclassname=cn.edu.nuc.hibernate.helloworld.Newstable=NEWSidname=idtype=java.lang.Integercolumnname=ID/generatorclass=native//idpropertyname=titletype=java.lang.Stringcolumnname=TITLE//propertypropertyname=authortype=java.lang.Stringcolumnname=AUTHOR//propertypropertyname=datetype=java.util.Datecolumnname=DATE//property/class/hibernate-mapping2.创建对象-关系映射文件Hibernate采用XML格式的文件来指定对象和关系数据之间的映射.在运行时Hibernate将根据这个映射文件来生成各种SQL语句映射文件的扩展名为.hbm.xml指定类和表的映射指定持久化类的OID和表的主键的映射映射类的属性和表的字段指定对象标识符生成器,负责为OID生成唯一标识符3.创建Hibernate配置文件Hibernate从其配置文件中读取和数据库连接的有关信息,这个文件应该位于应用的classpath下.指定连接数据库的基本属性信息指定数据库所使用的SQL方言指定程序运行时是否在控制台输出SQL语句指定程序运行时是否在数据库自动生成数据表指定程序需要关联的映射文件指定是否对输出SQL语句进行格式化4.通过HibernateAPI编写访问数据库的代码测试代码(Hibernate5.2.5)//1.创建一个SessionFactory对象StandardServiceRegistrystandardRegistry=newStandardServiceRegistryBuilder().configure(hibernate.cfg.xml).build();Metadatametadata=newMetadataSources(standardRegistry).getMetadataBuilder().build();SessionFactoryBuildersessionFactoryBuilder=metadata.getSessionFactoryBuilder();SessionFactorysessionFactory=sessionFactoryBuilder.build();//2.创建一个Session对象Sessionsession=sessionFactory.openSession();//3.开启事务Transactiontransaction=session.beginTransaction();//4.执行保存操作Newsnews=newNews(Java12345,ATGUIGU,newDate(newjava.util.Date().getTime()));session.save(news);//5.提交事务transaction.commit();//6.关闭Sessionsession.close();//7.关闭SessionFactory对象sessionFactory.close();4.通过HibernateAPI编写访问数据库的代码运行效果:控制台打印输出SQL语句4.通过HibernateAPI编写访问数据库的代码运行效果:数据库增加一张表,表中插入一条字段Helloworld使用Hibernate进行数据持久化操作,通常有如下步骤:编写持久化类:POJO+映射文件获取Configuration对象获取SessionFactory对象获取Session,打开事务用面向对象的方式操作数据库关闭事务,关闭SessionConfiguration类Configuration类负责管理Hibernate的配置信息。包括如下内容:Hibernate运行的底层信息:数据库的URL、用户名、密码、JDBC驱动类,数据库Dialect,数据库连接池等(对应hibernate.cfg.xml文件)。持久化类与数据表的映射关系(*.hbm.xml文件)创建Configuration的两种方式属性文件(hibernate.properties):Configurationcfg=newConfiguration();Xml文件(hibernate.cfg.xml)Configurationcfg=newConfiguration().configure();Configuration的configure方法还支持带参数的访问:Filefile=newFile(“simpleit.xml”);Configurationcfg=newConfiguration().configure(file);SessionFactory接口针对单个数据库映射关系经过编译后的内存镜像,是线程安全的。SessionFactory对象一旦构造完毕,即被赋予特定的配置信息SessionFactory是生成Session的工厂构造SessionFactory很消耗资源,一般情况下一个应用中只初始化一个SessionFactory对象。Hibernate5使用StandardServiceRegistry来获取SessionFactoryHibernate5中创建SessionFactory的步骤Session接口Session是应用程序与数据库之间交互操作的一个单线程对象,是Hibernate运作的中心,所有持久化对象必须在session的管理下才可以进行持久化操作。此对象的生命周期很短。Session对象有一个一级缓存,显式执行flush之前,所有的持久层操作的数据都缓存在session对象处。相当于JDBC中的Connection。Session接口持久化类与Session关联起来后就具有了持久化的能力。Session类的方法:取得持久化对象的方法:get()load()持久化对象都得保存,更新和删除:save(),update(),saveOrUpdate(),delete()开启事务:beginTransaction().管理Session的方法:isOpen(),flush(),clear(),evict(),close()等Transaction(事务)代表一次原子操作,它具有数据库事