﻿<?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/hwpok/category/33303.html</link><description>DEBUG</description><language>zh-cn</language><lastBuildDate>Mon, 10 Jan 2011 01:48:56 GMT</lastBuildDate><pubDate>Mon, 10 Jan 2011 01:48:56 GMT</pubDate><ttl>60</ttl><item><title>Hibernate  formula</title><link>http://www.blogjava.net/hwpok/archive/2011/01/09/342633.html</link><dc:creator>无名氏</dc:creator><author>无名氏</author><pubDate>Sun, 09 Jan 2011 12:32:00 GMT</pubDate><guid>http://www.blogjava.net/hwpok/archive/2011/01/09/342633.html</guid><wfw:comment>http://www.blogjava.net/hwpok/comments/342633.html</wfw:comment><comments>http://www.blogjava.net/hwpok/archive/2011/01/09/342633.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hwpok/comments/commentRss/342633.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hwpok/services/trackbacks/342633.html</trackback:ping><description><![CDATA[<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">property&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="age"</span><span style="color: #ff0000">&nbsp;formula</span><span style="color: #0000ff">="(select&nbsp;round((to_number(sysdate&nbsp;-&nbsp;nvl(birth_day,&nbsp;sysdate))/360))&nbsp;from&nbsp;es_sms_customer&nbsp;a&nbsp;where&nbsp;a.id=ID)"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">property&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="age"</span><span style="color: #ff0000">&nbsp;formula</span><span style="color: #0000ff">="(select&nbsp;round((to_number(sysdate&nbsp;-&nbsp;nvl(BIRTH_DAY,&nbsp;sysdate))/360))&nbsp;from&nbsp;dual)"</span><span style="color: #0000ff">/&gt;</span></div>
formula 是一个很有用的东东
<img src ="http://www.blogjava.net/hwpok/aggbug/342633.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hwpok/" target="_blank">无名氏</a> 2011-01-09 20:32 <a href="http://www.blogjava.net/hwpok/archive/2011/01/09/342633.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>为Hibernate配置文件加密的三套解决方案(一)</title><link>http://www.blogjava.net/hwpok/archive/2010/05/31/322356.html</link><dc:creator>无名氏</dc:creator><author>无名氏</author><pubDate>Mon, 31 May 2010 09:07:00 GMT</pubDate><guid>http://www.blogjava.net/hwpok/archive/2010/05/31/322356.html</guid><wfw:comment>http://www.blogjava.net/hwpok/comments/322356.html</wfw:comment><comments>http://www.blogjava.net/hwpok/archive/2010/05/31/322356.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hwpok/comments/commentRss/322356.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hwpok/services/trackbacks/322356.html</trackback:ping><description><![CDATA[<h3>Hibernate配置文件hibernate.cfg.xml中存放了我们连接数据库的相关信息，其中设计到许多数据库的敏感信息，比如连接地址，用户名和密码，有时候我们交由发布组进行发布时并不希望他们看到数据库的连接密码，就需要对hibernate配置文件中的部分信息进行加密，我在解决这一问题中实践了三种方法，第一种是重载连接供应器，第二种是使用Hibernate官方推荐的Jasypt，第三种其实算不上是加密，而是使用WebLogic连接池将相关信息放在WebLogic的配置中，下面会具体阐述这三种方法。 <br />
<br />
第一种重载连接供应器： <br />
这种方法是我在网上看到的，原文连接是： <br />
<a href="http://blog.csdn.net/sdbany/archive/2008/10/23/3132809.aspx" target="_blank">http://blog.csdn.net/sdbany/archive/2008/10/23/3132809.aspx</a> <br />
<br />
但是在实际使用的时候发现代码有问题，可能是作者没有贴全，所以有些功能无法实现，于是我重新写了代码。 <br />
<br />
首先创建一个连接供应器，配置文件里的参数解释都是此类负责，所以，只要在此类中进行密文解密即可。 <br />
</h3>
<div class="blog_content">
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Java代码 <a title="复制代码" onclick="dp.sh.Toolbar.CopyToClipboard(this);return false;" href="#"></a></div>
</div>
<ol class="dp-j">
    <li><span><span class="keyword">import</span><span>&nbsp;java.util.Properties; &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li><span class="keyword">import</span><span>&nbsp;org.hibernate.HibernateException; &nbsp;&nbsp;</span></span></li>
    <li><span class="keyword">import</span><span>&nbsp;org.hibernate.cfg.Environment; &nbsp;&nbsp;</span></span></li>
    <li><span class="keyword">import</span><span>&nbsp;org.hibernate.connection.DriverManagerConnectionProvider; &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">class</span><span>&nbsp;CustomDriverManagerConnectionProvider&nbsp;</span><span class="keyword">extends</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DriverManagerConnectionProvider&nbsp;{ &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;CustomDriverManagerConnectionProvider()&nbsp;{ &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">super</span><span>(); &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="annotation">@Override</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;configure(Properties&nbsp;props)&nbsp;</span><span class="keyword">throws</span><span>&nbsp;HibernateException{ &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;user&nbsp;=&nbsp;props.getProperty(Environment.USER); &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;password&nbsp;=&nbsp;props.getProperty(Environment.PASS); &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;props.setProperty(Environment.USER,&nbsp;SecUtil.decrypt(user)); &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;props.setProperty(Environment.PASS,&nbsp;SecUtil.decrypt(password)); &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">super</span><span>.configure(props); &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li><span>}&nbsp;&nbsp;</span></li>
</ol>
</div>
<pre style="display: none" class="java" name="code">import java.util.Properties;
import org.hibernate.HibernateException;
import org.hibernate.cfg.Environment;
import org.hibernate.connection.DriverManagerConnectionProvider;
public class CustomDriverManagerConnectionProvider extends
DriverManagerConnectionProvider {
public CustomDriverManagerConnectionProvider() {
super();
}
@Override
public void configure(Properties props) throws HibernateException{
String user = props.getProperty(Environment.USER);
String password = props.getProperty(Environment.PASS);
props.setProperty(Environment.USER, SecUtil.decrypt(user));
props.setProperty(Environment.PASS, SecUtil.decrypt(password));
super.configure(props);
}
}
</pre>
<br />
再写一个类，使用AES负责字符串的加密与解密这里我们参照原作者的方法 <br />
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Java代码 <a title="复制代码" onclick="dp.sh.Toolbar.CopyToClipboard(this);return false;" href="#"></a></div>
</div>
<ol class="dp-j">
    <li><span><span class="comment">/** </span>&nbsp;</span></li>
    <li><span><span class="comment">&nbsp;*&nbsp;AES加密工具 </span>&nbsp;</span></li>
    <li><span><span class="comment">&nbsp;*&nbsp; </span>&nbsp;</span></li>
    <li><span><span class="comment">&nbsp;*&nbsp;@author&nbsp;Bany </span>&nbsp;</span></li>
    <li><span><span class="comment">&nbsp;*&nbsp; </span>&nbsp;</span></li>
    <li><span><span class="comment">&nbsp;*&nbsp;@version&nbsp;创建时间：2008-8-5&nbsp;上午10:58:16 </span>&nbsp;</span></li>
    <li><span><span class="comment">&nbsp;*&nbsp; </span>&nbsp;</span></li>
    <li><span><span class="comment">&nbsp;*/</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">class</span><span>&nbsp;SecUtil&nbsp;{ &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">private</span><span>&nbsp;</span><span class="keyword">static</span><span>&nbsp;</span><span class="keyword">byte</span><span>[]&nbsp;keybytes&nbsp;=&nbsp;{&nbsp;</span><span class="number">0x31</span><span>,&nbsp;</span><span class="number">0x32</span><span>,&nbsp;&#8230;&#8230;&nbsp;}; &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">static</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;main(String[]&nbsp;args)&nbsp;</span><span class="keyword">throws</span><span>&nbsp;Exception&nbsp;{ &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;e1&nbsp;=&nbsp;encrypt(</span><span class="string">"newpassword"</span><span>); &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(e1); &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;e2&nbsp;=&nbsp;decrypt(e1); &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(e2); &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/** </span>&nbsp;</span></li>
    <li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;加密 </span>&nbsp;</span></li>
    <li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;value </span>&nbsp;</span></li>
    <li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return </span>&nbsp;</span></li>
    <li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">static</span><span>&nbsp;String&nbsp;encrypt(String&nbsp;value)&nbsp;{ &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;s=</span><span class="keyword">null</span><span>; &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">int</span><span>&nbsp;mode&nbsp;=&nbsp;Cipher.ENCRYPT_MODE; &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">try</span><span>&nbsp;{ &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Cipher&nbsp;cipher&nbsp;=&nbsp;initCipher(mode); &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">byte</span><span>[]&nbsp;outBytes&nbsp;=&nbsp;cipher.doFinal(value.getBytes()); &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s&nbsp;=&nbsp;String.valueOf(Hex.encodeHex(outBytes)); &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span class="keyword">catch</span><span>&nbsp;(Exception&nbsp;e)&nbsp;{ &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace(); &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;s; &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/** </span>&nbsp;</span></li>
    <li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;解密 </span>&nbsp;</span></li>
    <li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;value </span>&nbsp;</span></li>
    <li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return </span>&nbsp;</span></li>
    <li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">static</span><span>&nbsp;String&nbsp;decrypt(String&nbsp;value)&nbsp;{ &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;s&nbsp;=&nbsp;</span><span class="keyword">null</span><span>; &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">int</span><span>&nbsp;mode&nbsp;=&nbsp;Cipher.DECRYPT_MODE; &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">try</span><span>&nbsp;{ &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Cipher&nbsp;cipher&nbsp;=&nbsp;initCipher(mode); &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">byte</span><span>[]&nbsp;outBytes&nbsp;=&nbsp;cipher.doFinal(Hex.decodeHex(value.toCharArray())); &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;String(outBytes); &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span class="keyword">catch</span><span>&nbsp;(Exception&nbsp;e)&nbsp;{ &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace(); &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;s; &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">private</span><span>&nbsp;</span><span class="keyword">static</span><span>&nbsp;Cipher&nbsp;initCipher(</span><span class="keyword">int</span><span>&nbsp;mode)&nbsp;</span><span class="keyword">throws</span><span>&nbsp;NoSuchAlgorithmException,&nbsp;NoSuchPaddingException,&nbsp;InvalidKeyException{ &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Cipher&nbsp;cipher&nbsp;=&nbsp;Cipher.getInstance(</span><span class="string">"AES/ECB/PKCS5Padding"</span><span>); &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Key&nbsp;key&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;SecretKeySpec(keybytes,&nbsp;</span><span class="string">"AES"</span><span>); &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cipher.init(mode,&nbsp;key); &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;cipher; &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li><span>}&nbsp;&nbsp;</span></li>
</ol>
</div>
<pre style="display: none" class="java" name="code">/**
* AES加密工具
*
* @author Bany
*
* @version 创建时间：2008-8-5 上午10:58:16
*
*/
public class SecUtil {
private static byte[] keybytes = { 0x31, 0x32, &#8230;&#8230; };
public static void main(String[] args) throws Exception {
String e1 = encrypt("newpassword");
System.out.println(e1);
String e2 = decrypt(e1);
System.out.println(e2);
}
/**
* 加密
* @param value
* @return
*/
public static String encrypt(String value) {
String s=null;
int mode = Cipher.ENCRYPT_MODE;
try {
Cipher cipher = initCipher(mode);
byte[] outBytes = cipher.doFinal(value.getBytes());
s = String.valueOf(Hex.encodeHex(outBytes));
} catch (Exception e) {
e.printStackTrace();
}
return s;
}
/**
* 解密
* @param value
* @return
*/
public static String decrypt(String value) {
String s = null;
int mode = Cipher.DECRYPT_MODE;
try {
Cipher cipher = initCipher(mode);
byte[] outBytes = cipher.doFinal(Hex.decodeHex(value.toCharArray()));
s = new String(outBytes);
} catch (Exception e) {
e.printStackTrace();
}
return s;
}
private static Cipher initCipher(int mode) throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException{
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
Key key = new SecretKeySpec(keybytes, "AES");
cipher.init(mode, key);
return cipher;
}
}
</pre>
<br />
当然，你也可以使用自己写的加密方法，或者是<a href="http://java.sun.com/j2se/1.4.2/docs/guide/security/jce/JCERefGuide.html" target="_blank">Java官方</a>推荐的一些加密方法 <br />
调用SecUtil.encrypt的方法，把用户密码加密生成密文，然后根据密文修改hibernate.cfg.xml文件 <br />
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Xml代码 <a title="复制代码" onclick="dp.sh.Toolbar.CopyToClipboard(this);return false;" href="#"></a></div>
</div>
<ol class="dp-xml">
    <li><span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">"connection.username"</span><span class="tag">&gt;</span><span>c59cd98</span><span class="tag">&lt;/</span><span class="tag-name">property</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">"connection.password"</span><span class="tag">&gt;</span><span>68e32593ea5943a6a</span><span class="tag">&lt;/</span><span class="tag-name">property</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">"connection.provider_class"</span><span class="tag">&gt;</span><span>com.CustomDriverManagerConnectionProvider</span><span class="tag">&lt;/</span><span class="tag-name">property</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
</ol>
</div>
</div>
<img src ="http://www.blogjava.net/hwpok/aggbug/322356.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hwpok/" target="_blank">无名氏</a> 2010-05-31 17:07 <a href="http://www.blogjava.net/hwpok/archive/2010/05/31/322356.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>hibernate 复合主键</title><link>http://www.blogjava.net/hwpok/archive/2009/11/26/303749.html</link><dc:creator>无名氏</dc:creator><author>无名氏</author><pubDate>Thu, 26 Nov 2009 03:16:00 GMT</pubDate><guid>http://www.blogjava.net/hwpok/archive/2009/11/26/303749.html</guid><wfw:comment>http://www.blogjava.net/hwpok/comments/303749.html</wfw:comment><comments>http://www.blogjava.net/hwpok/archive/2009/11/26/303749.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hwpok/comments/commentRss/303749.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hwpok/services/trackbacks/303749.html</trackback:ping><description><![CDATA[hibernate的复合主键的类一定要实现Serializable接口,不然会报错的.
<img src ="http://www.blogjava.net/hwpok/aggbug/303749.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hwpok/" target="_blank">无名氏</a> 2009-11-26 11:16 <a href="http://www.blogjava.net/hwpok/archive/2009/11/26/303749.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Proxool 又一点</title><link>http://www.blogjava.net/hwpok/archive/2008/11/27/243053.html</link><dc:creator>无名氏</dc:creator><author>无名氏</author><pubDate>Thu, 27 Nov 2008 10:15:00 GMT</pubDate><guid>http://www.blogjava.net/hwpok/archive/2008/11/27/243053.html</guid><wfw:comment>http://www.blogjava.net/hwpok/comments/243053.html</wfw:comment><comments>http://www.blogjava.net/hwpok/archive/2008/11/27/243053.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hwpok/comments/commentRss/243053.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hwpok/services/trackbacks/243053.html</trackback:ping><description><![CDATA[<p>至于为什么要用proxool连接池，这里就不细说了——总之，非常棒的一个连接池！</p>
<p>以下介绍proxool的部署和使用：</p>
<p>1、添加proxool-0.8.3.jar包。</p>
<p><br />
2、把proxool-conf.xml放到src的根目录。<br />
具体内容如下：<br />
&lt;?xml version="1.0"
encoding="utf-8"?&gt; <br />
&lt;!-- the proxool configuration can be embedded
within your own application's. <br />
Anything outside the "proxool" tag is
ignored. <br />
请不要随意改动配置!<br />
--&gt; </p>
<p>&lt;something-else-entirely&gt; <br />
&lt;proxool&gt;
<br />
&lt;alias&gt;pro_pool&lt;/alias&gt;
<br />
&lt;!--proxool只能管理由自己产生的连接--&gt;<br />
&lt;driver-class&gt;oracle.jdbc.driver.OracleDriver&lt;/driver-class&gt;<br />
&lt;driver-url&gt;jdbc:oracle:thin:@IP地址:数据库实例名&lt;/driver-url&gt;<br />
&lt;driver-properties&gt;<br />
&nbsp;&nbsp;&nbsp;
&lt;property name="user" value="具体用户名" /&gt; <br />
&nbsp; &lt;property name="password"
value="具体密码" /&gt;<br />
&lt;/driver-properties&gt;<br />
&nbsp; </p>
<p><br />
--&gt;&lt;!-- proxool自动侦察各个连接状态的时间间隔(毫秒),侦察到空闲的连接就马上回收,超时的销毁--&gt;
<br />
&lt;house-keeping-sleep-time&gt;60000&lt;/house-keeping-sleep-time&gt;
<br />
&lt;!-- 指因未有空闲连接可以分配而在队列中等候的最大请求数,超过这个请求数的用户连接就不会被接受--&gt;
<br />
&lt;maximum-new-connections&gt;20&lt;/maximum-new-connections&gt;
<br />
&lt;!-- 线程最大寿命
--&gt;<br />
&lt;maximum-connection-lifetime&gt;1200000&lt;/maximum-connection-lifetime&gt;<br />
&lt;!--
最少保持的空闲连接数--&gt;<br />
&lt;prototype-count&gt;3&lt;/prototype-count&gt; <br />
&lt;!--
允许最大连接数,超过了这个连接，再有请求时，就排在队列中等候，最大的等待请求数由maximum-new-connections决定--&gt;
<br />
&lt;maximum-connection-count&gt;40&lt;/maximum-connection-count&gt;
<br />
&lt;!-- 最小连接数--&gt;
<br />
&lt;minimum-connection-count&gt;3&lt;/minimum-connection-count&gt;
<br />
&lt;house-keeping-test-sql&gt;select CURRENT_DATE from
dual&lt;/house-keeping-test-sql&gt;<br />
&lt;/proxool&gt;
<br />
&lt;/something-else-entirely&gt;</p>
<p><br />
3、在web.xml中添加以下代码，使得项目启动时，自动加载proxool。<br />
&nbsp;&lt;servlet&gt;<br />
&nbsp;&nbsp;&lt;servlet-name&gt;AdminP&lt;/servlet-name&gt;<br />
&nbsp;&nbsp;&lt;servlet-class&gt;<br />
&nbsp;&nbsp;&nbsp;org.logicalcobwebs.proxool.admin.servlet.AdminServlet<br />
&nbsp;&nbsp;&lt;/servlet-class&gt;<br />
&nbsp;&nbsp;&lt;load-on-startup&gt;1&lt;/load-on-startup&gt;<br />
&nbsp;&lt;/servlet&gt;<br />
&nbsp;&lt;servlet-mapping&gt;<br />
&nbsp;&nbsp;&lt;servlet-name&gt;AdminP&lt;/servlet-name&gt;<br />
&nbsp;&nbsp;&lt;url-pattern&gt;/AdminP&lt;/url-pattern&gt;<br />
&nbsp;&lt;/servlet-mapping&gt;</p>
<p>&nbsp;&lt;servlet&gt;<br />
&nbsp;&nbsp;&lt;servlet-name&gt;proxoolServletConfigurator&lt;/servlet-name&gt;<br />
&nbsp;&nbsp;&lt;servlet-class&gt;<br />
&nbsp;&nbsp;&nbsp;org.logicalcobwebs.proxool.configuration.ServletConfigurator<br />
&nbsp;&nbsp;&lt;/servlet-class&gt;<br />
&nbsp;&nbsp;&lt;init-param&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;param-name&gt;xmlFile&lt;/param-name&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;param-value&gt;WEB-INF/classes/proxool-conf.xml&lt;/param-value&gt;<br />
&nbsp;&nbsp;&lt;/init-param&gt;<br />
&nbsp;&nbsp;&lt;load-on-startup&gt;5&lt;/load-on-startup&gt;<br />
&nbsp;&lt;/servlet&gt;</p>
<p><br />
4、程序调用（三种方式）</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;
根据自己项目情况，采用以下三种方式中的任何一种即可。<br />
1）、Spring框架调用。<br />
在applicationContext.xml文件中：</p>
<p>&nbsp;&lt;bean
id="dataSource"<br />
&nbsp;&nbsp;class="org.springframework.jdbc.datasource.DriverManagerDataSource"<br />
&nbsp;&nbsp;destroy-method="close"
singleton="true"&gt;<br />
&nbsp;&nbsp;&lt;property
name="driverClassName"&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;value&gt;org.logicalcobwebs.proxool.ProxoolDriver&lt;/value&gt;<br />
&nbsp;&nbsp;&lt;/property&gt;<br />
&nbsp;&nbsp;&lt;property
name="url"&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;value&gt;proxool.pro_pool&lt;/value&gt;<br />
&nbsp;&nbsp;&lt;/property&gt;<br />
&nbsp;&lt;/bean&gt;</p>
<p>&nbsp;</p>
<p>2）、纯JDBC调用</p>
<p>driver =
(Driver)Class.forName("org.logicalcobwebs.proxool.ProxoolDriver").newInstance();<br />
DriverManager.registerDriver(driver);<br />
conn
= DriverManager.getConnection("proxool.pro_pool");</p>
<p>&nbsp;</p>
<p>3）、Hibernate调用</p>
<p>在<span class="style1">hibernate.cfg.xml</span>中增加：<br />
&lt;property
name="hibernate.proxool.pool_alias"&gt;pro_pool&lt;/property&gt;<br />
&lt;property
name="hibernate.proxool.xml"&gt;proxool-conf.xml&lt;/property&gt;<br />
&lt;property
name="connection.provider_class"&gt;org.hibernate.connection.ProxoolConnectionProvider&lt;/property&gt;</p>
<p>程序中使用</p>
<p>Connection con = DriverManager.getConnection("proxool.pro_pool");</p>
<img src ="http://www.blogjava.net/hwpok/aggbug/243053.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hwpok/" target="_blank">无名氏</a> 2008-11-27 18:15 <a href="http://www.blogjava.net/hwpok/archive/2008/11/27/243053.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>proxool 配法  实时监控 hibernate</title><link>http://www.blogjava.net/hwpok/archive/2008/11/27/243022.html</link><dc:creator>无名氏</dc:creator><author>无名氏</author><pubDate>Thu, 27 Nov 2008 08:24:00 GMT</pubDate><guid>http://www.blogjava.net/hwpok/archive/2008/11/27/243022.html</guid><wfw:comment>http://www.blogjava.net/hwpok/comments/243022.html</wfw:comment><comments>http://www.blogjava.net/hwpok/archive/2008/11/27/243022.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hwpok/comments/commentRss/243022.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hwpok/services/trackbacks/243022.html</trackback:ping><description><![CDATA[1.proxool.xml<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000ff;">&lt;?</span><span style="color: #ff00ff;">xml&nbsp;version='1.0'&nbsp;encoding='gb2312'</span><span style="color: #0000ff;">?&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">something-else-entirely</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">proxool</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">alias</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">MYPool</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">alias</span><span style="color: #0000ff;">&gt;</span><span style="color: #008000;">&lt;!--</span><span style="color: #008000;">连接池的别名</span><span style="color: #008000;">--&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">driver-url</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jdbc:oracle:thin:@127.0.0.1:1521:rwcm<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">driver-url</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">&lt;!--</span><span style="color: #008000;">JDBC驱动程序rdwk21_#</span><span style="color: #008000;">--&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">driver-class</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;oracle.jdbc.driver.OracleDriver<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">driver-class</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">driver-properties</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">property&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="user"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="root"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">property&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="password"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="root"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">driver-properties</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">&lt;!--</span><span style="color: #008000;">&nbsp;proxool自动侦察各个连接状态的时间间隔(毫秒),侦察到空闲的连接就马上回收,超时的销毁</span><span style="color: #008000;">--&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">house-keeping-sleep-time</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">90000</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">house-keeping-sleep-time</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">&lt;!--</span><span style="color: #008000;">&nbsp;指因未有空闲连接可以分配而在队列中等候的最大请求数,超过这个请求数的用户连接就不会被接受</span><span style="color: #008000;">--&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">maximum-new-connections</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">20</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">maximum-new-connections</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">&lt;!--</span><span style="color: #008000;">&nbsp;最少保持的空闲连接数</span><span style="color: #008000;">--&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">prototype-count</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">5</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">prototype-count</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">&lt;!--</span><span style="color: #008000;">&nbsp;允许最大连接数,超过了这个连接，再有请求时，就排在队列中等候，最大的等待请求数由maximum-new-connections决定</span><span style="color: #008000;">--&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">maximum-connection-count</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">100</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">maximum-connection-count</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">&lt;!--</span><span style="color: #008000;">&nbsp;最小连接数</span><span style="color: #008000;">--&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">minimum-connection-count</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">10</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">minimum-connection-count</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">proxool</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">something-else-entirely</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span></div>
2.hibernate.cfg.xml<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">session-factory</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">property&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="hibernate.connection.provider_class"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;org.hibernate.connection.ProxoolConnectionProvider<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">property</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">property&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="hibernate.proxool.pool_alias"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">MYPool</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">property</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">property&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="hibernate.proxool.xml"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">proxool.xml</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">property</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">property&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="hibernate.connection.release_mode"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;auto<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">property</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">property&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="show_sql"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">false</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">property</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">session-factory</span><span style="color: #0000ff;">&gt;</span></div>
3.web.xml<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008000;">&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--</span><span style="color: #008000;">&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在应用中实时监控连接池开始<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">--&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">servlet</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">servlet-name</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">Admin</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">servlet-name</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">servlet-class</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">org.logicalcobwebs.proxool.admin.servlet.AdminServlet</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">servlet-class</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">servlet</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">servlet-mapping</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">servlet-name</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">Admin</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">servlet-name</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">url-pattern</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">/showProxoolSnapshot</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">url-pattern</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">servlet-mapping</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">&lt;!--</span><span style="color: #008000;">&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在应用中实时监控连接池结束<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">--&gt;</span></div>
<br />
<br />
<img src ="http://www.blogjava.net/hwpok/aggbug/243022.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hwpok/" target="_blank">无名氏</a> 2008-11-27 16:24 <a href="http://www.blogjava.net/hwpok/archive/2008/11/27/243022.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HQL  总结</title><link>http://www.blogjava.net/hwpok/archive/2008/11/12/240089.html</link><dc:creator>无名氏</dc:creator><author>无名氏</author><pubDate>Wed, 12 Nov 2008 06:23:00 GMT</pubDate><guid>http://www.blogjava.net/hwpok/archive/2008/11/12/240089.html</guid><wfw:comment>http://www.blogjava.net/hwpok/comments/240089.html</wfw:comment><comments>http://www.blogjava.net/hwpok/archive/2008/11/12/240089.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hwpok/comments/commentRss/240089.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hwpok/services/trackbacks/240089.html</trackback:ping><description><![CDATA[以个普通Users表为例： <br />
建表语句： <br />
<pre class="java" name="code">CREATE DATABASE `interceptor`<br />
CHARACTER SET 'utf8';<br />
USE `interceptor`;<br />
DROP TABLE IF EXISTS `users`;<br />
<br />
create table users(<br />
id int auto_increment primary key,<br />
name varchar(10) not null,<br />
passwd varchar(10) not null<br />
)<br />
ENGINE=InnoDB DEFAULT CHARSET=utf8;<br />
</pre>
User.java: <br />
package com.domain;<br />
<pre class="java" name="code">public class Users implements java.io.Serializable {<br />
private Integer id;<br />
private String name;<br />
private String passwd;<br />
public Users() {<br />
}<br />
public Users(String name, String passwd) {<br />
this.name = name;<br />
this.passwd = passwd;<br />
}<br />
public Integer getId() {<br />
return this.id;<br />
}<br />
public void setId(Integer id) {<br />
this.id = id;<br />
}<br />
public String getName() {<br />
return this.name;<br />
}<br />
public void setName(String name) {<br />
this.name = name;<br />
}<br />
public String getPasswd() {<br />
return this.passwd;<br />
}<br />
public void setPasswd(String passwd) {<br />
this.passwd = passwd;<br />
}<br />
User.hbm.xml: <br />
</pre>
<br />
<pre class="java" name="code">&lt;?xml version="1.0" encoding="utf-8"?&gt;<br />
&lt;!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"<br />
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"&gt;<br />
&lt;hibernate-mapping&gt;<br />
&lt;class name="com.domain.Users" table="users" catalog="interceptor"&gt;<br />
&lt;id name="id" type="java.lang.Integer"&gt;<br />
&lt;column name="id" /&gt;<br />
&lt;generator class="native" /&gt;<br />
&lt;/id&gt;<br />
&lt;property name="name" type="java.lang.String"&gt;<br />
&lt;column name="name" length="10" not-null="true" /&gt;<br />
&lt;/property&gt;<br />
&lt;property name="passwd" type="java.lang.String"&gt;<br />
&lt;column name="passwd" length="10" not-null="true" /&gt;<br />
&lt;/property&gt;<br />
&lt;/class&gt;<br />
&lt;/hibernate-mapping&gt;<br />
</pre>
1. 查询整个映射对象所有字段 <br />
<pre class="java" name="code">//直接from查询出来的是一个映射对象，即：查询整个映射对象所有字段<br />
<br />
String hql = "from Users";<br />
Query query = session.createQuery(hql);<br />
<br />
List&lt;Users&gt; users = query.list();<br />
for(Users user : users){<br />
System.out.println(user.getName() + " : " + user.getPasswd() + " : " + user.getId());<br />
}<br />
<br />
输出结果为：<br />
name1 : password1 : 1<br />
name2 : password2 : 2<br />
name3 : password3 : 3<br />
</pre>
2.查询单个字段 <br />
<pre class="java" name="code">//查询单个字段<br />
<br />
String hql = " select name from Users";<br />
Query query = session.createQuery(hql);<br />
List&lt;String&gt; list = query.list();<br />
for(String str : list){<br />
System.out.println(str);<br />
}<br />
输出结果为：<br />
name1<br />
name2<br />
name3<br />
</pre>
3.查询其中几个字段 <br />
<pre class="java" name="code">//查询其中几个字段<br />
<br />
String hql = " select name,passwd from Users";<br />
Query query = session.createQuery(hql);<br />
//默认查询出来的list里存放的是一个Object数组<br />
List&lt;Object[]&gt; list = query.list();<br />
for(Object[] object : list){<br />
String name = (String)object[0];<br />
String passwd = (String)object[1];<br />
<br />
System.out.println(name + " : " + passwd);<br />
}<br />
<br />
输出结果为：<br />
name1 : password1<br />
name2 : password2<br />
name3 : password3<br />
</pre>
4.修改默认查询结果(query.list())不以Object[]数组形式返回，以List形式返回 <br />
<pre class="java" name="code">//查询其中几个字段,添加new list(),注意list里的l是小写的。也不需要导入包，这样通过query.list()出来的list里存放的不再是默认的Object数组了，而是List集合了<br />
String hql = " select new list(name,passwd) from Users";<br />
Query query = session.createQuery(hql);<br />
//默认查询出来的list里存放的是一个Object数组，但是在这里list里存放的不再是默认的Object数组了，而是List集合了<br />
List&lt;List&gt; list = query.list();<br />
for(List user : list){<br />
<br />
String name = (String)user.get(0);<br />
String passwd = (String)user.get(1);<br />
<br />
System.out.println(name + " : " + passwd);<br />
}<br />
<br />
/**<br />
<br />
输出结果为：<br />
name1 : password1<br />
name2 : password2<br />
name3 : password3<br />
*/<br />
</pre>
5.修改默认查询结果(query.list())不以Object[]数组形式返回，以Map形式返回 <br />
<pre class="java" name="code">//查询其中几个字段,添加new map(),注意map里的m是小写的。也不需要导入包，这样通过query.list()出来的list里存放的不再是默认的Object数组了，而是map集合了<br />
String hql = " select new map(name,passwd) from Users";<br />
Query query = session.createQuery(hql);<br />
//默认查询出来的list里存放的是一个Object数组，但是在这里list里存放的不再是默认的Object数组了，而是Map集合了<br />
<br />
List&lt;Map&gt; list = query.list();<br />
for(Map user : list){<br />
//一条记录里所有的字段值都是map里的一个元素,key是字符串0,1,2,3....，value是字段值<br />
//如果将hql改为：String hql = " select new map(name as username,passwd as password) from Users";,那么key将不是字符串0,1,2...了，而是"username","password"了<br />
String name = (String)user.get("0");//get("0");是get(key),注意:0,1,2...是字符串，而不是整形<br />
String passwd = (String)user.get("1");<br />
System.out.println(name + " : " + passwd);<br />
<br />
}<br />
<br />
/**<br />
输出结果为：<br />
name1 : password1<br />
name2 : password2<br />
name3 : password3<br />
*/<br />
6.修改默认查询结果(query.list())不以Object[]数组形式返回，以Set形式返回,<span style="color: red;">但是因为Set里是不允许有重复的元素，所以:username和password的值不能相同。</span>只需将hql改为：String
hql = " select new set(name,passwd) from Users";<br />
</pre>
7.修改默认查询结果(query.list())不以Object[]数组形式返回，以自定义类型返回 <br />
自定义类：<br />
package com.domain;<br />
<pre class="java" name="code">public class MyUser {<br />
private String username;<br />
private String password;<br />
//因为：String hql = " select new  com.domain.MyUser(name,passwd) from Users";所以必须要有接受2个参数的构造函数<br />
public MyUser(String username,String password){<br />
this.username = username;<br />
this.password = password;<br />
}<br />
<br />
public String getUsername() {<br />
return username;<br />
}<br />
public void setUsername(String username) {<br />
this.username = username;<br />
}<br />
<br />
public String getPassword() {<br />
return password;<br />
}<br />
<br />
public void setPassword(String password) {<br />
this.password = password;<br />
}<br />
}<br />
<br />
</pre>
<br />
<pre class="java" name="code">//通过query.list()出来的list里存放的不再是默认的Object数组了,而是自定义的类MyUser,必须加包名，String hql = "from Users";中的Users类也是必须加包名的，但是因为再Users.hbm.xml里&lt;hibernate-mapping auto-import="true"&gt; auto-import默认值为true（所以auto-import属性也可以不写）,自动导入了<br />
String hql = " select new  com.domain.MyUser(name,passwd) from Users";<br />
Query query = session.createQuery(hql);<br />
//默认查询出来的list里存放的是一个Object数组，但是在这里list里存放的不再是默认的Object数组了，而是MyUser对象了<br />
List&lt;MyUser&gt; myUsers = query.list();<br />
for(MyUser myUser : myUsers){<br />
String name = myUser.getUsername();<br />
String passwd = myUser.getPassword();<br />
System.out.println(name + " : " + passwd);<br />
}<br />
<br />
/**<br />
<br />
输出结果为：<br />
name1 : password1<br />
name2 : password2<br />
name3 : password3<br />
*/<br />
<br />
</pre>
<br />
<br />
8：条件查询 <br />
<pre class="java" name="code">//条件查询，参数索引值从0开始，索引位置。通过setString,setParameter设置参数<br />
String hql = "from Users where name=? and passwd=?";<br />
Query query = session.createQuery(hql);<br />
//第1种方式<br />
//		query.setString(0, "name1");<br />
//		query.setString(1, "password1");<br />
//第2种方式<br />
query.setParameter(0, "name1",Hibernate.STRING);<br />
query.setParameter(1, "password1",Hibernate.STRING);<br />
List&lt;Users&gt; list = query.list();<br />
for(Users users : list){<br />
System.out.println(users.getId());<br />
}<br />
</pre>
<pre class="java" name="code">//条件查询，自定义索引名(参数名):username,:password.通过setString,setParameter设置参数<br />
String hql = "from Users where name=:username and passwd=:password";<br />
Query query = session.createQuery(hql);<br />
//第1种方式<br />
//		query.setString("username", "name1");<br />
//		query.setString("password", "password1");<br />
//第2种方式,第3个参数确定类型<br />
query.setParameter("username", "name1",Hibernate.STRING);<br />
query.setParameter("password", "password1",Hibernate.STRING);<br />
List&lt;Users&gt; list = query.list();<br />
for(Users users : list){<br />
out.println(users.getId());<br />
}<br />
<br />
</pre>
<pre class="java" name="code">//条件查询,通过setProperties设置参数<br />
String hql = "from Users where name=:username and passwd=:password";<br />
Query query = session.createQuery(hql);<br />
//MyUser类的2个属性必须和:username和:password对应<br />
MyUser myUser = new MyUser("name1","password1");<br />
query.setProperties(myUser);<br />
List&lt;Users&gt; list = query.list();<br />
for(Users users : list){<br />
System.out.println(users.getId());<br />
}<br />
<br />
</pre>
<img src ="http://www.blogjava.net/hwpok/aggbug/240089.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hwpok/" target="_blank">无名氏</a> 2008-11-12 14:23 <a href="http://www.blogjava.net/hwpok/archive/2008/11/12/240089.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>xdoclet2  例子</title><link>http://www.blogjava.net/hwpok/archive/2008/10/20/235519.html</link><dc:creator>无名氏</dc:creator><author>无名氏</author><pubDate>Mon, 20 Oct 2008 11:21:00 GMT</pubDate><guid>http://www.blogjava.net/hwpok/archive/2008/10/20/235519.html</guid><wfw:comment>http://www.blogjava.net/hwpok/comments/235519.html</wfw:comment><comments>http://www.blogjava.net/hwpok/archive/2008/10/20/235519.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hwpok/comments/commentRss/235519.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hwpok/services/trackbacks/235519.html</trackback:ping><description><![CDATA[Customer.java<br />
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 0, 255);">package</span><span style="color: rgb(0, 0, 0);">&nbsp;org.roadway.wisp.test;<br />
<br />
</span><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);">&nbsp;java.io.Serializable;<br />
</span><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);">&nbsp;java.util.Date;<br />
</span><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);">&nbsp;java.util.HashSet;<br />
<br />
</span><span style="color: rgb(0, 128, 0);">/**</span><span style="color: rgb(0, 128, 0);"><br />
&nbsp;*&nbsp;@hibernate.class&nbsp;table="ZD_COSTOMER"<br />
&nbsp;</span><span style="color: rgb(0, 128, 0);">*/</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">class</span><span style="color: rgb(0, 0, 0);">&nbsp;Customer&nbsp;</span><span style="color: rgb(0, 0, 255);">implements</span><span style="color: rgb(0, 0, 0);">&nbsp;Serializable<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">private</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">static</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">final</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">long</span><span style="color: rgb(0, 0, 0);">&nbsp;serialVersionUID&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 0);">939548333216539319L</span><span style="color: rgb(0, 0, 0);">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">private</span><span style="color: rgb(0, 0, 0);">&nbsp;Long&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;customerId;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">private</span><span style="color: rgb(0, 0, 0);">&nbsp;String&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;customerName;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">private</span><span style="color: rgb(0, 0, 0);">&nbsp;Date&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;birthday;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">private</span><span style="color: rgb(0, 0, 0);">&nbsp;HashSet</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">Order</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;orders;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">/**</span><span style="color: rgb(0, 128, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@hibernate.id&nbsp;generator-class="sequence"&nbsp;column="CUSTOMER_ID"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unsaved-value&nbsp;=&nbsp;"null"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@hibernate.generator-param&nbsp;name="sequence"&nbsp;value="SQ_PERSON_ID"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: rgb(128, 128, 128);">@return</span><span style="color: rgb(0, 128, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">*/</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);">&nbsp;Long&nbsp;getCustomerId()<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);">&nbsp;customerId;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">/**</span><span style="color: rgb(0, 128, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@hibernate.property&nbsp;column="CUSTOMER_NAME"&nbsp;length="32"&nbsp;not-null="true"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">*/</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);">&nbsp;String&nbsp;getCustomerName()<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);">&nbsp;customerName;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">/**</span><span style="color: rgb(0, 128, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@hibernate.property&nbsp;column="BIRTHDAY"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">*/</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);">&nbsp;Date&nbsp;getBirthday()<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);">&nbsp;birthday;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">/**</span><span style="color: rgb(0, 128, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@hibernate.set&nbsp;table="ZD_ORDER"&nbsp;lazy="true"&nbsp;inverse="true"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@hibernate.key&nbsp;column="CUSTOMER_ID"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@hibernate.one-to-many&nbsp;class="org.roadway.wisp.test.Order"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">*/</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);">&nbsp;HashSet</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">Order</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);">&nbsp;getOrders()<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);">&nbsp;orders;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">void</span><span style="color: rgb(0, 0, 0);">&nbsp;setCustomerId(Long&nbsp;customerId)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.customerId&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;customerId;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">void</span><span style="color: rgb(0, 0, 0);">&nbsp;setCustomerName(String&nbsp;customerName)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.customerName&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;customerName;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">void</span><span style="color: rgb(0, 0, 0);">&nbsp;setBirthday(Date&nbsp;birthday)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.birthday&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;birthday;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">void</span><span style="color: rgb(0, 0, 0);">&nbsp;setOrders(HashSet</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">Order</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);">&nbsp;orders)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.orders&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;orders;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}<br />
</span></div>
Order.java<br />
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 0, 255);">package</span><span style="color: rgb(0, 0, 0);">&nbsp;org.roadway.wisp.test;<br />
<br />
</span><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);">&nbsp;java.io.Serializable;<br />
<br />
</span><span style="color: rgb(0, 128, 0);">/**</span><span style="color: rgb(0, 128, 0);"><br />
&nbsp;*&nbsp;@hibernate.class&nbsp;table="ZD_ORDER"<br />
&nbsp;</span><span style="color: rgb(0, 128, 0);">*/</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">class</span><span style="color: rgb(0, 0, 0);">&nbsp;Order&nbsp;</span><span style="color: rgb(0, 0, 255);">implements</span><span style="color: rgb(0, 0, 0);">&nbsp;Serializable<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">private</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">static</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">final</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">long</span><span style="color: rgb(0, 0, 0);">&nbsp;serialVersionUID&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 0);">8989273619109202636L</span><span style="color: rgb(0, 0, 0);">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">private</span><span style="color: rgb(0, 0, 0);">&nbsp;Long&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;orderId;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">private</span><span style="color: rgb(0, 0, 0);">&nbsp;String&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;orderName;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">private</span><span style="color: rgb(0, 0, 0);">&nbsp;Double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;money;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">private</span><span style="color: rgb(0, 0, 0);">&nbsp;Customer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;customer;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">/**</span><span style="color: rgb(0, 128, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@hibernate.id&nbsp;generator-class="sequence"&nbsp;column="ORDER_ID"&nbsp;unsaved-value&nbsp;=<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"null"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@hibernate.generator-param&nbsp;name="sequence"&nbsp;value="SQ_ORDER_ID"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: rgb(128, 128, 128);">@return</span><span style="color: rgb(0, 128, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">*/</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);">&nbsp;Long&nbsp;getOrderId()<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);">&nbsp;orderId;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">/**</span><span style="color: rgb(0, 128, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@hibernate.property&nbsp;column="ORDER_NAME"&nbsp;length="32"&nbsp;not-null="true"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">*/</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);">&nbsp;String&nbsp;getOrderName()<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);">&nbsp;orderName;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">/**</span><span style="color: rgb(0, 128, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@hibernate.property&nbsp;column="MONEY"&nbsp;not-null="true"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">*/</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);">&nbsp;Double&nbsp;getMoney()<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);">&nbsp;money;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">/**</span><span style="color: rgb(0, 128, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@hibernate.many-to-one&nbsp;column="teacher_id"&nbsp;not-null="true"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">*/</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);">&nbsp;Customer&nbsp;getCustomer()<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);">&nbsp;customer;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}<br />
</span></div>
xdoclet.xml<br />
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 0, 255);">&lt;?</span><span style="color: rgb(255, 0, 255);">xml&nbsp;version="1.0"</span><span style="color: rgb(0, 0, 255);">?&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">project&nbsp;</span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="xdoclet"</span><span style="color: rgb(255, 0, 0);">&nbsp;default</span><span style="color: rgb(0, 0, 255);">="hibernate.mapping.generate"</span><span style="color: rgb(255, 0, 0);">&nbsp;basedir</span><span style="color: rgb(0, 0, 255);">="."</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">property&nbsp;</span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="project.src"</span><span style="color: rgb(255, 0, 0);">&nbsp;value</span><span style="color: rgb(0, 0, 255);">="test"</span><span style="color: rgb(0, 0, 255);">/&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">property&nbsp;</span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="po.package"</span><span style="color: rgb(255, 0, 0);">&nbsp;value</span><span style="color: rgb(0, 0, 255);">="org/roadway/wisp/test"</span><span style="color: rgb(0, 0, 255);">/&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">property&nbsp;</span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="xdoclet.lib"</span><span style="color: rgb(255, 0, 0);">&nbsp;value</span><span style="color: rgb(0, 0, 255);">="E:/user_hvp/xdoclet-plugins-dist-1.0.4/lib"</span><span style="color: rgb(0, 0, 255);">/&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">path&nbsp;</span><span style="color: rgb(255, 0, 0);">id</span><span style="color: rgb(0, 0, 255);">="xdoclet.task.classpath"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">fileset&nbsp;</span><span style="color: rgb(255, 0, 0);">dir</span><span style="color: rgb(0, 0, 255);">="${xdoclet.lib}"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">include&nbsp;</span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="*.jar"</span><span style="color: rgb(255, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">/&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">fileset</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">pathelement&nbsp;</span><span style="color: rgb(255, 0, 0);">location</span><span style="color: rgb(0, 0, 255);">="${xdoclet.lib}/xdoclet-plugin-hibernate-1.0.4.jar"</span><span style="color: rgb(255, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">/&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">path</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">taskdef&nbsp;</span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="xdoclet"</span><span style="color: rgb(255, 0, 0);">&nbsp;classname</span><span style="color: rgb(0, 0, 255);">="org.xdoclet.ant.XDocletTask"</span><span style="color: rgb(255, 0, 0);">&nbsp;classpathref</span><span style="color: rgb(0, 0, 255);">="xdoclet.task.classpath"</span><span style="color: rgb(255, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">/&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">target&nbsp;</span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="hibernate.mapping.generate"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">xdoclet</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">fileset&nbsp;</span><span style="color: rgb(255, 0, 0);">dir</span><span style="color: rgb(0, 0, 255);">="${project.src}"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">include&nbsp;</span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="${po.package}/*.java"</span><span style="color: rgb(255, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">/&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">fileset</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">component&nbsp;</span><span style="color: rgb(255, 0, 0);">classname</span><span style="color: rgb(0, 0, 255);">="org.xdoclet.plugin.hibernate.HibernateMappingPlugin"</span><span style="color: rgb(255, 0, 0);">&nbsp;destdir</span><span style="color: rgb(0, 0, 255);">="${basedir}/${project.src}"</span><span style="color: rgb(255, 0, 0);">&nbsp;version</span><span style="color: rgb(0, 0, 255);">="3.0"</span><span style="color: rgb(255, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">/&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">xdoclet</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">target</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">project</span><span style="color: rgb(0, 0, 255);">&gt;</span></div>
xdoclet1.x不支持泛型,xdoclet2支持!!<br />
<img src ="http://www.blogjava.net/hwpok/aggbug/235519.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hwpok/" target="_blank">无名氏</a> 2008-10-20 19:21 <a href="http://www.blogjava.net/hwpok/archive/2008/10/20/235519.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>请教xdoclet高手</title><link>http://www.blogjava.net/hwpok/archive/2008/10/20/235444.html</link><dc:creator>无名氏</dc:creator><author>无名氏</author><pubDate>Mon, 20 Oct 2008 05:50:00 GMT</pubDate><guid>http://www.blogjava.net/hwpok/archive/2008/10/20/235444.html</guid><wfw:comment>http://www.blogjava.net/hwpok/comments/235444.html</wfw:comment><comments>http://www.blogjava.net/hwpok/archive/2008/10/20/235444.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hwpok/comments/commentRss/235444.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hwpok/services/trackbacks/235444.html</trackback:ping><description><![CDATA[<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 0, 255);">&lt;?</span><span style="color: rgb(255, 0, 255);">xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"</span><span style="color: rgb(0, 0, 255);">?&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">project&nbsp;</span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="xdoclet-hibernate-zfv"</span><span style="color: rgb(255, 0, 0);">&nbsp;default</span><span style="color: rgb(0, 0, 255);">="init"</span><span style="color: rgb(255, 0, 0);">&nbsp;basedir</span><span style="color: rgb(0, 0, 255);">="."</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">property&nbsp;</span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="project.src"</span><span style="color: rgb(255, 0, 0);">&nbsp;value</span><span style="color: rgb(0, 0, 255);">="./src"</span><span style="color: rgb(255, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">/&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">property&nbsp;</span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="project.lib"</span><span style="color: rgb(255, 0, 0);">&nbsp;value</span><span style="color: rgb(0, 0, 255);">="D:/workspace/xcomr/web/WEB-INF/lib"</span><span style="color: rgb(255, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">/&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">property&nbsp;</span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="pojo.package"</span><span style="color: rgb(255, 0, 0);">&nbsp;value</span><span style="color: rgb(0, 0, 255);">="org/roadway/wisp/zd/po"</span><span style="color: rgb(255, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">/&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">property&nbsp;</span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="xdoclet.root"</span><span style="color: rgb(255, 0, 0);">&nbsp;value</span><span style="color: rgb(0, 0, 255);">="E:/user_hvp"</span><span style="color: rgb(255, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">/&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">property&nbsp;</span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="xdoclet.lib"</span><span style="color: rgb(255, 0, 0);">&nbsp;value</span><span style="color: rgb(0, 0, 255);">="${xdoclet.root}/xdoclet-1.2.3"</span><span style="color: rgb(255, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">/&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">property&nbsp;</span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="endtags"</span><span style="color: rgb(255, 0, 0);">&nbsp;value</span><span style="color: rgb(0, 0, 255);">="@xdoclet-generated&nbsp;at&nbsp;${TODAY}"</span><span style="color: rgb(255, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">/&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">path&nbsp;</span><span style="color: rgb(255, 0, 0);">id</span><span style="color: rgb(0, 0, 255);">="classpath"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">fileset&nbsp;</span><span style="color: rgb(255, 0, 0);">dir</span><span style="color: rgb(0, 0, 255);">="${xdoclet.lib}"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">include&nbsp;</span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="*.jar"</span><span style="color: rgb(255, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">/&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">fileset</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">fileset&nbsp;</span><span style="color: rgb(255, 0, 0);">dir</span><span style="color: rgb(0, 0, 255);">="${project.lib}"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">include&nbsp;</span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="*.jar"</span><span style="color: rgb(255, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">/&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">fileset</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">path</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">target&nbsp;</span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="init"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">taskdef&nbsp;</span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="hibernatedoclet"</span><span style="color: rgb(255, 0, 0);">&nbsp;classname</span><span style="color: rgb(0, 0, 255);">="xdoclet.modules.hibernate.HibernateDocletTask"</span><span style="color: rgb(255, 0, 0);">&nbsp;classpathref</span><span style="color: rgb(0, 0, 255);">="classpath"</span><span style="color: rgb(255, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">/&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">target</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">target&nbsp;</span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="generate-mapping"</span><span style="color: rgb(255, 0, 0);">&nbsp;depends</span><span style="color: rgb(0, 0, 255);">="init"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">hibernatedoclet&nbsp;</span><span style="color: rgb(255, 0, 0);">destdir</span><span style="color: rgb(0, 0, 255);">="${project.src}"</span><span style="color: rgb(255, 0, 0);">&nbsp;excludedtags</span><span style="color: rgb(0, 0, 255);">="@version,@author,@todo,@see"</span><span style="color: rgb(255, 0, 0);">&nbsp;addedtags</span><span style="color: rgb(0, 0, 255);">="${endtags}"</span><span style="color: rgb(255, 0, 0);">&nbsp;force</span><span style="color: rgb(0, 0, 255);">="false"</span><span style="color: rgb(255, 0, 0);">&nbsp;verbose</span><span style="color: rgb(0, 0, 255);">="true"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">fileset&nbsp;</span><span style="color: rgb(255, 0, 0);">dir</span><span style="color: rgb(0, 0, 255);">="${project.src}"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">include&nbsp;</span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="${pojo.package}/Person.java"</span><span style="color: rgb(255, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">/&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">fileset</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">hibernate&nbsp;</span><span style="color: rgb(255, 0, 0);">version</span><span style="color: rgb(0, 0, 255);">="3.0"</span><span style="color: rgb(255, 0, 0);">&nbsp;xmlencoding</span><span style="color: rgb(0, 0, 255);">="gb2312"</span><span style="color: rgb(255, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">/&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">hibernatedoclet</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">target</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">target&nbsp;</span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="generate-schema-mysql"</span><span style="color: rgb(255, 0, 0);">&nbsp;depends</span><span style="color: rgb(0, 0, 255);">="init"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">taskdef&nbsp;</span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="hibernatedoclet"</span><span style="color: rgb(255, 0, 0);">&nbsp;classname</span><span style="color: rgb(0, 0, 255);">="xdoclet.modules.hibernate.HibernateDocletTask"</span><span style="color: rgb(255, 0, 0);">&nbsp;classpathref</span><span style="color: rgb(0, 0, 255);">="classpath"</span><span style="color: rgb(255, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">/&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">taskdef&nbsp;</span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="schemaexport"</span><span style="color: rgb(255, 0, 0);">&nbsp;classname</span><span style="color: rgb(0, 0, 255);">="org.hibernate.tool.hbm2ddl.SchemaExportTask"</span><span style="color: rgb(255, 0, 0);">&nbsp;classpathref</span><span style="color: rgb(0, 0, 255);">="classpath"</span><span style="color: rgb(255, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">/&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">property&nbsp;</span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="hibernate.dialect"</span><span style="color: rgb(255, 0, 0);">&nbsp;value</span><span style="color: rgb(0, 0, 255);">="org.hibernate.dialect.MySQLInnoDBDialect"</span><span style="color: rgb(255, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">/&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">property&nbsp;</span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="hibernate.format_sql"</span><span style="color: rgb(255, 0, 0);">&nbsp;value</span><span style="color: rgb(0, 0, 255);">="true"</span><span style="color: rgb(255, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">/&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">property&nbsp;</span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="hibernate.use_sql_comments"</span><span style="color: rgb(255, 0, 0);">&nbsp;value</span><span style="color: rgb(0, 0, 255);">="true"</span><span style="color: rgb(255, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">/&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">schemaexport&nbsp;</span><span style="color: rgb(255, 0, 0);">quiet</span><span style="color: rgb(0, 0, 255);">="no"</span><span style="color: rgb(255, 0, 0);">&nbsp;text</span><span style="color: rgb(0, 0, 255);">="yes"</span><span style="color: rgb(255, 0, 0);">&nbsp;drop</span><span style="color: rgb(0, 0, 255);">="no"</span><span style="color: rgb(255, 0, 0);">&nbsp;delimiter</span><span style="color: rgb(0, 0, 255);">=";"</span><span style="color: rgb(255, 0, 0);">&nbsp;output</span><span style="color: rgb(0, 0, 255);">="${project.src}/${pojo.package}/table-mysql-schema.sql"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">fileset&nbsp;</span><span style="color: rgb(255, 0, 0);">dir</span><span style="color: rgb(0, 0, 255);">="${project.src}"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">include&nbsp;</span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="${pojo.package}/*.hbm.xml"</span><span style="color: rgb(255, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">/&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">fileset</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">schemaexport</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">target</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">project</span><span style="color: rgb(0, 0, 255);">&gt;</span></div>
<br />
问题:上面的<span style="color: rgb(0, 0, 255);">generate-mappin和</span><span style="color: rgb(0, 0, 255);">generate-schema-mysql单独运行,能正确生成文件,但depends="init"之后,不能生成文件.请高手指教.<br />
</span>
<img src ="http://www.blogjava.net/hwpok/aggbug/235444.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hwpok/" target="_blank">无名氏</a> 2008-10-20 13:50 <a href="http://www.blogjava.net/hwpok/archive/2008/10/20/235444.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>多一点jpa</title><link>http://www.blogjava.net/hwpok/archive/2008/09/27/231524.html</link><dc:creator>无名氏</dc:creator><author>无名氏</author><pubDate>Sat, 27 Sep 2008 08:08:00 GMT</pubDate><guid>http://www.blogjava.net/hwpok/archive/2008/09/27/231524.html</guid><wfw:comment>http://www.blogjava.net/hwpok/comments/231524.html</wfw:comment><comments>http://www.blogjava.net/hwpok/archive/2008/09/27/231524.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hwpok/comments/commentRss/231524.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hwpok/services/trackbacks/231524.html</trackback:ping><description><![CDATA[<p style="font-size: 12pt">Table<br />
Table用来定义entity主表的name，catalog，schema等属性。<br />
元数据属性说明：<br />
name: 表名 <br />
catalog: 对应关系数据库中的catalog <br />
schema：对应关系数据库中的schema <br />
UniqueConstraints:定义一个UniqueConstraint数组，指定需要建唯一约束的列 &nbsp; &nbsp;<br />
&nbsp; &nbsp; @Entity<br />
&nbsp; &nbsp; @Table(name="CUST")<br />
&nbsp; &nbsp; public class Customer { ... }<br />
　　SecondaryTable<br />
一个entity class可以映射到多表，SecondaryTable用来定义单个从表的名字，主键名字等属性。<br />
元数据属性说明：<br />
name: 表名 <br />
catalog: 对应关系数据库中的catalog <br />
schema：对应关系数据库中的schema <br />
pkJoin: 定义一个PrimaryKeyJoinColumn数组，指定从表的主键列 <br />
UniqueConstraints:定义一个UniqueConstraint数组，指定需要建唯一约束的列 <br />
下面的代码说明Customer类映射到两个表，主表名是CUSTOMER，从表名是CUST_DETAIL，从表的主键列和主表的主键列类型相同，列名为CUST_ID。 &nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; <br />
&nbsp; &nbsp; @Entity<br />
&nbsp; &nbsp; @Table(name="CUSTOMER")<br />
@SecondaryTable(name="CUST_DETAIL",pkJoin=@PrimaryKeyJoinColumn(name="CUST_ID"))<br />
public class Customer { ... } <br />
&nbsp; &nbsp; SecondaryTables<br />
当一个entity class映射到一个主表和多个从表时，用SecondaryTables来定义各个从表的属性。<br />
元数据属性说明：<br />
value： 定义一个SecondaryTable数组，指定每个从表的属性。 &nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;<br />
@Table(name = "CUSTOMER")<br />
@SecondaryTables( value = {<br />
@SecondaryTable(name = "CUST_NAME", pkJoin = { @PrimaryKeyJoinColumn(name = "STMO_ID", referencedColumnName = "id") }),<br />
@SecondaryTable(name = "CUST_ADDRESS", pkJoin = { @PrimaryKeyJoinColumn(name = "STMO_ID", referencedColumnName = "id") }) })<br />
public class Customer {} &nbsp; <br />
&nbsp; &nbsp; UniqueConstraint<br />
UniqueConstraint定义在Table或SecondaryTable元数据里，用来指定建表时需要建唯一约束的列。<br />
元数据属性说明：<br />
columnNames:定义一个字符串数组，指定要建唯一约束的列名。 &nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;<br />
&nbsp; @Entity<br />
&nbsp; @Table(name="EMPLOYEE",<br />
&nbsp; &nbsp;uniqueConstraints={@UniqueConstraint(columnNames={"EMP_ID", "EMP_NAME"})}<br />
&nbsp; )<br />
&nbsp; public class Employee { ... } &nbsp; <br />
&nbsp; &nbsp;Column<br />
Column元数据定义了映射到数据库的列的所有属性：列名，是否唯一，是否允许为空，是否允许更新等。<br />
元数据属性说明：<br />
name:列名。 <br />
unique: 是否唯一 <br />
nullable: 是否允许为空 <br />
insertable: 是否允许插入 <br />
updatable: 是否允许更新 <br />
columnDefinition: 定义建表时创建此列的DDL <br />
secondaryTable: 从表名。如果此列不建在主表上（默认建在主表），该属性定义该列所在从表的名字。 &nbsp; &nbsp;&nbsp; &nbsp; <br />
&nbsp; &nbsp; public class Person {<br />
@Column(name = "PERSONNAME", unique = true, nullable = false, updatable = true)<br />
private String name;<br />
@Column(name = "PHOTO", columnDefinition = "BLOB NOT NULL", secondaryTable="PER_PHOTO")<br />
private byte[] picture;<br />
&nbsp; &nbsp; JoinColumn<br />
如果在entity class的field上定义了关系（one2one或one2many等），我们通过JoinColumn来定义关系的属性。JoinColumn的大部分属性和Column类似。<br />
元数据属性说明：<br />
name:列名。 <br />
referencedColumnName:该列指向列的列名（建表时该列作为外键列指向关系另一端的指定列） <br />
unique: 是否唯一 <br />
nullable: 是否允许为空 <br />
insertable: 是否允许插入 <br />
updatable: 是否允许更新 <br />
columnDefinition: 定义建表时创建此列的DDL <br />
secondaryTable: 从表名。如果此列不建在主表上（默认建在主表），该属性定义该列所在从表的名字。 <br />
下面的代码说明Custom和Order是一对一关系。在Order对应的映射表建一个名为CUST_ID的列，该列作为外键指向Custom对应表中名为ID的列。 &nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; <br />
public class Custom {<br />
&nbsp; &nbsp; @OneToOne<br />
@JoinColumn(<br />
name="CUST_ID", referencedColumnName="ID", unique=true, nullable=true, updatable=true)<br />
public Order getOrder() {<br />
&nbsp; return order;<br />
} &nbsp; <br />
&nbsp; &nbsp; JoinColumns<br />
如果在entity class的field上定义了关系（one2one或one2many等），并且关系存在多个JoinColumn，用JoinColumns定义多个JoinColumn的属性。<br />
元数据属性说明：<br />
value: 定义JoinColumn数组，指定每个JoinColumn的属性。 <br />
下面的代码说明Custom和Order是一对一关系。在Order对应的映射表建两列，一列名为CUST_ID，该列作为外键指向Custom对应表中名为ID的列,另一列名为CUST_NAME，该列作为外键指向Custom对应表中名为NAME的列。 &nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; <br />
public class Custom {<br />
&nbsp; &nbsp; @OneToOne<br />
@JoinColumns({<br />
&nbsp; &nbsp; @JoinColumn(name="CUST_ID", referencedColumnName="ID"),<br />
&nbsp; &nbsp; @JoinColumn(name="CUST_NAME", referencedColumnName="NAME")<br />
})<br />
public Order getOrder() {<br />
&nbsp; return order;<br />
} &nbsp;<br />
&nbsp; &nbsp; Id<br />
声明当前field为映射表中的主键列。id值的获取方式有五种：TABLE, SEQUENCE, IDENTITY, AUTO, NONE。Oracle和DB2支持SEQUENCE，SQL Server和Sybase支持IDENTITY,mysql支持AUTO。所有的数据库都可以指定为AUTO，我们会根据不同数据库做转换。NONE(默认)需要用户自己指定Id的值。元数据属性说明：<br />
generate():主键值的获取类型 <br />
generator():TableGenerator的名字（当generate=GeneratorType.TABLE才需要指定该属性） <br />
下面的代码声明Task的主键列id是自动增长的。(Oracle和DB2从默认的SEQUENCE取值，SQL Server和Sybase该列建成IDENTITY，mysql该列建成auto increment。) &nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;<br />
&nbsp; &nbsp; @Entity<br />
&nbsp; &nbsp; @Table(name = "OTASK")<br />
&nbsp; &nbsp; public class Task {<br />
&nbsp; &nbsp;@Id(generate = GeneratorType.AUTO)<br />
&nbsp; &nbsp;public Integer getId() {<br />
&nbsp; &nbsp; return id;<br />
&nbsp; &nbsp;}<br />
&nbsp; &nbsp; } &nbsp; <br />
&nbsp; &nbsp; IdClass<br />
当entity class使用复合主键时，需要定义一个类作为id class。id class必须符合以下要求:类必须声明为public，并提供一个声明为public的空构造函数。必须实现Serializable接，覆写equals()和hashCode（）方法。entity class的所有id field在id class都要定义，且类型一样。<br />
元数据属性说明：<br />
value: id class的类名 &nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;<br />
&nbsp; &nbsp; public class EmployeePK implements java.io.Serializable{<br />
&nbsp; &nbsp; &nbsp;&nbsp; String empName;<br />
&nbsp; &nbsp; &nbsp;&nbsp; Integer empAge;<br />
&nbsp; &nbsp; public EmployeePK(){}<br />
&nbsp; &nbsp; public boolean equals(Object obj){ ......}<br />
&nbsp; &nbsp; public int hashCode(){......}<br />
&nbsp; &nbsp; }<br />
<br />
&nbsp; &nbsp; @IdClass(value=com.acme.EmployeePK.class)<br />
&nbsp; &nbsp; @Entity(access=FIELD)<br />
&nbsp; &nbsp; public class Employee {<br />
&nbsp; &nbsp; &nbsp;&nbsp; &nbsp;@Id String empName;<br />
&nbsp; &nbsp; &nbsp;&nbsp; &nbsp;@Id Integer empAge;<br />
&nbsp; &nbsp; } &nbsp; <br />
&nbsp; &nbsp; MapKey<br />
在一对多，多对多关系中，我们可以用Map来保存集合对象。默认用主键值做key，如果使用复合主键，则用id class的实例做key，如果指定了name属性，就用指定的field的值做key。<br />
元数据属性说明：<br />
name: 用来做key的field名字 <br />
下面的代码说明Person和Book之间是一对多关系。Person的books字段是Map类型，用Book的isbn字段的值作为Map的key。<br />
&nbsp; &nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; <br />
&nbsp; &nbsp; @Table(name = "PERSON")<br />
&nbsp; &nbsp; public class Person {<br />
@OneToMany(targetEntity = Book.class, cascade = CascadeType.ALL, mappedBy = "person")<br />
@MapKey(name = "isbn")<br />
private Map books = new HashMap();<br />
&nbsp; &nbsp; }<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; OrderBy<br />
在一对多，多对多关系中，有时我们希望从数据库加载出来的集合对象是按一定方式排序的，这可以通过OrderBy来实现，默认是按对象的主键升序排列。<br />
元数据属性说明：<br />
value: 字符串类型，指定排序方式。格式为"fieldName1 [ASC|DESC],fieldName2 [ASC|DESC],......",排序类型可以不指定，默认是ASC。 <br />
下面的代码说明Person和Book之间是一对多关系。集合books按照Book的isbn升序，name降序排列。<br />
&nbsp; &nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; <br />
&nbsp; &nbsp; @Table(name = "MAPKEY_PERSON")<br />
&nbsp; &nbsp; public class Person {<br />
@OneToMany(targetEntity = Book.class, cascade = CascadeType.ALL, mappedBy = "person")<br />
@OrderBy(name = "isbn ASC, name DESC")<br />
private List books = new ArrayList();<br />
&nbsp; &nbsp; } &nbsp; <br />
&nbsp; &nbsp; PrimaryKeyJoinColumn<br />
在三种情况下会用到PrimaryKeyJoinColumn。 <br />
继承。 <br />
entity class映射到一个或多个从表。从表根据主表的主键列（列名为referencedColumnName值的列），建立一个类型一样的主键列，列名由name属性定义。 <br />
one2one关系，关系维护端的主键作为外键指向关系被维护端的主键，不再新建一个外键列。 <br />
元数据属性说明：<br />
name:列名。 <br />
referencedColumnName:该列引用列的列名 <br />
columnDefinition: 定义建表时创建此列的DDL <br />
下面的代码说明Customer映射到两个表，主表CUSTOMER,从表CUST_DETAIL，从表需要建立主键列CUST_ID，该列和主表的主键列id除了列名不同，其他定义一样。 &nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; <br />
&nbsp; &nbsp; @Entity<br />
&nbsp; &nbsp; @Table(name="CUSTOMER")<br />
@SecondaryTable(name="CUST_DETAIL",pkJoin=@PrimaryKeyJoinColumn(name="CUST_ID"，referencedColumnName="id"))<br />
public class Customer { <br />
&nbsp; @Id(generate = GeneratorType.AUTO)<br />
&nbsp; &nbsp;public Integer getId() {<br />
&nbsp; &nbsp; return id;<br />
&nbsp; &nbsp;}<br />
} &nbsp; <br />
&nbsp; &nbsp; 下面的代码说明Employee和EmployeeInfo是一对一关系，Employee的主键列id作为外键指向EmployeeInfo的主键列INFO_ID。 &nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; <br />
&nbsp; &nbsp; @Table(name = "Employee")<br />
&nbsp; &nbsp; public class Employee {<br />
@OneToOne<br />
@PrimaryKeyJoinColumn(name = "id", referencedColumnName="INFO_ID")<br />
EmployeeInfo info;<br />
} &nbsp; <br />
&nbsp; &nbsp; PrimaryKeyJoinColumns<br />
如果entity class使用了复合主键，指定单个PrimaryKeyJoinColumn不能满足要求时，可以用PrimaryKeyJoinColumns来定义多个PrimaryKeyJoinColumn。 <br />
元数据属性说明：<br />
value: 一个PrimaryKeyJoinColumn数组，包含所有PrimaryKeyJoinColumn。 <br />
下面的代码说明了Employee和EmployeeInfo是一对一关系。他们都使用复合主键，建表时需要在Employee表建立一个外键，从Employee的主键列id,name指向EmployeeInfo的主键列INFO_ID和INFO_NAME. &nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; <br />
&nbsp; &nbsp;@Entity<br />
&nbsp; &nbsp;@IdClass(EmpPK.class)<br />
&nbsp; &nbsp;@Table(name = "EMPLOYEE")<br />
&nbsp; &nbsp;public class Employee {<br />
private int id;<br />
private String name;<br />
private String address;<br />
@OneToOne(cascade = CascadeType.ALL)<br />
@PrimaryKeyJoinColumns({<br />
@PrimaryKeyJoinColumn(name="id", referencedColumnName="INFO_ID"),<br />
@PrimaryKeyJoinColumn(name="name" , referencedColumnName="INFO_NAME")})<br />
EmployeeInfo info;<br />
&nbsp; &nbsp; }<br />
&nbsp; &nbsp; @Entity<br />
&nbsp; &nbsp; @IdClass(EmpPK.class)<br />
&nbsp; &nbsp; @Table(name = "EMPLOYEE_INFO")<br />
&nbsp; &nbsp; public class EmployeeInfo {<br />
@Id<br />
@Column(name = "INFO_ID")<br />
private int id;<br />
@Id<br />
@Column(name = "INFO_NAME")<br />
private String name;<br />
} &nbsp; <br />
&nbsp; &nbsp; Transient<br />
Transient用来注释entity的属性，指定的这些属性不会被持久化，也不会为这些属性建表。<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; @Transient<br />
&nbsp; &nbsp; private String name; &nbsp; 　　<br />
Version<br />
Version指定实体类在乐观事务中的version属性。在实体类重新由EntityManager管理并且加入到乐观事务中时，保证完整性。每一个类只能有一个属性被指定为version，version属性应该映射到实体类的主表上。<br />
下面的代码说明versionNum属性作为这个类的version，映射到数据库中主表的列名是OPTLOCK。 &nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; <br />
&nbsp; &nbsp; @Version<br />
&nbsp; &nbsp; @Column("OPTLOCK")<br />
&nbsp; &nbsp; protected int getVersionNum() { return versionNum &nbsp; <br />
&nbsp; &nbsp; Lob<br />
Lob指定一个属性作为数据库支持的大对象类型在数据库中存储。使用LobType这个枚举来定义Lob是二进制类型还是字符类型。<br />
LobType枚举类型说明：<br />
BLOB 二进制大对象，Byte[]或者Serializable的类型可以指定为BLOB。 <br />
CLOB 字符型大对象，char[]、Character[]或String类型可以指定为CLOB。 <br />
元数据属性说明：<br />
fetch： 定义这个字段是lazy loaded还是eagerly fetched。数据类型是FetchType枚举，默认为LAZY,即lazy loaded. <br />
type： 定义这个字段在数据库中的JDBC数据类型。数据类型是LobType枚举，默认为BLOB。 <br />
下面的代码定义了一个BLOB类型的属性和一个CLOB类型的属性。 &nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; <br />
&nbsp; &nbsp; @Lob<br />
&nbsp; &nbsp; @Column(name="PHOTO" columnDefinition="BLOB NOT NULL")<br />
&nbsp; &nbsp; protected JPEGImage picture; &nbsp; &nbsp;<br />
&nbsp; &nbsp; @Lob(fetch=EAGER, type=CLOB)<br />
&nbsp; &nbsp; @Column(name="REPORT")<br />
&nbsp; &nbsp; protected String report; &nbsp;<br />
&nbsp; &nbsp; JoinTable<br />
JoinTable在many-to-many关系的所有者一边定义。如果没有定义JoinTable，使用JoinTable的默认值。<br />
元数据属性说明：<br />
table:这个join table的Table定义。 <br />
joinColumns:定义指向所有者主表的外键列，数据类型是JoinColumn数组。 <br />
inverseJoinColumns:定义指向非所有者主表的外键列，数据类型是JoinColumn数组。 <br />
下面的代码定义了一个连接表CUST和PHONE的join table。join table的表名是CUST_PHONE，包含两个外键，一个外键是CUST_ID，指向表CUST的主键ID，另一个外键是PHONE_ID，指向表PHONE的主键ID。 &nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; <br />
&nbsp; &nbsp; @JoinTable(<br />
&nbsp; &nbsp; <a href="mailto:table=@Table(name=CUST_PHONE"><u><font color="#0000ff">table=@Table(name=CUST_PHONE</font></u></a>),<br />
&nbsp; &nbsp; joinColumns=@JoinColumn(name="CUST_ID", referencedColumnName="ID"),<br />
&nbsp; &nbsp; inverseJoinColumns=@JoinColumn(name="PHONE_ID", referencedColumnName="ID")<br />
&nbsp; &nbsp; ) &nbsp; <br />
&nbsp; &nbsp; TableGenerator<br />
TableGenerator定义一个主键值生成器，在Id这个元数据的generate＝TABLE时，generator属性中可以使用生成器的名字。生成器可以在类、方法或者属性上定义。<br />
生成器是为多个实体类提供连续的ID值的表，每一行为一个类提供ID值，ID值通常是整数。<br />
元数据属性说明：<br />
name:生成器的唯一名字，可以被Id元数据使用。 <br />
table:生成器用来存储id值的Table定义。 <br />
pkColumnName:生成器表的主键名称。 <br />
valueColumnName:生成器表的ID值的列名称。 <br />
pkColumnValue:生成器表中的一行数据的主键值。 <br />
initialValue:id值的初始值。 <br />
allocationSize:id值的增量。 <br />
下面的代码定义了两个生成器empGen和addressGen，生成器的表是ID_GEN。 &nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;<br />
&nbsp; &nbsp; @Entity public class Employee {<br />
&nbsp; &nbsp; ...<br />
&nbsp; &nbsp; @TableGenerator(name="empGen",<br />
&nbsp; &nbsp; table=@Table(name="ID_GEN"),<br />
&nbsp; &nbsp; pkColumnName="GEN_KEY",<br />
&nbsp; &nbsp; valueColumnName="GEN_VALUE",<br />
&nbsp; &nbsp; pkColumnValue="EMP_ID",<br />
&nbsp; &nbsp; allocationSize=1)<br />
&nbsp; &nbsp; @Id(generate=TABLE, generator="empGen")<br />
&nbsp; &nbsp; public int id;<br />
&nbsp; &nbsp; ...<br />
&nbsp; &nbsp; } &nbsp; <br />
&nbsp; &nbsp; @Entity public class Address {<br />
&nbsp; &nbsp; ...<br />
&nbsp; &nbsp; @TableGenerator(name="addressGen",<br />
&nbsp; &nbsp; table=@Table(name="ID_GEN"),<br />
&nbsp; &nbsp; pkColumnValue="ADDR_ID")<br />
&nbsp; &nbsp; @Id(generate=TABLE, generator="addressGen")<br />
&nbsp; &nbsp; public int id;<br />
&nbsp; &nbsp; ...<br />
&nbsp; &nbsp; } &nbsp; <br />
&nbsp; &nbsp; SequenceGenerator<br />
SequenceGenerator定义一个主键值生成器，在Id这个元数据的generator属性中可以使用生成器的名字。生成器可以在类、方法或者属性上定义。生成器是数据库支持的sequence对象。<br />
元数据属性说明：<br />
name:生成器的唯一名字，可以被Id元数据使用。 <br />
sequenceName:数据库中，sequence对象的名称。如果不指定，会使用提供商指定的默认名称。 <br />
initialValue:id值的初始值。 <br />
allocationSize:id值的增量。 <br />
下面的代码定义了一个使用提供商默认名称的sequence生成器。 &nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; <br />
&nbsp; &nbsp; @SequenceGenerator(name="EMP_SEQ", allocationSize=25) &nbsp; &nbsp; <br />
&nbsp; &nbsp; DiscriminatorColumn<br />
DiscriminatorColumn定义在使用SINGLE_TABLE或JOINED继承策略的表中区别不继承层次的列。<br />
元数据属性说明：<br />
name:column的名字。默认值为TYPE。 <br />
columnDefinition:生成DDL的sql片断。 <br />
length:String类型的column的长度，其他类型使用默认值10。 <br />
下面的代码定义了一个列名为DISC，长度为20的String类型的区别列。 &nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; <br />
&nbsp; &nbsp; @Entity<br />
&nbsp; &nbsp; @Table(name="CUST")<br />
&nbsp; &nbsp; @Inheritance(strategy=SINGLE_TABLE,<br />
&nbsp; &nbsp; &nbsp;&nbsp; &nbsp;discriminatorType=STRING,<br />
&nbsp; &nbsp; &nbsp;&nbsp; discriminatorValue="CUSTOMER")<br />
&nbsp; &nbsp; @DiscriminatorColumn(name="DISC", length=20)<br />
&nbsp; &nbsp; public class Customer { ... }</p>
<img src ="http://www.blogjava.net/hwpok/aggbug/231524.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hwpok/" target="_blank">无名氏</a> 2008-09-27 16:08 <a href="http://www.blogjava.net/hwpok/archive/2008/09/27/231524.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一小点jpa </title><link>http://www.blogjava.net/hwpok/archive/2008/09/26/231275.html</link><dc:creator>无名氏</dc:creator><author>无名氏</author><pubDate>Fri, 26 Sep 2008 04:50:00 GMT</pubDate><guid>http://www.blogjava.net/hwpok/archive/2008/09/26/231275.html</guid><wfw:comment>http://www.blogjava.net/hwpok/comments/231275.html</wfw:comment><comments>http://www.blogjava.net/hwpok/archive/2008/09/26/231275.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hwpok/comments/commentRss/231275.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hwpok/services/trackbacks/231275.html</trackback:ping><description><![CDATA[<div style="border-right: #cccccc 1px solid; padding-right: 5px; padding-left: 4px; font-size: 13px; border-top: #cccccc 1px solid; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;org.test;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.io.Serializable;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.persistence.Column;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.persistence.Entity;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.persistence.GeneratedValue;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.persistence.GenerationType;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.persistence.Id;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.persistence.SequenceGenerator;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.persistence.Table;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />@SuppressWarnings(</span><span style="color: #000000">"</span><span style="color: #000000">serial</span><span style="color: #000000">"</span><span style="color: #000000">)<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />@Entity<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />@Table(name&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">t_student</span><span style="color: #000000">"</span><span style="color: #000000">)<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;Student&nbsp;</span><span style="color: #0000ff">implements</span><span style="color: #000000">&nbsp;Serializable<br />
<img id="Codehighlighter1_411_1077_Open_Image" onclick="this.style.display='none'; Codehighlighter1_411_1077_Open_Text.style.display='none'; Codehighlighter1_411_1077_Closed_Image.style.display='inline'; Codehighlighter1_411_1077_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif"  alt="" /><img style="display: none" id="Codehighlighter1_411_1077_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_411_1077_Closed_Text.style.display='none'; Codehighlighter1_411_1077_Open_Image.style.display='inline'; Codehighlighter1_411_1077_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif"  alt="" /></span><span style="border-right: #808080 1px solid; border-top: #808080 1px solid; border-left: #808080 1px solid; border-bottom: #808080 1px solid; display: none; background-color: #ffffff" id="Codehighlighter1_411_1077_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_411_1077_Open_Text"><span style="color: #000000">{<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;@Id<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;@GeneratedValue(strategy&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;GenerationType.SEQUENCE,&nbsp;generator&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">TRAIN_SEQ</span><span style="color: #000000">"</span><span style="color: #000000">)<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;@SequenceGenerator(name&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">TRAIN_SEQ</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;sequenceName&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">seq_student_id</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;allocationSize&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">)<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;@Column(name&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">student_id</span><span style="color: #000000">"</span><span style="color: #000000">)<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;Long&nbsp;&nbsp;&nbsp;studentId;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;@Column(name&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">student_name</span><span style="color: #000000">"</span><span style="color: #000000">)<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;studentName;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;Long&nbsp;getStudentId()<br />
<img id="Codehighlighter1_757_789_Open_Image" onclick="this.style.display='none'; Codehighlighter1_757_789_Open_Text.style.display='none'; Codehighlighter1_757_789_Closed_Image.style.display='inline'; Codehighlighter1_757_789_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif"  alt="" /><img style="display: none" id="Codehighlighter1_757_789_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_757_789_Closed_Text.style.display='none'; Codehighlighter1_757_789_Open_Image.style.display='inline'; Codehighlighter1_757_789_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border-right: #808080 1px solid; border-top: #808080 1px solid; border-left: #808080 1px solid; border-bottom: #808080 1px solid; display: none; background-color: #ffffff" id="Codehighlighter1_757_789_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_757_789_Open_Text"><span style="color: #000000">{<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;studentId;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;setStudentId(Long&nbsp;studentId)<br />
<img id="Codehighlighter1_845_887_Open_Image" onclick="this.style.display='none'; Codehighlighter1_845_887_Open_Text.style.display='none'; Codehighlighter1_845_887_Closed_Image.style.display='inline'; Codehighlighter1_845_887_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif"  alt="" /><img style="display: none" id="Codehighlighter1_845_887_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_845_887_Closed_Text.style.display='none'; Codehighlighter1_845_887_Open_Image.style.display='inline'; Codehighlighter1_845_887_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border-right: #808080 1px solid; border-top: #808080 1px solid; border-left: #808080 1px solid; border-bottom: #808080 1px solid; display: none; background-color: #ffffff" id="Codehighlighter1_845_887_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_845_887_Open_Text"><span style="color: #000000">{<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.studentId&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;studentId;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;String&nbsp;getStudentName()<br />
<img id="Codehighlighter1_933_967_Open_Image" onclick="this.style.display='none'; Codehighlighter1_933_967_Open_Text.style.display='none'; Codehighlighter1_933_967_Closed_Image.style.display='inline'; Codehighlighter1_933_967_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif"  alt="" /><img style="display: none" id="Codehighlighter1_933_967_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_933_967_Closed_Text.style.display='none'; Codehighlighter1_933_967_Open_Image.style.display='inline'; Codehighlighter1_933_967_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border-right: #808080 1px solid; border-top: #808080 1px solid; border-left: #808080 1px solid; border-bottom: #808080 1px solid; display: none; background-color: #ffffff" id="Codehighlighter1_933_967_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_933_967_Open_Text"><span style="color: #000000">{<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;studentName;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;setStudentName(String&nbsp;studentName)<br />
<img id="Codehighlighter1_1029_1075_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1029_1075_Open_Text.style.display='none'; Codehighlighter1_1029_1075_Closed_Image.style.display='inline'; Codehighlighter1_1029_1075_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif"  alt="" /><img style="display: none" id="Codehighlighter1_1029_1075_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_1029_1075_Closed_Text.style.display='none'; Codehighlighter1_1029_1075_Open_Image.style.display='inline'; Codehighlighter1_1029_1075_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border-right: #808080 1px solid; border-top: #808080 1px solid; border-left: #808080 1px solid; border-bottom: #808080 1px solid; display: none; background-color: #ffffff" id="Codehighlighter1_1029_1075_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_1029_1075_Open_Text"><span style="color: #000000">{<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.studentName&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;studentName;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif"  alt="" />}</span></span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span></div>
<img src ="http://www.blogjava.net/hwpok/aggbug/231275.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hwpok/" target="_blank">无名氏</a> 2008-09-26 12:50 <a href="http://www.blogjava.net/hwpok/archive/2008/09/26/231275.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Hibernate 属性一览表</title><link>http://www.blogjava.net/hwpok/archive/2008/08/13/221833.html</link><dc:creator>无名氏</dc:creator><author>无名氏</author><pubDate>Wed, 13 Aug 2008 14:22:00 GMT</pubDate><guid>http://www.blogjava.net/hwpok/archive/2008/08/13/221833.html</guid><wfw:comment>http://www.blogjava.net/hwpok/comments/221833.html</wfw:comment><comments>http://www.blogjava.net/hwpok/archive/2008/08/13/221833.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hwpok/comments/commentRss/221833.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hwpok/services/trackbacks/221833.html</trackback:ping><description><![CDATA[<table border="1"  cellspacing="1" cellpadding="0" >
    <thead>
        <tr>
            <th>属性名 </th>
            <th>用途 </th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td><tt class="literal"><font face="新宋体">hibernate.dialect</font></tt></td>
            <td>一个Hibernate <tt class="literal"><font face="新宋体">Dialect</font></tt>类名允许Hibernate针对特定的关系数据库生成优化的SQL. <span class="strong">取值</span> <tt class="literal"><font face="新宋体">full.classname.of.Dialect</font></tt> </td>
        </tr>
        <tr>
            <td><tt class="literal"><font face="新宋体">hibernate.show_sql</font></tt></td>
            <td>输出所有SQL语句到控制台. 有一个另外的选择是把<tt class="literal"><font face="新宋体">org.hibernate.SQL</font></tt>这个log category设为<tt class="literal"><font face="新宋体">debug</font></tt>。 <span class="strong">eg.</span> <tt class="literal"><font face="新宋体">true</font></tt> | <tt class="literal"><font face="新宋体">false</font></tt> </td>
        </tr>
        <tr>
            <td><tt class="literal"><font face="新宋体">hibernate.format_sql</font></tt></td>
            <td>在log和console中打印出更漂亮的SQL。 <span class="strong">取值</span> <tt class="literal"><font face="新宋体">true</font></tt> | <tt class="literal"><font face="新宋体">false</font></tt> </td>
        </tr>
        <tr>
            <td><tt class="literal"><font face="新宋体">hibernate.default_schema</font></tt></td>
            <td>在生成的SQL中, 将给定的schema/tablespace附加于非全限定名的表名上. <span class="strong">取值</span> <tt class="literal"><font face="新宋体">SCHEMA_NAME</font></tt> </td>
        </tr>
        <tr>
            <td><tt class="literal"><font face="新宋体">hibernate.default_catalog</font></tt></td>
            <td>在生成的SQL中, 将给定的catalog附加于非全限定名的表名上. <span class="strong">取值</span> <tt class="literal"><font face="新宋体">CATALOG_NAME</font></tt> </td>
        </tr>
        <tr>
            <td><tt class="literal"><font face="新宋体">hibernate.session_factory_name</font></tt></td>
            <td><tt class="literal"><font face="新宋体">SessionFactory</font></tt>创建后，将自动使用这个名字绑定到JNDI中. <span class="strong">取值</span> <tt class="literal"><font face="新宋体">jndi/composite/name</font></tt> </td>
        </tr>
        <tr>
            <td><tt class="literal"><font face="新宋体">hibernate.max_fetch_depth</font></tt></td>
            <td>为单向关联(一对一, 多对一)的外连接抓取（outer join fetch）树设置最大深度. 值为<tt class="literal"><font face="新宋体">0</font></tt>意味着将关闭默认的外连接抓取. <span class="strong">取值</span> 建议在<tt class="literal"><font face="新宋体">0</font></tt>到<tt class="literal"><font face="新宋体">3</font></tt>之间取值 </td>
        </tr>
        <tr>
            <td><tt class="literal"><font face="新宋体">hibernate.default_batch_fetch_size</font></tt></td>
            <td>为Hibernate关联的批量抓取设置默认数量. <span class="strong">取值</span> 建议的取值为<tt class="literal"><font face="新宋体">4</font></tt>, <tt class="literal"><font face="新宋体">8</font></tt>, 和<tt class="literal"><font face="新宋体">16</font></tt> </td>
        </tr>
        <tr>
            <td><tt class="literal"><font face="新宋体">hibernate.default_entity_mode</font></tt></td>
            <td>为由这个<tt class="literal"><font face="新宋体">SessionFactory</font></tt>打开的所有Session指定默认的实体表现模式. <span class="strong">取值</span> <tt class="literal"><font face="新宋体">dynamic-map</font></tt>, <tt class="literal"><font face="新宋体">dom4j</font></tt>, <tt class="literal"><font face="新宋体">pojo</font></tt> </td>
        </tr>
        <tr>
            <td><tt class="literal"><font face="新宋体">hibernate.order_updates</font></tt></td>
            <td>强制Hibernate按照被更新数据的主键，为SQL更新排序。这么做将减少在高并发系统中事务的死锁。 <span class="strong">取值</span> <tt class="literal"><font face="新宋体">true</font></tt> | <tt class="literal"><font face="新宋体">false</font></tt> </td>
        </tr>
        <tr>
            <td><tt class="literal"><font face="新宋体">hibernate.generate_statistics</font></tt></td>
            <td>如果开启, Hibernate将收集有助于性能调节的统计数据. <span class="strong">取值</span> <tt class="literal"><font face="新宋体">true</font></tt> | <tt class="literal"><font face="新宋体">false</font></tt> </td>
        </tr>
        <tr>
            <td><tt class="literal"><font face="新宋体">hibernate.use_identifer_rollback</font></tt></td>
            <td>如果开启, 在对象被删除时生成的标识属性将被重设为默认值. <span class="strong">取值</span> <tt class="literal"><font face="新宋体">true</font></tt> | <tt class="literal"><font face="新宋体">false</font></tt> </td>
        </tr>
        <tr>
            <td><tt class="literal"><font face="新宋体">hibernate.use_sql_comments</font></tt></td>
            <td>如果开启, Hibernate将在SQL中生成有助于调试的注释信息, 默认值为<tt class="literal"><font face="新宋体">false</font></tt>. <span class="strong">取值</span> <tt class="literal"><font face="新宋体">true</font></tt> | <tt class="literal"><font face="新宋体">false</font></tt> </td>
        </tr>
    </tbody>
</table><img src ="http://www.blogjava.net/hwpok/aggbug/221833.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hwpok/" target="_blank">无名氏</a> 2008-08-13 22:22 <a href="http://www.blogjava.net/hwpok/archive/2008/08/13/221833.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ThreadLocal 使用方法</title><link>http://www.blogjava.net/hwpok/archive/2008/08/02/219643.html</link><dc:creator>无名氏</dc:creator><author>无名氏</author><pubDate>Sat, 02 Aug 2008 15:26:00 GMT</pubDate><guid>http://www.blogjava.net/hwpok/archive/2008/08/02/219643.html</guid><wfw:comment>http://www.blogjava.net/hwpok/comments/219643.html</wfw:comment><comments>http://www.blogjava.net/hwpok/archive/2008/08/02/219643.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hwpok/comments/commentRss/219643.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hwpok/services/trackbacks/219643.html</trackback:ping><description><![CDATA[<p>public class Sequence {<br />
&nbsp;private static ThreadLocal&lt;Integer&gt; localVar = new ThreadLocal&lt;Integer&gt;() {<br />
&nbsp;&nbsp;public Integer initialValue() {<br />
&nbsp;&nbsp;&nbsp;return 0;<br />
&nbsp;&nbsp;}<br />
&nbsp;};</p>
<p>&nbsp;public int getNextVal() {<br />
&nbsp;&nbsp;localVar.set(localVar.get() + 1);<br />
&nbsp;&nbsp;return localVar.get();<br />
&nbsp;}</p>
<p>&nbsp;public static void main(String[] args) {<br />
&nbsp;&nbsp;Sequence seq = new Sequence();<br />
&nbsp;&nbsp;Client client1 = new Client(seq);<br />
&nbsp;&nbsp;Client client2 = new Client(seq);<br />
&nbsp;&nbsp;Client client3 = new Client(seq);</p>
<p>&nbsp;&nbsp;client1.start();<br />
&nbsp;&nbsp;client2.start();<br />
&nbsp;&nbsp;client3.start();</p>
<p>&nbsp;}</p>
<p>}<br />
<br />
<br />
</p>
<p>package hvp.spring.transaction.threadLocal;</p>
<p>public class Client extends Thread{<br />
&nbsp;private Sequence seq;<br />
&nbsp;public Client(Sequence seq){<br />
&nbsp;&nbsp;this.seq = seq;<br />
&nbsp;}<br />
&nbsp;public void run(){<br />
&nbsp;&nbsp;StringBuffer sb = new StringBuffer();<br />
&nbsp;&nbsp;for(int i=0;i&lt;5;i++){<br />
&nbsp;&nbsp;&nbsp;sb.append("Thread[");<br />
&nbsp;&nbsp;&nbsp;sb.append(Thread.currentThread().getName());<br />
&nbsp;&nbsp;&nbsp;sb.append("] seq[");<br />
&nbsp;&nbsp;&nbsp;sb.append(seq.getNextVal());<br />
&nbsp;&nbsp;&nbsp;sb.append("]");<br />
&nbsp;&nbsp;&nbsp;System.out.println(sb.toString());<br />
&nbsp;&nbsp;&nbsp;sb.delete(0, sb.length());<br />
&nbsp;&nbsp;}<br />
&nbsp;}<br />
}<br />
</p>
<p><br />
</p>
<img src ="http://www.blogjava.net/hwpok/aggbug/219643.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hwpok/" target="_blank">无名氏</a> 2008-08-02 23:26 <a href="http://www.blogjava.net/hwpok/archive/2008/08/02/219643.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Hibernate 的 jar 包说明</title><link>http://www.blogjava.net/hwpok/archive/2008/07/26/217651.html</link><dc:creator>无名氏</dc:creator><author>无名氏</author><pubDate>Sat, 26 Jul 2008 05:53:00 GMT</pubDate><guid>http://www.blogjava.net/hwpok/archive/2008/07/26/217651.html</guid><wfw:comment>http://www.blogjava.net/hwpok/comments/217651.html</wfw:comment><comments>http://www.blogjava.net/hwpok/archive/2008/07/26/217651.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/hwpok/comments/commentRss/217651.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hwpok/services/trackbacks/217651.html</trackback:ping><description><![CDATA[<div>
<p><span style="font-size: 10pt">主要介绍的是Hibernate使用到的.jar<br />
</span><span style="font-size: 10pt">Hibernate一共包括了23个jar包，令人眼花缭乱。本文将详细讲解Hibernate每个jar包的作用，便于你在应用中根据自己的需要进行取舍。<br />
</span><span style="font-size: 10pt">下载Hibernate，例如2.0.3稳定版本，解压缩，可以看到一个hibernate2.jar和lib目录下有22个jar包.</span></p>
<p style="font-size: 10pt">1.hibernate2:&nbsp;jar<br />
&nbsp;&nbsp;&nbsp; Hibernate的库，没有什么可说的，必须使用的jar包.</p>
<p style="font-size: 10pt">2.cglib-asm.jar<br />
&nbsp;&nbsp;&nbsp; CGLIB库，Hibernate用它来实现PO字节码的动态生成，非常核心的库，必须使用的jar包.</p>
<p>3.dom4j.jar<br />
<span style="font-size: 10pt">&nbsp;&nbsp;&nbsp; dom4j是一个Java的XML API，类似于jdom，用来读写XML文件的。dom4j是一个非常非常优秀的Java XML API，具有性能优异、功能强大和极端易用使用的特点，同时它也是一个开放源代码的软件，可以在SourceForge上找到它。在IBM developerWorks上面可以找到一篇文章，对主流的Java XML API进行的性能、功能和易用性的评测，dom4j无论在那个方面都是非常出色的。我早在将近两年之前就开始使用dom4j，直到现在。如今你可以看到越来越多的Java软件都在使用dom4j来读写XML，特别值得一提的是连Sun的JAXM也在用dom4j。这是必须使用的jar包，Hibernate用它来读写配置文件。</span></p>
<p>4.odmg.jar<br />
&nbsp;&nbsp;&nbsp; <span style="font-size: 10pt">ODMG是一个ORM的规范，Hibernate实现了ODMG规范，这是一个核心的库，必须使用的jar包。</span></p>
<p>5.commons-collections.jar<br />
&nbsp;&nbsp;&nbsp; <span style="font-size: 10pt">Apache Commons包中的一个，包含了一些Apache开发的集合类，功能比java.util.*强大。必须使用的jar包。</span></p>
<p>6.commons-beanutils.jar<br />
&nbsp;&nbsp;&nbsp;<span style="font-size: 10pt">&nbsp;Apache Commons包中的一个，包含了一些Bean工具类类。必须使用的jar包。<br />
<br />
</span>7.commons-lang.jar<br />
&nbsp;&nbsp;&nbsp; <span style="font-size: 10pt">Apache Commons包中的一个，包含了一些数据类型工具类，是java.lang.*的扩展。必须使用的jar包。</span></p>
<p>8.commons-logging.jar:<br />
&nbsp;&nbsp;&nbsp; <span style="font-size: 10pt">Apache Commons包中的一个，包含了日志功能，必须使用的jar包。这个包本身包含了一个Simple Logger，但是功能很弱。在运行的时候它会先在CLASSPATH找log4j，如果有，就使用log4j，如果没有，就找JDK1.4带的java.util.logging，如果也找不到就用Simple Logger。commons-logging.jar的出现是一个历史的的遗留的遗憾，当初Apache极力游说Sun把log4j加入JDK1.4，然而JDK1.4项目小组已经接近发布JDK1.4产品的时间了，因此拒绝了Apache的要求，使用自己的java.util.logging，这个包的功能比log4j差的很远，性能也一般。后来Apache就开发出来了commons-logging.jar用来兼容两个logger。因此用commons-logging.jar写的log程序，底层的Logger是可以切换的，你可以选择log4j，java.util.logging或者它自带的Simple Logger。不过我仍然强烈建议使用log4j，因为log4j性能很高，log输出信息时间几乎等于System.out，而处理一条log平均只需要5us。你可以在Hibernate的src目录下找到Hibernate已经为你准备好了的log4j的配置文件，你只需要到Apache 网站去下载log4j就可以了。commons-logging.jar也是必须的jar包。<br />
</span></p>
<p>-----------------------------------------------------------------------------------------<span style="font-size: 10pt"><br />
使用Hibernate必须的jar包就是以上的这几个，剩下的都是可选的。<br />
-----------------------------------------------------------------------------------------<span style="font-size: 10pt"><br />
</span></span></p>
<p>9.ant.jar<br />
&nbsp;&nbsp;&nbsp; <span style="font-size: 10pt">Ant编译工具的jar包，用来编译Hibernate源代码的。如果你不准备修改和编译Hibernate源代码，那么就没有什么用，可选的jar包</span><br />
<br />
10.optional.jar<br />
&nbsp;&nbsp;&nbsp; <span style="font-size: 10pt">Ant的一个辅助包。</span></p>
<p>11.c3p0.jar<br />
&nbsp;&nbsp;&nbsp; <span style="font-size: 10pt">C3PO是一个数据库连接池，Hibernate可以配置为使用C3PO连接池。如果你准备用这个连接池，就需要这个jar包。</span></p>
<p>12.proxool.jar<br />
&nbsp;&nbsp;&nbsp; <span style="font-size: 10pt">也是一个连接池，同上。<br />
<br />
</span>13.commons-pool.jar,commons-dbcp.jar<br />
&nbsp;&nbsp;&nbsp; <span style="font-size: 10pt">DBCP数据库连接池，Apache的Jakarta组织开发的，Tomcat4的连接池也是DBCP。</span></p>
<p>&nbsp;&nbsp;&nbsp; <span style="font-size: 10pt">实际上Hibernate自己也实现了一个非常非常简单的数据库连接池，加上上面3个，你实际上可以在Hibernate上选择4种不同的数据库连接池，选择哪一个看个人的偏好，不过DBCP可能更通用一些。另外强调一点，如果在EJB中使用Hibernate，一定要用App Server的连接池，不要用以上4种连接池，否则容器管理事务不起作用。</span></p>
<p>14.connector.jar<br />
&nbsp;&nbsp;&nbsp; <span style="font-size: 10pt">JCA 规范，如果你在App Server上把Hibernate配置为Connector的话，就需要这个jar。不过实际上一般App Server肯定会带上这个包，所以实际上是多余的包。<br />
<br />
</span>15.jaas.jar<br />
&nbsp;&nbsp;&nbsp;<span style="font-size: 10pt">&nbsp;JAAS是用来进行权限验证的，已经包含在JDK1.4里面了。所以实际上是多余的包。</span></p>
<p>16.jcs.jar<br />
&nbsp;&nbsp;&nbsp;<span style="font-size: 10pt">&nbsp;如果你准备在Hibernate中使用JCS的话，那么必须包括它，否则就不用。<br />
<br />
</span>17.jdbc2_0-stdext.jar<br />
&nbsp;&nbsp;&nbsp; <span style="font-size: 10pt">JDBC2.0的扩展包，一般来说数据库连接池会用上它。不过App Server都会带上，所以也是多余的。</span></p>
<p>18.jta.jar<br />
&nbsp;&nbsp;&nbsp; <span style="font-size: 10pt">JTA规范，当Hibernate使用JTA的时候需要，不过App Server都会带上，所以也是多余的。</span></p>
<p>19.junit.jar<br />
&nbsp;&nbsp;&nbsp; <span style="font-size: 10pt">Junit包，当你运行Hibernate自带的测试代码的时候需要，否则就不用。</span></p>
<p>20.xalan.jar, xerces.jar, xml-apis.jar<br />
&nbsp;&nbsp;&nbsp; <span style="font-size: 10pt">Xerces是XML解析器，Xalan是格式化器，xml-apis实际上是JAXP。一般App Server都会带上，JDK1.4也包含了解析器，不过不是Xerces，是Crimson，效率比较差，不过Hibernate用XML只不过是读取配置文件，性能没什么紧要的，所以也是多余的。</span></p>
</div>
<img src ="http://www.blogjava.net/hwpok/aggbug/217651.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hwpok/" target="_blank">无名氏</a> 2008-07-26 13:53 <a href="http://www.blogjava.net/hwpok/archive/2008/07/26/217651.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>