﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-即兴的灵感-随笔分类-Hibernate</title><link>http://www.blogjava.net/improviser/category/26127.html</link><description>思维是一种艺术，艺术需要灵感</description><language>zh-cn</language><lastBuildDate>Mon, 08 Oct 2007 16:18:00 GMT</lastBuildDate><pubDate>Mon, 08 Oct 2007 16:18:00 GMT</pubDate><ttl>60</ttl><item><title>Hibernate夜未眠(下)</title><link>http://www.blogjava.net/improviser/archive/2007/10/08/150944.html</link><dc:creator>improviser</dc:creator><author>improviser</author><pubDate>Sun, 07 Oct 2007 16:42:00 GMT</pubDate><guid>http://www.blogjava.net/improviser/archive/2007/10/08/150944.html</guid><wfw:comment>http://www.blogjava.net/improviser/comments/150944.html</wfw:comment><comments>http://www.blogjava.net/improviser/archive/2007/10/08/150944.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/improviser/comments/commentRss/150944.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/improviser/services/trackbacks/150944.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 随着事务提交，我的“夜未眠”也全部提交完成，没有重点，只有基本点，没有高难性，只有实用性。在这中秋过后的季节，仍吹着夏天的风，似乎让我们丝毫无法感受到冬天在四季中的份额，当夏日依依不舍流连忘返不愿离去，我想，我喜欢的是秋天的清爽；我想，我更喜欢的是冬天的到来；我想，我不能再如此未眠...&nbsp;&nbsp;<a href='http://www.blogjava.net/improviser/archive/2007/10/08/150944.html'>阅读全文</a><img src ="http://www.blogjava.net/improviser/aggbug/150944.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/improviser/" target="_blank">improviser</a> 2007-10-08 00:42 <a href="http://www.blogjava.net/improviser/archive/2007/10/08/150944.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Hibernate夜未眠(中)</title><link>http://www.blogjava.net/improviser/archive/2007/10/07/150764.html</link><dc:creator>improviser</dc:creator><author>improviser</author><pubDate>Sat, 06 Oct 2007 16:27:00 GMT</pubDate><guid>http://www.blogjava.net/improviser/archive/2007/10/07/150764.html</guid><wfw:comment>http://www.blogjava.net/improviser/comments/150764.html</wfw:comment><comments>http://www.blogjava.net/improviser/archive/2007/10/07/150764.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/improviser/comments/commentRss/150764.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/improviser/services/trackbacks/150764.html</trackback:ping><description><![CDATA[
		<div align="left">
				<font color="#000080" size="4">   我的</font>
				<br />
				<font color="#000080" size="4">   H...</font>
				<br />
				<font color="#000080" size="4">   ibernate拾锦...<br /></font>
		</div>
		<font color="#000080" size="4">
				<br />11、formula属性<br />   <font color="#0000ff"> property元素中的formula属性用于指定一个SQL表达式，可调用SQL函数货包括子查询。<br />    &lt;property name = "totalPrice" formula = "(select sum(o.price) from ORDERS o where o.CUSTUMER_ID = '1222')"/&gt;<br />    当查询CUSTOMER对象时，执行语句：select ID,NAME,(select SUM(O.PRICE) from ORDERS o where o.CUSTOMER_ID = '1222') from CUSTOMERS;</font><br />12、dynamic-insert和dynamic-update<br />    <font color="#0000ff">应用中把class中dynamic-insert和dynamic-update值设为true可以提高效率，即插入时仅包含字段取值不为null的字段，更新时仅包含字段值发生变化的属性。</font><br />13、Hibernate中package属性<br />    <font color="#0000ff">package属性用于指定本映射文件中包含类的包名为全局包，从而不必为每个类指定完整包名。</font><br />14、OID<br />    <font color="#0000ff">Hibernate中用对象标识符OID来维持java对象和表中记录的对应关系，OID定义为整数类型(short、int、long),通常由Hibernate或通过底层数据库给OID赋值。</font><br />15、标识符生成器<br /><font color="#0000ff">    Hibernate中内置标识符生成器，均适合代理主键<br />    increment：由Hibernate自增生成<br />    identity：由底层数据库生成<br />    sequence：底层数据库序列生成<br />    hilo：根据high/low等算法生成以特定表字段作high值<br />    native：自动选择identity、dequence、hilo<br />    assgned：自然主键(尽量避免使用)</font><br />16、inverse属性<br />    <font color="#0000ff">为避免Hibernate在清理缓存时对相关联对象都执行更新操作，将inverse设置为true，将主控权交给many一方，以仅控mamy方状态更新对象。</font><br />17、cascade属性<br />   <font color="#0000ff"> 级联属性，当cascade属性设置为delete，在删除一对象时自动删除与其级联的对象，删除后持久化对象变为临时状态。</font><br />18、session清理缓存时间点<br />   <font color="#0000ff"> a、commit()时先清理缓存，再向DATABASE提交事务<br />    b、执行find()和iterate()时，确保对象最新状态（<font color="#ff1493">iterate（）在Hibernate 3＃已取消</font>）<br />    c、显式调用flush()方法时</font><br />19、持久化对象三状态<br />   <font color="#0000ff"> a、临时状态，刚new，不处于session缓存中<br />    b、持久化状态，已持久化并加入session中<br />    c、游离状态，被持久化，但不在session中</font><br />20、load()和get()<br />    <font color="#0000ff">两者都可以由OID加载一个持久化对象，当DB中不存在与OID对应记录时，load()方法会抛出异常，而get()会返回Null值。<br /><br />    待续...<br /><br />（<font color="#ff3300">转载请注明出处</font>）<br /></font></font>
<img src ="http://www.blogjava.net/improviser/aggbug/150764.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/improviser/" target="_blank">improviser</a> 2007-10-07 00:27 <a href="http://www.blogjava.net/improviser/archive/2007/10/07/150764.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Hibernate夜未眠(上)</title><link>http://www.blogjava.net/improviser/archive/2007/10/06/150635.html</link><dc:creator>improviser</dc:creator><author>improviser</author><pubDate>Fri, 05 Oct 2007 19:06:00 GMT</pubDate><guid>http://www.blogjava.net/improviser/archive/2007/10/06/150635.html</guid><wfw:comment>http://www.blogjava.net/improviser/comments/150635.html</wfw:comment><comments>http://www.blogjava.net/improviser/archive/2007/10/06/150635.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.blogjava.net/improviser/comments/commentRss/150635.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/improviser/services/trackbacks/150635.html</trackback:ping><description><![CDATA[
		<font color="#000080" size="4">    Hibernate冬眠之意！何来夜未眠？何解之有！？是时凌晨2点来钟，得解！<br /><br />    我的...<br />    H<br />    ibernate拾锦...<br /><br />1、Object Relation Mapping<br />  <font color="#0000ff"> 持久化类与关系表对应，持久化类实例与表中一行记录对应。</font><br />2、Hibernate核心接口<br />   <font color="#0000ff">访问数据库接口：Session、Transation、Query、Criteria<br />   配置Hibernate接口：Configuration<br />   Configuration --(实例化创建)--&gt;SessionFaction--(实例化)--&gt;Session----&gt;(Qurey/Criteria/Transaction)</font><br />3、Hibernate使用步骤<br />  <font color="#0000ff"> a、创建Hibernate配置文件<br />   b、创建持久化类<br />   c、创建对象关系映射文件<br />   d、通过接口访问DATABASE</font><br />4、持久化类<br />   <font color="#0000ff">被Hibernate持久化到数据库中，通过Setter和Getter方法，若为boolean型则可用is*方法。Hibernate不要求持久化类必须实现Serializable，但在分布式不同结点间传输持久化类必须实现Serializable接口。</font><br />5、Hibernate与EJB<br />  <font color="#0000ff"> Hibernate为普通JAVA类，而EJB必须实现EJB各个接口，运行于容器之中。</font><br />6、链编程风格(初始化)<br />  <font color="#0000ff"> sessionFactory ＝ new Configuration()<br />              .addClass(AAA.class)<br />              .buildSessionFactory();</font><br />7、执行数据库操作<br />  <font color="#0000ff"> 初始化后由sessionFactory.openSession()方法获得session实例，并由session实例执行数据库有关操作，save()、update()、delete()、load()、find()。</font><br />8、属性作用范围<br />   <font color="#0000ff">在映射文件中元素class中属性scope－field设置全局属性作用域；<br />   在映射文件中元素property中scope－field设置为局部属性作用范围。</font><br />9、持久化类访问方法<br />  <font color="#0000ff"> 用户---&gt;应用程序---&gt;Setter()&lt;---Hibernate&lt;---DATABASE<br />   用户&lt;---应用程序&lt;---Getter()---&gt;Hibernate---&gt;DATABASE</font><br />10、持久化类中加入程序逻辑<br />   <font color="#0000ff">Student类中包含firstName、lastName，STUDENT表中只有NAME字段<br />   getName()<br />   {<br />       return firstName+lastName;<br />   }<br />   setName(String name)<br />   {<br />       firstName = ...;<br />       lastName  = ...;<br />   }  <br />   Hibernate映射文件中只需要映射name和NAME&lt;property name="name" column="NAME"/&gt;,就可以访问setName()和getName()方法，以映射文件为准。<br /><br />   待续...</font><br /><br /><br />  (<font color="#ff3300">转载请注明出处</font>)   <br /></font>
<img src ="http://www.blogjava.net/improviser/aggbug/150635.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/improviser/" target="_blank">improviser</a> 2007-10-06 03:06 <a href="http://www.blogjava.net/improviser/archive/2007/10/06/150635.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>