欢迎来到得力文库 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
得力文库 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    Hibernate教程.ppt

    • 资源ID:79020265       资源大小:760KB        全文页数:203页
    • 资源格式: PPT        下载积分:11.9金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要11.9金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Hibernate教程.ppt

    Hibernatejava对象持久化技术对象持久化技术Hibernate入门OR映射技术通过HibernateAPI操纵数据库检索策略和方式数据库事务、并发、缓存与性能优化高级配置Hibernate入门入门v案例Hibernate关系数据库Customer类BusinessService类对象关系型映射Hibernate APIHibernate配置文件Customers表Hibernate入门入门v创建配置文件创建配置文件hibernate.dialect=jdbc:oracle:thin:peopres/peopres127.0.0.1:1521:oracle9=peopres=peopreshibernate.show_sql=trueHibernate配置文件配置文件Hibernate入门入门v创建持久化类public class Customer implements Serializable private static final long serialVersionUIDprivate Long id;private String name;private String email;public Customer()public Long getId()return id;public void setId(Long id)this.id=id;public String getName()return name;Hibernate入门入门v创建表createtableCUSTOMER(IDIntegerprimarykey,NAMEvarchar2(15)notnull,EMAILvarchar2(128)notnull,PASSWORDvarchar2(8)notnull,PHONEvarchar2(20),ADDRESSvarchar2(255),SEXchar(2),IS_MARRIEDchar(1),DESCRIPTIONclob,IMAGEblob,BIRTHDAYdate,REGISTERED_TIMEtimestamp);Hibernate入门入门v创建对象-关系映射文件 Hibernate入门入门v把customer持久化类映射到customers表:类和表的映射:持久化类的OID和表主键映射Hibernate入门入门vjava、hibernate、sql类型对应关系Customer类属性类属性javahibernateCutomers字段名字段名Sql类型类型Namejava.lang.StringstringNAMEVarchar(15)PhoneintintPHONEINTSexcharcharacterSEXCHAR(1)MarriedbooleanbooleanIS_MARRIEDBITDescriptionjava.lang.StringtextDESCRIPTIONCLOBimagebytebinaryIMAGEBLOBbirthdayjava.sql.DatedateBIRTHDAYDATEregisteredTimejava.sql.TimeStamptimestampREGISTERED_TIMETIMESTAMPHibernate入门入门v通过API操作数据库Hibernate入门入门v通过API操作数据库Hibernate入门入门vHibernate初始化1、创建configuration对象,把hibernate.properties文件读入内存。2、add()把映射文件读入内存3、buildSessionFactory()数据源。重量级对象。Hibernate入门入门vHibernate初始化访问Session接口save()update()delete()load()find()Hibernate入门入门第一章第一章Java对象持久化概述对象持久化概述v应用程序的分层体系结构数据库应用程序层数据库表述层业务逻辑层双层体系结构三层体系结构表述层:提供与用户交互的GUI(图形用户界面)。业务逻辑层:实现各种业务逻辑。数据库层:负责存放和管理应用的持久性数据。应用程序层:负责生成用户界面的代码和负责业务逻辑的代码 混合在一起。第一章第一章Java对象持久化概述对象持久化概述v应用程序的分层体系结构区分物理层和逻辑层物理分层:每一层运行在单独的机器上,意味着创建分布式软件系统。逻辑分层:在单个的软件模块中完成特定的功能。不作特别说明,软件分层指的是逻辑分层。第一章第一章Java对象持久化概述对象持久化概述v应用程序的分层体系结构软件层的特征1.每个层由一组相关的类或组件构成,共同完成特定功能。2.层与层之间存在自上而下的依赖关系。不存在跨层访问。3.每个层对上层公开API,但具体的实现细节不对外透明。第一章第一章Java对象持久化概述对象持久化概述v应用程序的分层体系结构软件分层的优点1.伸缩性:能否支持更多用户。2.可维护性:需求变化时,影响一部分,不影响其它部分的代码。3.可扩展性:增加薪功能的难以程度。4.可重用性:代码没冗余,满足多种需求。5.可管理性:管理系统的难易程度。第一章第一章Java对象持久化概述对象持久化概述v应用程序的分层体系结构软件分层缺点1.设计人员要求高2.体细结构合理划分,耗时大3.调试困难4.对于规模较小的应用,软件分层会降低开发效率。第一章第一章Java对象持久化概述对象持久化概述v应用程序的分层体系结构Java应用的持久化层表述层业务逻辑层数据库层表述层业务逻辑层持久化层数据库层第一章第一章Java对象持久化概述对象持久化概述vHibernate中间件特性应用1业务逻辑层应用2业务逻辑层应用3业务逻辑层持久化层(hibernate)数据库1数据库2数据库3持久化层封装了数据访问的细节,为业务逻辑层提供了面向对象的API。完善的持久化层应该达到的目标:1.代码重用性高,可完成所有的数据访问操作。2.如果需要的话,能够支持多种数据库平台。3.具有相对独立性,当持久化层变化时,不会影响上层实现。第一章第一章Java对象持久化概述对象持久化概述v软件模型概念模型:模拟问题域中的真实实体。描述每个实体的概念和属性及实体间关系。不描述实体行为。实体间的关系有一对一、一对多和多对多。客户Nameage订单orderNumberprice1*第一章第一章Java对象持久化概述对象持久化概述v软件模型关系数据模型:在概念模型的基础上建立起来的,用于描述这些关系数据的静态结构。有以下内容组成:1.若干表2.表的所有索引3.视图4.触发器5.表与表之间的参照完整性Customers表IDNAMEAGEORDERS表IDCustomerIDOrder_numberprice第一章第一章Java对象持久化概述对象持久化概述v软件模型域模型:在软件的分析阶段创建概念模型,在软件设计阶段创建域模型。组成部分:1.具有状态和行为的域对象。2.域对象之间的关联。第一章第一章Java对象持久化概述对象持久化概述v软件模型域对象(domainobject):构成域模型的基本元素就是域对象。对真实世界的实体的软件抽象,也叫做业务对象(BusinessObject(BO).域对象可代表业务领域中的人、地点、事物或概念。域对象分为以下几种:实体域对象:通常是指业务领域中的名词。(plainoldjavaobject)。过程域对象:应用中的业务逻辑或流程。依赖于实体域对象,业务领域中的动词。如发出订单、登陆等。事件域对象:应用中的一些事件(警告、异常)。第一章第一章Java对象持久化概述对象持久化概述v软件模型域对象间的关系1.关联:类间的引用关系。以属性定义的方式表现。关联可分为一对一、一对多和多对多。还可分为单项关联和双向关联。OrderCustomerv单项关联:仅仅建立从Order到Customer的多对一关联,即仅仅在Order类中定义customer属性。或者仅仅建立从Customer到Order的一对多关联,即仅仅在Customer类中定义orders集合。v双项关联:既建立从Order到Customer的多对一关联,又建立从Customer到Order的一对多关联。单项多对一单项一对多双项多对一第一章第一章Java对象持久化概述对象持久化概述v软件模型域对象间的关系2.依赖:类之间访问关系。无需定义成属性。在A中访问B中的方法或属性,或者A负责实例化B。BusinessServiceCustomer第一章第一章Java对象持久化概述对象持久化概述v软件模型域对象间的关系3.聚集(Aggregation):整体与部分的关系。例人与手的关系。部分类的对象不能单独存在,他的生命周期依赖于整体类的对象的生命周期,整体消失时,部分也随之消失。Personhand:setHand第一章第一章Java对象持久化概述对象持久化概述v软件模型域对象间的关系4.一般化(Generalization):类之间继承关系。EmployeenameHourEmployeerateSalaryEmployeesalary第一章第一章Java对象持久化概述对象持久化概述内存Customer对象order对象数据库持久化重新加载到内存v软件模型域对象的持久化概念实体域对象在内存中创建后,不能永久存在。将实体域对象永久保存起来,就是持久化的过程。通常只有实体域对象需要持久化,过程域对象和事件域对象一般不需要持久化。广义持久化指增、删、改、查。第一章第一章Java对象持久化概述对象持久化概述v直接通过JDBCAPI。第一章第一章Java对象持久化概述对象持久化概述Hibernate是什么是什么面向java环境的对象/关系数据库映射工具。1.开源的持久层框架.2.ORM(Object/RelationalMapping)映射工具,建立面向对象的域模型和关系数据模型之间的映射.3.连接java应用和数据库的中间件.4.对JDBC进行封装,负责java对象的持久化.5.在分层结构中处于持久化层,封装对数据库的访问细节,使业务逻辑层更专注于实现业务逻辑Hibernate历史历史v2001年末,Hibernate的第一个版本发布;v2003年6月,Hibernate2发布,并于年末获得Jolt2004大奖,后被JBOSS收纳为其子项目之一;v2005年3月,Hibernate3正式发布。第一章第一章Java对象持久化概述对象持久化概述Hibernate作用作用vHibernate是Java应用和关系数据库之间的桥梁,它负责Java对象和关系数据之间的映射。vHibernate内部封装了通过JDBC访问数据库的操作,向上层应用提供了面向对象的数据访问API。第一章第一章Java对象持久化概述对象持久化概述第一章第一章Java对象持久化概述对象持久化概述vORM简介对象-关系映射(ORM,即Object-RelationMapping).指单个组件中负责所有实体域对象的持久化,封装数据访问细节。域模型(对象、属性、关联、继承和多态)ORM APIORM 实现关系数据模型(表、字段、索引、主键和外键)业务逻辑层对象-关系映射文件(xml)持久化层数据库层参照ORM 充当业务逻辑层和数据库层之间的桥梁第一章第一章Java对象持久化概述对象持久化概述vORM简介对象-关系映射的概念面向对象概念面向关系概念类表对象表的行(记录)属性表的列(字段)域模型Address类ProvincecitystreetzipcodeCustomer类idnamehomeAddresscomAddress关系数据模型Customer表IDHOME_PROVINCEHOME_CITYCOM_PROVINCECOM_CITY注:域模型中类的数目要比关系数据模型中 表的数目多。第一章第一章Java对象持久化概述对象持久化概述vORM简介ORM中间件的使用方法采用元数据来描述对象-关系映射细节,元数据通常采用xml格式,并存放在专门的对象-关系映射文件中。只要配置了持久化类与表的映射关系,orm中间件在运行时就能够参照映射文件的信息,把域对象持久化到数据库中。public void deleteCustomer(Customer c)Session session=getSession();session.delete(c);执行步骤如下:1.运用反射机制,获得Customer对象的Customer.class类。2.参照映射文件得到Customer类对应的表的信息,以及和Customer类关联的类以及 相应的表信息。3.根据以上信息生成SQL语句。4.调用JDBC API,执行该语句。Hibernate软件包软件包v要使用Hibernate,需要得到Hibernate的jar包和相应的一些第三方包。v在使用Hibernate时,需要用到的是Hibernate.jar和lib目录下的一些第三方jar包。第一章第一章Java对象持久化概述对象持久化概述Hibernate软件包软件包vhibernate3.jar:包含Hibernate3的基础框架和核心API类库,是必须使用的jar包。vcglib-2.1.2.jar:CGLIB库,Hibernate用它来实现PO字节码的动态生成,它是非常核心的库,是必须使用的jar包。vdom4j-1.6.1.jar:dom4j是一个Java的XMLAPI,类似于jdom,用来读写XML文件。vcommons-collections.jar:ApacheCommons包中的一个,包含了一些Apache开发的集合类,功能比java.util.*强大。必须使用的jar包。vcommons-logging.jar:ApacheCommons包中的一个,包含了日至功能,必须使用的jar包。第一章第一章Java对象持久化概述对象持久化概述Hibernate可选包可选包(1)vant-1.6.5.jar:Ant编译工具的jar包,用来编译Hibernate源代码的。它是可选包。vc3po-0.9.0.jar:C3PO是一个数据库连接池,Hibernate可以配置为使用C3PO的连接池,如果准备用这个连接池,就需要这个jar包。vconnector.jar:JCA(JavaCryptographyArchitecture,Java加密架构,java平台中用于访问和开发加密功能的框架)规范,如果在AppServer上把Hibernate配置为Connector,就需要这个jar。一般AppServer都会带上这个包。vjaas.jar:JAAS是用来进行权限验证的,已经包含在JDK1.4里面了。所以它的实际上是多余的包。第一章第一章Java对象持久化概述对象持久化概述Hibernate可选包(可选包(2)vjdbc2_0-stdext.jar:JDBC2.0的扩展包,一般来说数据库连接池会用上它,不过AppServer都会带上它,所以也是多余的。vjta.jar:JTA(java事务处理的机制)规范,当Hibernate使用JTA的时候需要,不过AppServer都会带上它,所以也是多余的。vjunit-3.8.1.jar:Junit包,当运行Hibernate自带的测试代码的时候需要,否则就不用。v和xml-apis.jar:Xerces是XML解析器,xml-apis实际上是JAXP。也是多余的包。第一章第一章Java对象持久化概述对象持久化概述第一章第一章Java对象持久化概述对象持久化概述vHibernateAPI简介1.提供访问数据库操作(session,transaction,query)2.配置hibernate接口(configuratioin)3.回调接口(Interceptor,Lifecycle,Validatable)4.用于扩展的功能接口(UserType,CompositeUserType,IdentifierGenerator)Hibernate对JDBC做了轻量级的封装。所谓轻量级是指Hibernate并没有完全封装JDBC,java应用既可以通过HibernateAPI来访问数据库,还可直接通过JDBC API访问数据库。第一章第一章Java对象持久化概述对象持久化概述vHibernateAPI简介简介Hibernate核心接口1.Configuration配置配置hibernate,根启动,根启动hibernate,创建,创建sessionFactory对象。对象。2.sessionFactory负责创建负责创建Session对象,可以通过对象,可以通过Configuration对象创建对象创建SessionFactory对象。对象。SessionFactory对象中保存了当前的数据库配置信息和所有映射关对象中保存了当前的数据库配置信息和所有映射关系以系以及及预定义的预定义的SQL语句。同时,语句。同时,SessionFactory还负责维护还负责维护Hibernate的二级的二级缓存。缓存。SessionFactory对象的创建会有较大的开销,而且对象的创建会有较大的开销,而且SessionFactory对象对象采取了线程安全的设计方式,因此在实际中采取了线程安全的设计方式,因此在实际中SessionFactory对象可以尽量的共对象可以尽量的共享,在大多数情况下,一个应用中针对一个数据库可以共享一个享,在大多数情况下,一个应用中针对一个数据库可以共享一个SessionFactory实例实例Configurationconfig=newConfiguration().configure();SessionFactoryfactory=config.buildSessionFactory();3.Session使用最广泛,也被称为持久化管理器,它提供和持久化相关的操作。增、删、改、查等。不是线程安全的,因此,一个Session对象只可以由一个线程使用。避免多个线程共享。轻量级的,创建和销毁不需要消耗太多资源。Session中有一个缓存,称为一级缓存。存放当前工作单元加载的对象。Configurationconfig=newConfiguration().configure();SessionFactoryfactory=config.buildSessionFactory();Sessionsession=factory.openSession();第一章第一章Java对象持久化概述对象持久化概述4.Transactionhibernate数据库事务接口,将应用代码从底层的事务实现中抽象出来这可能是一个JDBC事务,一个JTA用户事务或者甚至是一个公共对象请求代理结构(CORBA)允许应用通过一组一致的API控制事务边界。使用Hibernate进行操作时(增、删、改)必须显示的调用Transaction(默认:autoCommit=false)Transactiontx=session.beginTransaction();第一章第一章Java对象持久化概述对象持久化概述5.Query和Criteria接口:都是查询接口,query实例包装了HQL查询语句,hql是面向对象的,他引用类名及类的属性名,而不是表名和字段名。Criteria接口完全封装了基于字符串形式的查询语句,比query接口更面向对象,他擅长执行动态查询。sessoin接口的find方法也具有数据查询功能,但他只是执行一些简单的hql查询语句的快捷方式,远没有query接口功能强大。第一章第一章Java对象持久化概述对象持久化概述回调接口1.Lifecycle和Validatable接口:lifecycle接口能使持久化类响应被加载、保存和删除事件。Validatable接口使持久化类的接口被保存之前进行数据验证。这种方式强迫持久化类实现特定接口,使hibernateAPI渗透到持久化类中,会影响可移植性,不值得推荐。2.Interceptor:不必由持久化类来实现。可定义专门实现该接口的类,负责响应持久化类的实例被加载、保存、更新或删除的事件。第一章第一章Java对象持久化概述对象持久化概述Hibernate映射类型接口1.PrivateType类:映射java基本数据类型,包括ByteType、ShortType、IntegerType、LongType、FloatType、DoubleType、CharactorType、BooleanType。2.DateType:映射java日期类型。3.BinaryType:映射Byte类型。Query.setParameter(“name”,”name”,Hibernate.STRING)第一章第一章Java对象持久化概述对象持久化概述可供扩展的接口hibernate提供的多数功能是可配置的,允许用户选择适当的内置策略。如可配置如下数据库方言:hibernate.dialect=hibernate.dialect=hibernate.dialect=Java对象持久化概述对象持久化概述可供扩展的接口如果hibernate内置的策略不能满足需求时,允许用户自定义实现接口或扩展特定的类。Hibernate的扩展点包括:主键生成策略:IdentifierGeneratorsql方言:Dialect抽象类缓存机制:cache和cacheprovider接口jdbc连接管理器:connectionprovider等Hibernate运行过程运行过程Hibernate的运行过程如下:的运行过程如下:1、应用程序先调用Configuration类,该类读取Hibernate配置文件及映射文件中的信息,2、并用这些信息生成一个SessionFactory对象,3、然后从SessionFactory对象生成一个Session对象,4、并用Session对象生成Transaction对象;A、可通过Session对象的get(),load(),save(),update(),delete()和saveOrUpdate()等方法对PO进行加载、保存、更新、删除、等操作;B、在查询的情况下,可通过Session对象生成一个Query对象,然后利用Query对象执行查询操作;如果没有异常,Transaction对象将提交这些操作到数据库中。应用程序 Configuration SessionFactory Session Query 映 射 文 件.hbm.xmlTransaction配置文件 回滚 提交 数据库 查询异常正常Java对象持久化概述对象持久化概述v小结表现层业务逻辑层持久化层(orm中间件、负责封装数据访问细节)数据库层实体域对象(业务数据)过程域对象(业务逻辑)第二章第二章对象对象-关系映射基础关系映射基础本章解决的问题1.持久化类没有getXXX和setXXX方法。2.持久化类的属性在库中没有对应的字段,或字段没有对应的属性3.控制hibernate的insert、update语句。4.设置从持久化类映射到数据库表,以及持久化类的属性映射到数据库表的字段的命名策略。数据类型对比数据类型对比Java数据类型数据类型Hibernate数据类型数据类型标准标准SQL数据类型数据类型对于不同的对于不同的DB可能有所差异可能有所差异)byte、java.lang.BytebyteTINYINTshort、java.lang.ShortshortSMALLINTint、java.lang.IntegerintegerINGEGERlong、java.lang.LonglongBIGINTfloat、java.lang.FloatfloatFLOATdouble、java.lang.DoubledoubleDOUBLEjava.math.BigDecimalbig_decimalNUMERICchar、java.lang.CharactercharacterCHAR(1)boolean、java.lang.BooleanbooleanBITjava.lang.StringstringVARCHARboolean、java.lang.Booleanyes_noCHAR(1)(Y或或N)boolean、java.lang.Booleantrue_falseCHAR(1)(Y或或N)java.util.Date、java.sql.DatedateDATEjava.util.Date、java.sql.TimetimeTIMEJava数据类型数据类型Hibernate数据类型数据类型标准标准SQL数据类型数据类型对于不同的对于不同的DB可能有所差异可能有所差异)java.util.Date、java.sql.TimestamptimestampTIMESTAMPjava.util.CalendarcalendarTIMESTAMPjava.util.Calendarcalendar_dateDATEbytebinaryVARBINARY、BLOBjava.lang.StringtextCLOBjava.io.SerializableserializableVARBINARY、BLOBjava.sql.ClobclobCLOBjava.sql.BlobblobBLOBjava.lang.ClassclassVARCHARjava.util.LocalelocaleVARCHARjava.util.TimeZonetimezoneVARCHARjava.util.CurrencycurrencyVARCHAR数据类型对比数据类型对比第二章第二章对象对象-关系映射基础关系映射基础v持久化类的属性及访问方法Hibernate中持久化类的访问者有两个:1.Java应用程序2.hibernate(何时调用get、set方法?)Customer对象getXXX()方法setXXX()方法hibernateJava应用程序用户界面数据库Java应用程序不能访问持久化类的private方法,而hibernate没有这个限制,它可以访问各种级别的方法。第二章第二章对象对象-关系映射基础关系映射基础v持久化类的属性及访问方法基本数据类型和包装类型基本数据类型和包装类型对应的hibernate映射类型相同.基本类型可直接运算、无法表达null、数字类型的默认值为0。包装类默认值是null。当对于默认值有业务意义的时候需要使用包装类。第二章第二章对象对象-关系映射基础关系映射基础v持久化类的属性及访问方法Hibernate访问持久化类属性的策略1.property默认值:表明hibernate通过getXXX和setXXX来访问类属性。推荐使用。提高域模型透明性。2.field:hibernate通过java反射机制直接访问类属性。对于没有javabean方法的属性可设置该访问策略。除了设置property属性的access为field和property之外还可以自定义访问策略,需要创建实现.property.PropertyAccessor接口的类.然后把类的完整名字赋值给元素的access属性第二章第二章对象对象-关系映射基础关系映射基础v持久化类的属性及访问方法在持久化类的方法中加入程序逻辑class Customer .private String firstname;private String lastname;public String getName()return firstname+“”+lastname;public void setName(String name)StringTokenizer t=new StringTokenizer(name);firstname=t.nextToken();lastname=t.nextToken();第第二二章章对象对象-关系映射基础关系映射基础v持久化类的属性及访问方法在持久化类的方法中加入程序逻辑在文件中无需映射firstname和lastname属性,而是映射name属性。尽管类中并没有name属性,由于hibernate不是直接访问Name属性,而是调用get、set方法,因此建立了Firstname、Lastname和表之间的联系。HibernategetName()setName()CUSTOMERS表Name字段Customer类firstnamelastname第二章第二章对象对象-关系映射基础关系映射基础v持久化类的属性及访问方法在持久化类的方法中加入程序逻辑不管在类中是否存在name属性,只要在文件中映射了name属性,在hql语句中就能访问他。Session.find(“from customer as c where c.name=tom”)如果改成:后过如何?第二章第二章对象对象-关系映射基础关系映射基础v持久化类的属性及访问方法在持久化类的方法中加入程序逻辑在customer类的setOrders()方法中加入程序逻辑。Public void setOrders(Set orders)this.orders=orders;calprice();Public calprice()setAvgPrice(avgprice);第二章第二章对象对象-关系映射基础关系映射基础v持久化类的属性及访问方法在持久化类的方法中加入程序逻辑在setSex()方法中加入数据验证逻辑Public void setSex(char sex)if(sex!=M&sex!=F)throw new IllegalArgumentException(“Invalid sex”);this.sex=sex;第二章第二章对象对象-关系映射基础关系映射基础v持久化类的属性及访问方法设置派生属性利用元素的formula属性,用来设置一个sql表达式,hibernate将根据它来计算出派生属性的值。另一种方案:在映射文件中不映射属性,在set方法中加入程序逻辑。第二章第二章对象对象-关系映射基础关系映射基础v持久化类的属性及访问方法控制insert、update语句映射属性作用insert属性若为false,在insert语句中不包含该字段,该字段永远不能被插入。默认值true。update属性若为false,update语句不包含该字段,该字段永远不能被更新。默认值为true。mutable属性若为false,等价于所有的元素的update属性为false,整个实例不能被更新。默认为true。dynamic-insert属性若为true,保存一个对象时,会生成动态insert语句,只有这个字段取值不为null才会把它包含到insert语句中。默认为false。dynamic-update属性若为true,更新一个对象时,会生成动态update语句,只有这个字段取值不为null才会把它包含到update语句中。默认为false。dynamic-insert属性若为true,等价于所有的元素的dynamic-insert为true,保存一个对象时,动态生成insert语句,语句中仅包含取值不为null的字段。默认false。dynamic-update属性若为true,等价于所有的元素的dynamic-update为true,更新一个对象时,动态生成update语句,语句中仅包含取值不为null的字段。默认false。第二章第二章对象对象-关系映射基础关系映射基础v处理sql引用标识符v在SQL语法中,标识符是指用于为数据库表、视图、字段或索引等命名的字符串,常规标识符不包括空格,也不包含特殊字符,因此无需使用引用符号。如果数据库表名或列名包含特殊字符,可以使用引用标识符。第二章第二章对象对象-关系映射基础关系映射基础v设置类的包名v如果在一个映射文件中包含多个类,并且这些类位于同一个包中,可以设置元素的package属性,避免为每个类提供完整的类名。第三章第三章映射对象标识符映射对象标识符Java按内存地址区分同一个类的不同对象,关系数据库用主键区分同一个表的不同记录,Hibernate使用OID(对象标识符)来建立内存中的对象和数据库中记录的对应关系。对象的OID和数据库表的主键对应。为保证OID的唯一性和不可变性,应该让Hibernate而不是应用程序来为OID赋值。第三章第三章映射对象表示符映射对象表示符v关系数据库按主键区分不同记录主键必备条件:1.不允许null2.唯一,不重复3.值永远不会改变自然主键:把具有业务含义的字段作为主键叫做自然主键。第三章第三章映射对象表示符映射对象表示符v关系数据库按主键区分不同记录把主键定义为自动增长类型在mySQL中,把字段设为auto_increment类型,数据库会自动为主键付值。在msSQLserver中,把字段设为identity类型,数据库会自动为主键付值。从序列(sequence)中获取自动增长的描述符createsequenceseq_customerincrementby2startwith1insertintocustomersvalues(seq_customer.curval,.)第三章第三章映射对象表示符映射对象表示符vJava语言按内存地址区分不同的对象-equals()和=方法决定引用值是否指向同一对象vequals()在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值。vJava.lang包中的Object类有publicbooleanequals(Objectobj)方法。它比较两个对象是否相等。仅当被比较的两个引用指向同一对象时,对象的equals()方法返回true。v=运算符也进行等值比较。也就是说,对于任何引用值X和Y,当且仅当X和Y指向同一对象时,X=Y返回真。v当两个分离的对象的内容和类型相配的话,String,Date,File类和所有其它overrideequals()的包装类(Integer,Double,等等)将返回真。第三章第三章映射对象标识符映射对象标识符vHibernate中用对象标识符(OID)来区分对象OID是关系数据库中的主键在java对象模型中的等价物。在运行时,hibernate根据OID来维持java对象和数据库记录的对应关系。Customer c1=(Customer)session.load(Customer.class,new Long(1);Customer c2=(Customer)session.load(Customer.class,new Long(1);Customer c3=(Customer)session.load(Customer.class,new Long(3);c1=c2?c1=c3?子元素用来设定标识符生成器。Hibernate提供了标识符生成器接口:,并提供了多种内置的实现。第三章第三章映射对象标识符映射对象标识符标识符生成器描述Increment适用于代理主键。由hibernate自动以递增的方式生成标识符,每次增量为1Identity适用于代理主键。由底层数据库生成标识符。条件是数据库支持自动增长数据类型。Sequence适用于代理主键。Hibernate根据底层数据库序列生成标识符。条件是数据库支持序列。Hilo适用于代理主键。Hibernate根据hign/low算法生成标识符。Hibernate把特定表的字段作为“hign”值。默认情况下,采用hibernate_unique_key表的next_hi字段。Native适用于代理主键。根据底层数据库对自动生成标识符的能力来选择identity、sequence、hiloUuid.hex适用于代理主键。Hibernate采用128位的UUID算法来生成标识符。该算法能够在网络环境中生成唯一的字符串标识符,这种策略并不流行,因为字符串类型的主键比整数类型的主键占用更多的数据库空间。assigned适用于自然主键。由java程序负责生成标识符。不能把setI

    注意事项

    本文(Hibernate教程.ppt)为本站会员(wuy****n92)主动上传,得力文库 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知得力文库 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于得利文库 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

    © 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

    黑龙江省互联网违法和不良信息举报
    举报电话:0468-3380021 邮箱:hgswwxb@163.com  

    收起
    展开