hibernate

hibernate配置详解【转载】

 

  1. <meta>元素的属性   
  2.   
  3. 属性 描述   
  4.   
  5. class-description 指定描述类的javaDoc   
  6.   
  7. field-description 指定描述类的属性javaDoc   
  8.   
  9. interface 如果为true,表明生成接口而非类,默认false   
  10.   
  11. implements 指定类所实现的接口   
  12.   
  13. extends 指定继承的父类名   
  14.   
  15. generated-class 重新指定生成的类名   
  16.   
  17. scope-class 指定类的修饰符,默认public   
  18.   
  19. scope-set 指定set方法的修饰符,默认public   
  20.   
  21. scope-get 指定get方法的修饰符,默认public   
  22.   
  23. scope-field 指定类的属性的修饰符,默认private   
  24.   
  25. use-in-toString 如果为true,表示在toString()方法中包含此属性   
  26.   
  27. gen-property 如果为false,不会在java类中生成此属性,默认true   
  28.   
  29. finder-method 指定find方法名   
  30.   
  31. <column>元素属性   
  32.   
  33. name 设定字段名字   
  34.   
  35. length 设定字段长度   
  36.   
  37. not-null 如为true,指名该字段不允许为null,默认false   
  38.   
  39. unique 如为true,指名该字段具有唯一约束,默认false   
  40.   
  41. index 给一个或多个字段建立索引   
  42.   
  43. unique-key 为多个字段设定唯一约束   
  44.   
  45. foreign-key 为外键约束命名,在<many-to-many><one-to-one><key><many-to-one>元素中包含   
  46.   
  47. foreign-key属性,在双向关联中,inverse属性为true的一端不能设置foreign-key   
  48.   
  49. sql-type 设定字段sql类型   
  50.   
  51. check 设定sql检查约束   
  52.   
  53. 用于控制insert or update 语句的映射属性   
  54.   
  55. <property>元素的insert属性 如为false,在insert中不包含该字段,默认为true   
  56.   
  57. <property>元素的update属性 如为false,在update中不包含该字段,默认为true   
  58.   
  59. <class>元素的mutable属性 如为false,等价于所有字段的update属性为false,默认为true   
  60.   
  61. <property>元素的dunameic-insert属性 如为true,表明动态生成insert语句,只有不为null,才会包含insert语句中,默认false   
  62.   
  63. <property>元素的dunameic-update属性 如为true,表明动态生成update语句,只有不为null,才会包含insert语句中,默认false   
  64.   
  65. <class>元素的dunameic-insert属性如为true,表明等价于所有字段动态生成insert语句,只有不为null,才会包含insert语句中 ,默认false   
  66.   
  67. <class>元素的dunameic-update属性如为true,表明等价于所有字段动态生成update语句,只有不为null,才会包含insert语句中 ,默认false   
  68.   
  69. Hibernate提供的内置标识符生成器   
  70.   
  71. increment 适用于代理主键,自动递增,增1(只能是long,int,short)   
  72.   
  73. identity 适用于代理主键,底层数据库自动增长字段类型(数据库需支持,只能是long,int,short)   
  74.   
  75. (oralce)sequence 适用于代理主键,根据底层数据库的序列来生成标识符(数据库支持序列,只能是long,int,short)   
  76.   
  77. hilo 适用于代理主键,根据high/low算法来生成.Hibernate把特定表的字段作为high值,在默认情况下选用hibernate_unique_key表的next_hi字段   
  78.   
  79. (mysql,mssql)native 适用于代理主键,根据数据库自动生成标识符支持能力,来选择identity,sequence,hilo   
  80.   
  81. uuid.hex 适用于代理主键,采用128位UUID(universal unique identification)算法来生成标识.此算法能在网络环境中生成唯一的字符串标识符,   
  82.   
  83. (不建议使用,字符串类型比整形类型的主键占用更多的空间)   
  84.   
  85. assigned 适用于自然主键,由java程序负责生成.   
  86.   
  87. <hibernate-mapping>   
  88.   
  89. <class name="项目路径" table="库中对应表名" schema="dbo" catalog="netoa">   
  90.   
  91. <meta attribute="class-description">指定描述类的javaDoc</meta>   
  92.   
  93. <meta attribute="class-scope">指名类的修饰类型</meta>   
  94.   
  95. <meta attribute="extends">指定继承类</meta>   
  96.   
  97. <id name="bgrkbh" type="long">   
  98.   
  99. <column name="BGRKBH" precision="15" scale="0" sql-type="库中类型" check="BGRKBH>10"/>   
  100.   
  101. <meta attribute="scope-set">指定类,类属性的getxxx(),setxxx()方法的修饰符   
  102.   
  103. 包括:static,final,abstract,public,protected,private   
  104.   
  105. </meta>   
  106.   
  107. <generator class="assigned" />   
  108.   
  109. </id>   
  110.   
  111. <property name="Class.fileName" type="long">   
  112.   
  113. <column name="YSLX" precision="精度" scale="刻度" not-null="默认false" sql-type="数据库中类型"/>   
  114.   
  115. 附加属性不会影响Hibernate的运行行为   
  116.   
  117. <meta attribute="field-description">指定描述类的javaDoc</meta>   
  118.   
  119. 指定描述类属性的javaDoc   
  120.   
  121. </property>   
  122.   
  123. </class>   
  124.   
  125. </hibernate-mapping>   
  126.   
  127. 注意:   
  128.   
  129. 1 Session的commit()和flush()方法的区别,flush()方法进行清理缓存的操作,执行一系列的SQL语句,但不会提交事务;   
  130.   
  131. commit()方法会先调用flush(),然后提交事务.提交事务意味着对数据库所作的更新被永久保存下来.   
  132.   
  133. 2 Session的setFlushMode()方法用于设定清理缓存的时间点.FlushMode类定义了三种不同的清理模式   
  134.   
  135. 清理缓存的模式 Session的查询方法 Session的commit()方法 Session的flush()方法   
  136.   
  137. FlushMode.AUTO            清理                               清理                              清理   
  138.   
  139. FlushMode.COMMIT       不清理                            清理                              清理   
  140.   
  141. FlushMode.NEVER         不清理                          不清理                            清理   
  142.   
  143. 3 Hibernate应用中java对象的状态   
  144.   
  145. 临时状态 (transient):刚刚用new语句创建,还没被持久化,不处与Session的缓存中,处于临时状态的java对象被称为临时对象.   
  146.   
  147. 持久化状态(persistent):已经被持久化,加入session的缓存中.处于持久化状态的java对象被称为持久化对象.   
  148.   
  149. 游离状态(detached):已经被持久化,但不在处于session的缓存中.处于游离状态的java对象被称为游离对象.   
  150.   
  151. (注意:::::)持久化类与持久化对象是不同的概念.持久化类的实例可以处于临时状态,持久化状态和游离状态.其中处于   
  152.   
  153. 持久化状态的实例 被称为持久化状态.   
  154.   
  155. 临时对象的特性:   
  156.   
  157. 1 不处于缓存中,也可以说,不被任何一个Session实例关联   
  158.   
  159. 2 在数据中没有对应的纪录.   
  160.   
  161. 在此情况下,java对象进入临时状态   
  162.   
  163. 1 当通过new创建一个对象时,此时不和数据库中的任何纪录的   
  164.   
  165. ex:对象的状态转化过程   
  166.   
  167. 程序代码                                                          对象的生命周期 对象的状态   
  168.   
  169. tx=session.beginTransaction();   
  170.   
  171. Object obj=new Object("tow",new HashSet()); 开始生命周期       临时状态   
  172.   
  173. session.save(obj);                                                 处于生命周期 转化为持久状态   
  174.   
  175. Long id=obj.getId();   
  176.   
  177. obj=null;   
  178.   
  179. Object obj2=(Object)session.load(Object.class,id); 处于生命周期 处于持久化状态   
  180.   
  181. tx.commit();   
  182.   
  183. session.close();                                                              处于生命周期 转变成游离状态   
  184.   
  185. System.out.print(obj2.getName());                              处于生命周期 处于游离状态   
  186.   
  187. obj2=null;                                                                     结束生命周期 结束生命周期   
  188.   
  189. 4 cascade属性   
  190.   
  191. cascade属性值 描述   
  192.   
  193. none 在保存更新时,忽略其他关联对象,他是cascade默认属性   
  194.   
  195. save-update 当通过Session的save(),update()以及saveOrUpdate()方法来保存   
  196.   
  197. 或更新当前对象时,及联保存所有关联的新建的临时对象,并且及联更新所有关联的游离对象   
  198.   
  199. delete 当通过session的delete()方法删除当前对象时,及联删除所有对象   
  200.   
  201. all 包含save-update及delete行为,此外对当前对象执行evict()或lock   
  202.   
  203. ()操作时,也会对所有关联的持久化对象执行evict()或lock()操作   
  204.   
  205. delete-orphan 删除所有和当前对象解除关联关系的对象   
  206.   
  207. all-delete-orphan 包含all和delete-orphan   
  208.   
  209. 5 Hibernate映射类型,对应的java基本类型及对应的标准SQL类型   
  210.   
  211. Hibernate映射类型      java类型 标准SQL类型   
  212.   
  213. integer或者int                int              INTEGER   
  214.   
  215. long                                long             BIGINT   
  216.   
  217. short                               short        SMALLINT   
  218.   
  219. byte                                byte          TINYINT   
  220.   
  221. float                                 float          FLOAT   
  222.   
  223. double                          double        DOUBLE   
  224.   
  225. big_decimal      java.math.BigDecimal  NUMERIC   
  226.   
  227. character              char and string              CHAR   
  228.   
  229. string                         string                      VARCHAR   
  230.   
  231. boolean                 boolean                         BIT   
  232.   
  233. Hibernate映射类型  ,对应的java时间和日期类型及对应的标准SQL类型   
  234.   
  235. 映射类型                      java类型                          标准SQL类型         描述   
  236.   
  237. date    java.util.Date或者java.sql.Date                DATE      代表日期,YYYY-MM-DD   
  238.   
  239. time java.util.Date或者java.sql.Date                  TIME       代表时间,形式为HH:MM:SS   
  240.   
  241. timestamp java.util.Date或者java.sql.Timestamp TIMESTAMP   代表日期和时间,YYYYMMDDHHMMSS   
  242.   
  243. calendar java.util.Calendar                                  TIMESTAMP             同上   
  244.   
  245. calendar_date java.util.Calendar                          DATE         代表日期,YYYY-MM-DD

 

你可能感兴趣的:(Hibernate)