您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 最有价值的hibernate配置文件
经典hibernate配置详解2008-09-0920:29:29标签:Hibernate配置JAVA框架meta元素的属性属性描述class-description指定描述类的javaDocfield-description指定描述类的属性javaDocinterface如果为true,表明生成接口而非类,默认falseimplements指定类所实现的接口extends指定继承的父类名generated-class重新指定生成的类名scope-class指定类的修饰符,默认publicscope-set指定set方法的修饰符,默认publicscope-get指定get方法的修饰符,默认publicscope-field指定类的属性的修饰符,默认privateuse-in-toString如果为true,表示在toString()方法中包含此属性gen-property如果为false,不会在java类中生成此属性,默认truefinder-method指定find方法名column元素属性name设定字段名字length设定字段长度not-null如为true,指名该字段不允许为null,默认falseunique如为true,指名该字段具有唯一约束,默认falseindex给一个或多个字段建立索引unique-key为多个字段设定唯一约束foreign-key为外键约束命名,在many-to-manyone-to-onekeymany-to-one元素中包含foreign-key属性,在双向关联中,inverse属性为true的一端不能设置foreign-keysql-type设定字段sql类型check设定sql检查约束用于控制insertorupdate语句的映射属性property元素的insert属性如为false,在insert中不包含该字段,默认为trueproperty元素的update属性如为false,在update中不包含该字段,默认为trueclass元素的mutable属性如为false,等价于所有字段的update属性为false,默认为trueproperty元素的dunameic-insert属性如为true,表明动态生成insert语句,只有不为null,才会包含insert语句中,默认falseproperty元素的dunameic-update属性如为true,表明动态生成update语句,只有不为null,才会包含insert语句中,默认falseclass元素的dunameic-insert属性如为true,表明等价于所有字段动态生成insert语句,只有不为null,才会包含insert语句中,默认falseclass元素的dunameic-update属性如为true,表明等价于所有字段动态生成update语句,只有不为null,才会包含insert语句中,默认falseHibernate提供的内置标识符生成器increment适用于代理主键,自动递增,增1(只能是long,int,short)identity适用于代理主键,底层数据库自动增长字段类型(数据库需支持,只能是long,int,short)(oralce)sequence适用于代理主键,根据底层数据库的序列来生成标识符(数据库支持序列,只能是long,int,short)hilo适用于代理主键,根据high/low算法来生成.Hibernate把特定表的字段作为high值,在默认情况下选用hibernate_unique_key表的next_hi字段(mysql,mssql)native适用于代理主键,根据数据库自动生成标识符支持能力,来选择identity,sequence,hilouuid.hex适用于代理主键,采用128位UUID(universaluniqueidentification)算法来生成标识.此算法能在网络环境中生成唯一的字符串标识符,(不建议使用,字符串类型比整形类型的主键占用更多的空间)assigned适用于自然主键,由java程序负责生成.hibernate-mappingclassname=项目路径table=库中对应表名schema=dbocatalog=netoametaattribute=class-description指定描述类的javaDoc/metametaattribute=class-scope指名类的修饰类型/metametaattribute=extends指定继承类/metaidname=bgrkbhtype=longcolumnname=BGRKBHprecision=15scale=0sql-type=库中类型check=BGRKBH10/metaattribute=scope-set指定类,类属性的getxxx(),setxxx()方法的修饰符包括:static,final,abstract,public,protected,private/metageneratorclass=assigned//idpropertyname=Class.fileNametype=longcolumnname=YSLXprecision=精度scale=刻度not-null=默认falsesql-type=数据库中类型/附加属性不会影响Hibernate的运行行为metaattribute=field-description指定描述类的javaDoc/meta指定描述类属性的javaDoc/property/class/hibernate-mapping注意:1Session的commit()和flush()方法的区别,flush()方法进行清理缓存的操作,执行一系列的SQL语句,但不会提交事务;commit()方法会先调用flush(),然后提交事务.提交事务意味着对数据库所作的更新被永久保存下来.2Session的setFlushMode()方法用于设定清理缓存的时间点.FlushMode类定义了三种不同的清理模式清理缓存的模式Session的查询方法Session的commit()方法Session的flush()方法FlushMode.AUTO清理清理清理FlushMode.COMMIT不清理清理清理FlushMode.NEVER不清理不清理清理3Hibernate应用中java对象的状态临时状态(transient):刚刚用new语句创建,还没被持久化,不处与Session的缓存中,处于临时状态的java对象被称为临时对象.持久化状态(persistent):已经被持久化,加入session的缓存中.处于持久化状态的java对象被称为持久化对象.游离状态(detached):已经被持久化,但不在处于session的缓存中.处于游离状态的java对象被称为游离对象.(注意:::::)持久化类与持久化对象是不同的概念.持久化类的实例可以处于临时状态,持久化状态和游离状态.其中处于持久化状态的实例被称为持久化状态.临时对象的特性:1不处于缓存中,也可以说,不被任何一个Session实例关联2在数据中没有对应的纪录.在此情况下,java对象进入临时状态1当通过new创建一个对象时,此时不和数据库中的任何纪录的ex:对象的状态转化过程程序代码对象的生命周期对象的状态tx=session.beginTransaction();Objectobj=newObject(tow,newHashSet());开始生命周期临时状态session.save(obj);处于生命周期转化为持久状态Longid=obj.getId();obj=null;Objectobj2=(Object)session.load(Object.class,id);处于生命周期处于持久化状态tx.commit();session.close();处于生命周期转变成游离状态System.out.print(obj2.getName());处于生命周期处于游离状态obj2=null;结束生命周期结束生命周期4cascade属性cascade属性值描述none在保存更新时,忽略其他关联对象,他是cascade默认属性save-update当通过Session的save(),update()以及saveOrUpdate()方法来保存或更新当前对象时,及联保存所有关联的新建的临时对象,并且及联更新所有关联的游离对象delete当通过session的delete()方法删除当前对象时,及联删除所有对象all包含save-update及delete行为,此外对当前对象执行evict()或lock()操作时,也会对所有关联的持久化对象执行evict()或lock()操作delete-orphan删除所有和当前对象解除关联关系的对象all-delete-orphan包含all和delete-orphan5Hibernate映射类型,对应的java基本类型及对应的标准SQL类型Hibernate映射类型java类型标准SQL类型integer或者intintINTEGERlonglongBIGINTshortshortSMALLINTbytebyteTINYINTfloatfloatFLOATdoubledoubleDOUBLEbig_decimaljava.math.BigDecimalNUMERICcharactercharandstringCHARstringstringVARCHARbooleanbooleanBITHibernate映射类型,对应的java时间和日期类型及对应的标准SQL类型映射类型java类型标准SQL类型描述datejava.util.Date或者java.sql.DateDATE代表日期,YYYY-MM-DDtimejava.util.Date或者java.sql.DateTIME代表时间,形式为HH:MM:SStimestampjava.util.Date或者java.sql.TimestampTIMESTAMP代表日期和时间,YYYYMMDDHHMMSScalendarjava.util.CalendarTIMESTAMP同上calendar_datejava.util.CalendarDATE代表日期,YYYY-MM-DD
本文标题:最有价值的hibernate配置文件
链接地址:https://www.777doc.com/doc-625845 .html