﻿<?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-午后星期午-随笔分类-JavaEE</title><link>http://www.blogjava.net/wshao/category/54088.html</link><description /><language>zh-cn</language><lastBuildDate>Tue, 25 Mar 2014 09:07:12 GMT</lastBuildDate><pubDate>Tue, 25 Mar 2014 09:07:12 GMT</pubDate><ttl>60</ttl><item><title>使用Spring mvc  利用java的反射技术，来扫描对应包下的注解请求url  统一保存在数据库中</title><link>http://www.blogjava.net/wshao/archive/2014/03/25/411455.html</link><dc:creator>午后星期午</dc:creator><author>午后星期午</author><pubDate>Tue, 25 Mar 2014 06:54:00 GMT</pubDate><guid>http://www.blogjava.net/wshao/archive/2014/03/25/411455.html</guid><wfw:comment>http://www.blogjava.net/wshao/comments/411455.html</wfw:comment><comments>http://www.blogjava.net/wshao/archive/2014/03/25/411455.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wshao/comments/commentRss/411455.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wshao/services/trackbacks/411455.html</trackback:ping><description><![CDATA[<div style="color: #464646; font-family: simsun; background-color: #bcd3e5;"></div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">仅对 &nbsp;<wbr>@requestMapping("/xxxx/其他参数") &nbsp;<wbr>的格式</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">&nbsp;<wbr>package cc.wshao.springmvc.util;</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;"></div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">import java.io.File;</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">import java.lang.reflect.Method;</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">import java.net.URL;</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;"></div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">import org.springframework.context.ApplicationContext;</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">import org.springframework.context.support.ClassPathXmlApplicationC<wbr>ontext;</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">import org.springframework.stereotype.Controller;</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">import org.springframework.web.bind.annotation.RequestMapping;</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;"></div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">import cc.wshao.springmvc.service.RightService;</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;"></div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;"></div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">public class RegRightUtils {</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">private static final String rootUrl = "/spring";</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">private static RightService rightService;</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">public static void main(String[] args) throws Exception {</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">ApplicationContext context = new ClassPathXmlApplicationC<wbr>ontext("beans.xml");</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">&nbsp;<wbr>&nbsp;rightService = context.getBean(RightService.class);</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">ClassLoader classLoader = RegRightUtils.class.getClassLoader();</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">URL url = classLoader.getResource("com/er07/book/springmvc/controller");</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">String rootPath = url.getPath().toString();</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">File rootFile = new File(rootPath);</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">File [] files = rootFile.listFiles();</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">for(File f: files) {</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">System.err.println(f.getName());</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">String className = f.getName().substring(0, f.getName().indexOf(".class"));</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">Class clazz = Class.forName("com.er07.book.springmvc.controller."+className);</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">parseClass(clazz); &nbsp;<wbr>//解析 &nbsp;<wbr>出url</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">}</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">&nbsp;<wbr></div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">}</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;"></div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">public &nbsp;<wbr>static void parseClass(Class clazz) {</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">&nbsp;<wbr></div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">if(clazz.isAnnotationPresent(Controller.class)) { &nbsp;<wbr>&nbsp;//是否为一个controller ?&nbsp;<wbr></div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">String classUrl ="";</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">&nbsp;<wbr>if(clazz.isAnnotationPresent(RequestMapping.class)) {</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">&nbsp;<wbr>RequestMapping requestMapping_clazz = (RequestMapping) clazz.getAnnotation(RequestMapping.class);</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">&nbsp;<wbr>&nbsp;classUrl = requestMapping_clazz.value()[0];</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">&nbsp;<wbr>&nbsp;<wbr></div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">&nbsp;<wbr>&nbsp;if(classUrl.equals("/")) { &nbsp;<wbr>//如果是"/" 的话 &nbsp;<wbr>制空 &nbsp;<wbr>&nbsp;&nbsp;<wbr></div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">&nbsp;<wbr>&nbsp;classUrl ="";</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">&nbsp;<wbr>&nbsp;}</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">&nbsp;<wbr>}</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">&nbsp;<wbr>Method [] ms = clazz.getDeclaredMethods();</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">&nbsp;<wbr></div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">&nbsp;<wbr>for(Method m :ms) {</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">&nbsp;<wbr></div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">&nbsp;<wbr>if(m.isAnnotationPresent(RequestMapping.class)) {</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">&nbsp;<wbr>RequestMapping requestMapping_method = m.getAnnotation(RequestMapping.class);</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">&nbsp;<wbr>String methodUrl = requestMapping_method.value()[0];</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">&nbsp;<wbr></div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">&nbsp;<wbr>&nbsp;&nbsp;<wbr>int &nbsp;<wbr>index = methodUrl.indexOf("/");</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">&nbsp;<wbr>&nbsp;&nbsp;<wbr>index = methodUrl.indexOf("/",index+1);</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">&nbsp;<wbr>&nbsp;&nbsp;<wbr>if(index!=-1) { &nbsp;<wbr>//如果存在 则进行截取前面的url&nbsp;<wbr></div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">&nbsp;<wbr>&nbsp;&nbsp;<wbr></div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;methodUrl = methodUrl.substring(0, index);</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">&nbsp;<wbr>&nbsp;&nbsp;<wbr>}</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">&nbsp;<wbr>String resultUrl = rootUrl+classUrl+methodUrl;</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">&nbsp;<wbr>rightService.appendRightByUrl(resultUrl);</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">&nbsp;<wbr>}</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">&nbsp;<wbr>}</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">}</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">}</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">}</div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;"></div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;"></div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;">//实现方法：&nbsp;<wbr></div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;"></div><div style="color: #464646; font-family: simsun; background-color: #bcd3e5;"><div>public void appendRightByUrl(String url) {</div><div>//查询 此url 在数据库中是否存在 &nbsp;<wbr>此权限</div><div>String hql = "from Right where rightUrl =?";</div><div>Right r = (Right) this.rightDao.uniqueResult(hql, url);</div><div>if(r==null) { //不存在 , 插入数据库中</div><div>Right newRight = new Right();</div><div>newRight.setRightUrl(url);</div><div>this.saveOrUpdateRight(newRight);</div><div>}</div><div>}</div></div><img src ="http://www.blogjava.net/wshao/aggbug/411455.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wshao/" target="_blank">午后星期午</a> 2014-03-25 14:54 <a href="http://www.blogjava.net/wshao/archive/2014/03/25/411455.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spring的JNDI数据源连接池配置示例及Spring对JNDI实现分析</title><link>http://www.blogjava.net/wshao/archive/2013/12/31/408290.html</link><dc:creator>午后星期午</dc:creator><author>午后星期午</author><pubDate>Tue, 31 Dec 2013 06:28:00 GMT</pubDate><guid>http://www.blogjava.net/wshao/archive/2013/12/31/408290.html</guid><wfw:comment>http://www.blogjava.net/wshao/comments/408290.html</wfw:comment><comments>http://www.blogjava.net/wshao/archive/2013/12/31/408290.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wshao/comments/commentRss/408290.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wshao/services/trackbacks/408290.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 个人学习参考所用，勿喷！&nbsp;在使用 Tomcat服务器 + SpringFramework 进行JavaEE项目的开发部署的时候可以在Tomcat的配置文件中进行JDBC数据源的配置，具体步骤如下（这里省略了工程的建立步骤）：&nbsp;1）&nbsp;添加如下代码到tomcat的conf目录下的server.xml中：Xml代码 &nbsp;&lt;Con...&nbsp;&nbsp;<a href='http://www.blogjava.net/wshao/archive/2013/12/31/408290.html'>阅读全文</a><img src ="http://www.blogjava.net/wshao/aggbug/408290.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wshao/" target="_blank">午后星期午</a> 2013-12-31 14:28 <a href="http://www.blogjava.net/wshao/archive/2013/12/31/408290.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java的打包jar,war,ear包的作用，区别，打包方式（本文打jar）</title><link>http://www.blogjava.net/wshao/archive/2013/12/31/408284.html</link><dc:creator>午后星期午</dc:creator><author>午后星期午</author><pubDate>Tue, 31 Dec 2013 06:22:00 GMT</pubDate><guid>http://www.blogjava.net/wshao/archive/2013/12/31/408284.html</guid><wfw:comment>http://www.blogjava.net/wshao/comments/408284.html</wfw:comment><comments>http://www.blogjava.net/wshao/archive/2013/12/31/408284.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wshao/comments/commentRss/408284.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wshao/services/trackbacks/408284.html</trackback:ping><description><![CDATA[<p style="text-indent: -21pt; margin: 0cm 0cm 0pt 21pt"><span>一、</span>java<span style="font-family: 宋体">的打包</span>jar,war,ear<span style="font-family: 宋体">包的作用，区别，打包方式</span>.</p>
<p style="text-indent: -21pt; margin: 0cm 0cm 0pt 42pt"><span>a)<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 宋体">作用与区别</span></p>
<p style="text-indent: -63pt; margin: 0cm 0cm 0pt 63pt"><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; i.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>jar: <span style="font-family: 宋体">通常是开发时要引用通用</span>(JAVA)<span style="font-family: 宋体">类，打成包便于存放管理</span></p>
<p style="text-indent: -63pt; margin: 0cm 0cm 0pt 63pt"><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ii.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>war: <span style="font-family: 宋体">是做好一个</span>(web)<span style="font-family: 宋体">应用后，通常是网站，打成包部署到容器中</span></p>
<p style="text-indent: -63pt; margin: 0cm 0cm 0pt 63pt"><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; iii.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>ear: <span style="font-family: 宋体">企业级应用，实际上</span>EAR<span style="font-family: 宋体">包中包含</span>WAR<span style="font-family: 宋体">包和几个企业级项目的配置文件而已，一般服务器选择</span>WebSphere<span style="font-family: 宋体">等，都会使用</span>EAR<span style="font-family: 宋体">包。通常是</span>EJB<span style="font-family: 宋体">打成</span>ear<span style="font-family: 宋体">包。</span></p>
<p style="text-indent: -21pt; margin: 0cm 0cm 0pt 42pt"><span>b)<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 宋体">打包方式</span></p>
<p style="text-indent: -63pt; margin: 0cm 0cm 0pt 63pt"><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; i.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 宋体">所有的包都是用</span>jar<span style="font-family: 宋体">打的，只不过目标文件的扩展名不一样</span></p>
<p style="text-indent: -63pt; margin: 0cm 0cm 0pt 63pt"><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ii.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 宋体">也可以用</span>Ant<span style="font-family: 宋体">来安成构建</span></p>
<p style="text-indent: -21pt; margin: 0cm 0cm 0pt 42pt"><span>c)<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 'simsun','serif'">JET</span><span style="font-family: 宋体">编译成</span><span style="font-family: 'simsun','serif'">EXE</span></p>
<p style="text-indent: -63pt; margin: 0cm 0cm 0pt 63pt"><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; i.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>JET<span>&nbsp;&nbsp; </span><span style="font-family: 宋体">是要用钱买的，而且据说</span><span>&nbsp;&nbsp; JET&nbsp;&nbsp; </span><span style="font-family: 宋体">也不是能把所有的</span><span>&nbsp;&nbsp; Java&nbsp;&nbsp; </span><span style="font-family: 宋体">程序都编译成执行文件，性能也要打些折扣。所以，使用制作可执行</span><span>&nbsp;&nbsp; JAR&nbsp;&nbsp; </span><span style="font-family: 宋体">文件包的方法就是最佳选择了，何况它还能保持</span><span>&nbsp;&nbsp; Java&nbsp;&nbsp; </span><span style="font-family: 宋体">的跨平台特性。</span></p><br /><br />二、实例<br /><br />方法一：我现在有test/A.java<br />&nbsp;&nbsp;&nbsp;&nbsp;道理虽然简单，但是在这过程中还是有很多细节需要注意的，哪一个细节注意不到，操作都不会成功。<br />
<div align="center">
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px">
<div align="left"><span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;test;<br /></span><span style="color: #0000ff">public</span>&nbsp;<span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;A{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span>&nbsp;<span style="color: #0000ff">static</span>&nbsp;<span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;main(String&nbsp;args[]){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">test&nbsp;java</span><span style="color: #000000">"</span><span style="color: #000000">);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}</span></div></div></div>&nbsp;&nbsp;&nbsp;&nbsp;写好后，保存为A.java，存在D:\Java\jdk1.6\test_jar\test\目录下面，打开cmd，进入这个目录，即D:\Java \jdk1.6\test_jar\test\然后用javac命令编译，会生成一个A.class文件，此时类的编写工作已经完成。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;2，在D:\Java\jdk1.6\test_jar目录下新建一个文件夹META-INF，再新建mainclass.mf文件，在其中写入下面一行信息<br />&nbsp;&nbsp;&nbsp;&nbsp;Main-Class: com/hp/HelloWorld<br />&nbsp;&nbsp;&nbsp;&nbsp;这一句有两个注意的地方，首先行尾要有回车换行；其次&#8220;:&#8221;和&#8220;com&#8221;之间要有一个空格。<br />&nbsp;&nbsp;&nbsp;&nbsp;这一行信息的作用是标明主类。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;3，最后就是生成jar包并测试了，在cmd中进入D:\Java\jdk1.6\test_jar目录，输入下列命令&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;jar cvfm test.jar META-INF/mainclass.mf test/A.class(<strong>这是指定文件，当然也可以test指向文件夹)<br /></strong>&nbsp;&nbsp;&nbsp;&nbsp;上述命令执行成功的话，会提示&#8220;标明清单（manifest）...&#8221;，<br />&nbsp;&nbsp;&nbsp;&nbsp;然后再在当前目录下输入java -jar test.jar 命令，可以看到&#8220;test java&#8221;。&nbsp;<br />&nbsp;<br /><br /><br />方法二：<br />&nbsp;&nbsp;&nbsp;&nbsp;用简单的jar -cvf test.jar&nbsp;&nbsp;&nbsp;&nbsp;test目录,jar会自动生成META-INF/mainclass.mf，我们只需要在里面去加一句&nbsp;Main-Class: com/hp/HelloWorld<br />就可以了<br /><br /><br /><br />方法三：myeclipse工具　（<strong>推荐</strong>）<br />&nbsp;&nbsp;&nbsp;&nbsp;右击项目--Export--Jar File-要选择Main-Class<br /><br />方法四：ant<img src ="http://www.blogjava.net/wshao/aggbug/408284.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wshao/" target="_blank">午后星期午</a> 2013-12-31 14:22 <a href="http://www.blogjava.net/wshao/archive/2013/12/31/408284.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>框架Quart在Java中任务调度的使用</title><link>http://www.blogjava.net/wshao/archive/2013/12/31/408277.html</link><dc:creator>午后星期午</dc:creator><author>午后星期午</author><pubDate>Tue, 31 Dec 2013 06:13:00 GMT</pubDate><guid>http://www.blogjava.net/wshao/archive/2013/12/31/408277.html</guid><wfw:comment>http://www.blogjava.net/wshao/comments/408277.html</wfw:comment><comments>http://www.blogjava.net/wshao/archive/2013/12/31/408277.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wshao/comments/commentRss/408277.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wshao/services/trackbacks/408277.html</trackback:ping><description><![CDATA[<p>Quartz框架是一个全功能、开源的任务调度服务，可以集成几乎任何的java应用程序&#8212;从小的单片机系统到大型的电子商务系统。Quartz可以执行上千上万的任务调度。</p>
<p>　　核心概念</p>
<p>　　Quartz核心的概念：scheduler任务调度、Job任务、Trigger触发器、JobDetail任务细节</p>
<p>　　Job任务：其实Job是接口，其中只有一个execute方法：</p>
<p>　　package org.quartz;</p>
<p>　　public abstract interface Job</p>
<p>　　{</p>
<p>　　public abstract void execute(JobExecutionContext paramJobExecutionContext)</p>
<p>　　throws JobExecutionException;</p>
<p>　　}</p>
<p>　　我们开发者只要实现此接口，实现execute方法即可。把我们想做的事情，在execute中执行即可。</p>
<p>　　JobDetail：任务细节，Quartz执行Job时，需要新建个Job实例，但是不能直接操作Job类，所以通过JobDetail来获取Job的名称、描述信息。</p>
<p>　　Trigger触发器：执行任务的规则;比如每天，每小时等。</p>
<p>　　一般情况使用SimpleTrigger，和CronTrigger，这个触发器实现了Trigger接口。</p>
<p>　　对于复杂的时间表达式来说，比如每个月15日上午几点几分，使用CronTrigger</p>
<p>　　对于简单的时间来说，比如每天执行几次，使用SimpleTrigger</p>
<p>　　scheduler任务调度：是最核心的概念，需要把JobDetail和Trigger注册到scheduler中，才可以执行。</p>
<p>　　注意：</p>
<p>　　不同的版本的jar包，具体的操作不太相同，但是<strong><a style="color: #000000" href="http://www.tbwshc.com/"><strong>tbw</strong></a></strong>思路是相同的;比如1.8.6jar包中，JobDetail是个类，直接通过构造方法与Job类关联。SimpleTrigger和 CornTrigger是类;在2.0.2jar包中，JobDetail是个接口，SimpleTrigger和CornTrigger是接口</p>
<p>　　不同版本测试：</p>
<p>　　1.8.6jar包：<br />　　package com.test;</p>
<p>　　import java.util.Date;</p>
<p>　　import org.quartz.Job;</p>
<p>　　import org.quartz.JobExecutionContext;</p>
<p>　　import org.quartz.JobExecutionException;</p>
<p>　　/**</p>
<p>　　* 需要执行的任务</p>
<p>　　* @author lhy</p>
<p>　　*</p>
<p>　　*/</p>
<p>　　public class MyJob implements Job {</p>
<p>　　@Override</p>
<p>　　//把要执行的操作，写在execute方法中</p>
<p>　　public void execute(JobExecutionContext arg0) throws JobExecutionException {</p>
<p>　　System.out.println("测试Quartz"+new Date());</p>
<p>　　}</p>
<p>　　}<br />&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; 使用SimpleTrigger触发器<br />　　package com.test;</p>
<p>　　import java.util.Date;</p>
<p>　　import org.quartz.JobDetail;</p>
<p>　　import org.quartz.Scheduler;</p>
<p>　　import org.quartz.SchedulerException;</p>
<p>　　import org.quartz.SchedulerFactory;</p>
<p>　　import org.quartz.SimpleTrigger;</p>
<p>　　import org.quartz.impl.StdSchedulerFactory;</p>
<p>　　/**</p>
<p>　　* 调用任务的类</p>
<p>　　* @author lhy</p>
<p>　　*</p>
<p>　　*/</p>
<p>　　public class SchedulerTest {</p>
<p>　　public static void main(String[] args) {</p>
<p>　　//通过schedulerFactory获取一个调度器</p>
<p>　　SchedulerFactory schedulerfactory=new StdSchedulerFactory();</p>
<p>　　Scheduler scheduler=null;</p>
<p>　　try{</p>
<p>　　// 通过schedulerFactory获取一个调度器</p>
<p>　　scheduler=schedulerfactory.getScheduler();</p>
<p>　　// 创建jobDetail实例，绑定Job实现类</p>
<p>　　// 指明job的名称，所在组的名称，以及绑定job类</p>
<p>　　JobDetail jobDetail=new JobDetail("job1", "jgroup1", MyJob.class);</p>
<p>　　// 定义调度触发规则，比如每1秒运行一次，共运行8次</p>
<p>　　SimpleTrigger simpleTrigger=new SimpleTrigger("simpleTrigger","triggerGroup");</p>
<p>　　// 马上启动</p>
<p>　　simpleTrigger.setStartTime(new Date());</p>
<p>　　// 间隔时间</p>
<p>　　simpleTrigger.setRepeatInterval(1000);</p>
<p>　　// 运行次数</p>
<p>　　simpleTrigger.setRepeatCount(8);</p>
<p>　　// 把作业和触发器注册到任务调度中</p>
<p>　　scheduler.scheduleJob(jobDetail, simpleTrigger);</p>
<p>　　// 启动调度</p>
<p>　　scheduler.start();</p>
<p>　　}catch(SchedulerException e){</p>
<p>　　e.printStackTrace();</p>
<p>　　}</p>
<p>　　}</p>
<p>　　}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp; 若使用CornTrigger触发器：</p>
<p>　　[html]</p>
<p>　　package com.test;</p>
<p>　　import java.util.Date;</p>
<p>　　import org.quartz.CronTrigger;</p>
<p>　　import org.quartz.JobDetail;</p>
<p>　　import org.quartz.Scheduler;</p>
<p>　　import org.quartz.SchedulerException;</p>
<p>　　import org.quartz.SchedulerFactory;</p>
<p>　　import org.quartz.SimpleTrigger;</p>
<p>　　import org.quartz.impl.StdSchedulerFactory;</p>
<p>　　/**</p>
<p>　　* 调用任务的类</p>
<p>　　* @author lhy</p>
<p>　　*</p>
<p>　　*/</p>
<p>　　public class CronTriggerTest {</p>
<p>　　public static void main(String[] args) {</p>
<p>　　//通过schedulerFactory获取一个调度器</p>
<p>　　SchedulerFactory schedulerfactory=new StdSchedulerFactory();</p>
<p>　　Scheduler scheduler=null;</p>
<p>　　try{</p>
<p>　　// 通过schedulerFactory获取一个调度器</p>
<p>　　scheduler=schedulerfactory.getScheduler();</p>
<p>　　// 创建jobDetail实例，绑定Job实现类</p>
<p>　　// 指明job的名称，所在组的名称，以及绑定job类</p>
<p>　　JobDetail jobDetail=new JobDetail("job1", "jgroup1", MyJob.class);</p>
<p>　　// 定义调度触发规则，每天上午10：15执行</p>
<p>　　CronTrigger cornTrigger=new CronTrigger("cronTrigger","triggerGroup");</p>
<p>　　// 执行规则表达式</p>
<p>　　cornTrigger.setCronExpression("0 15 10 * * ? *");</p>
<p>　　// 把作业和触发器注册到任务调度中</p>
<p>　　scheduler.scheduleJob(jobDetail, cornTrigger);</p>
<p>　　// 启动调度</p>
<p>　　scheduler.start();</p>
<p>　　}catch(Exception e){</p>
<p>　　e.printStackTrace();</p>
<p>　　}</p>
<p>　　}</p>
<p>　　}<br /><br />　　对于2.0.2jar包如下：</p>
<p>　　其中的job类不变，主要是调度类如下：</p>
<p>　　package com.test;</p>
<p>　　import java.util.Date;</p>
<p>　　import org.quartz.CronScheduleBuilder;</p>
<p>　　import org.quartz.JobBuilder;</p>
<p>　　import org.quartz.JobDetail;</p>
<p>　　import org.quartz.Scheduler;</p>
<p>　　import org.quartz.SchedulerException;</p>
<p>　　import org.quartz.SchedulerFactory;</p>
<p>　　import org.quartz.SimpleScheduleBuilder;</p>
<p>　　import org.quartz.Trigger;</p>
<p>　　import org.quartz.TriggerBuilder;</p>
<p>　　import org.quartz.impl.StdSchedulerFactory;</p>
<p>　　/**</p>
<p>　　* 调用任务的类</p>
<p>　　* @author lhy</p>
<p>　　*</p>
<p>　　*/</p>
<p>　　public class SchedulerTest {</p>
<p>　　public static void main(String[] args) {</p>
<p>　　//通过schedulerFactory获取一个调度器</p>
<p>　　SchedulerFactory schedulerfactory=new StdSchedulerFactory();</p>
<p>　　Scheduler scheduler=null;</p>
<p>　　try{</p>
<p>　　// 通过schedulerFactory获取一个调度器</p>
<p>　　scheduler=schedulerfactory.getScheduler();</p>
<p>　　// 创建jobDetail实例，绑定Job实现类</p>
<p>　　// 指明job的名称，所在组的名称，以及绑定job类</p>
<p>　　JobDetail job=JobBuilder.newJob(MyJob.class).withIdentity("job1", "jgroup1").build();</p>
<p>　　// 定义调度触发规则</p>
<p>　　// 使用simpleTrigger规则</p>
<p>　　// Trigger trigger=TriggerBuilder.newTrigger().withIdentity("simpleTrigger", "triggerGroup")</p>
<p>　　// .withSchedule(SimpleScheduleBuilder.repeatSecondlyForever(1).withRepeatCount(8))</p>
<p>　　// .startNow().build();</p>
<p>　　// 使用cornTrigger规则 每天10点42分</p>
<p>　　Trigger trigger=TriggerBuilder.newTrigger().withIdentity("simpleTrigger", "triggerGroup")</p>
<p>　　.withSchedule(CronScheduleBuilder.cronSchedule("0 42 10 * * ? *"))</p>
<p>　　.startNow().build();</p>
<p>　　// 把作业和触发器注册到任务调度中</p>
<p>　　scheduler.scheduleJob(job, trigger);</p>
<p>　　// 启动调度</p>
<p>　　scheduler.start();</p>
<p>　　}catch(Exception e){</p>
<p>　　e.printStackTrace();</p>
<p>　　}</p>
<p>　　}</p>
<p>　　}<br /><br />　　上述demo下载：1.8版本demo下载</p>
<p>　　2.0版本demo下载</p>
<p>　　对于CornExpress讲解如下：</p>
<p>　　字段 允许值 允许的特殊字符</p>
<p>　　秒 0-59 , - * /</p>
<p>　　分 0-59 , - * /</p>
<p>　　小时 0-23 , - * /</p>
<p>　　日期 1-31 , - * ? / L W C</p>
<p>　　月份 1-12 或者 JAN-DEC , - * /</p>
<p>　　星期 1-7 或者 SUN-SAT , - * ? / L C #</p>
<p>　　年(可选) 留空, 1970-2099 , - * /</p>
<p>　　表达式 意义</p>
<p>　　"0 0 12 * * ?" 每天中午12点触发</p>
<p>　　"0 15 10 ? * *" 每天上午10:15触发</p>
<p>　　"0 15 10 * * ?" 每天上午10:15触发</p>
<p>　　"0 15 10 * * ? *" 每天上午10:15触发</p>
<p>　　"0 15 10 * * ? 2005" 2005年的每天上午10:15触发</p>
<p>　　"0 * 14 * * ?" 在每天下午2点到下午2:59期间的每1分钟触发</p>
<p>　　"0 0/5 14 * * ?" 在每天下午2点到下午2:55期间的每5分钟触发</p>
<p>　　"0 0/5 14,18 * * ?" 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发</p>
<p>　　"0 0-5 14 * * ?" 在每天下午2点到下午2:05期间的每1分钟触发</p>
<p>　　"0 10,44 14 ? 3 WED" 每年三月的星期三的下午2:10和2:44触发</p>
<p>　　"0 15 10 ? * MON-FRI" 周一至周五的上午10:15触发</p>
<p>　　"0 15 10 15 * ?" 每月15日上午10:15触发</p>
<p>　　"0 15 10 L * ?" 每月最后一日的上午10:15触发</p>
<p>　　"0 15 10 ? * 6L" 每月的最后一个星期五上午10:15触发</p>
<p>　　"0 15 10 ? * 6L 2002-2005" 2002年至2005年的每月的最后一个星期五上午10:15触发</p>
<p>　　"0 15 10 ? * 6#3" 每月的第三个星期五上午10:15触发</p>
<p>　　特殊字符 意义</p>
<p>　　* 表示所有值;</p>
<p>　　? 表示未说明的值，即不关心它为何值;</p>
<p>　　- 表示一个指定的范围;</p>
<p>　　, 表示附加一个可能值;</p>
<p>　　/ 符号前表示开始时间，符号后表示每次递增的值;</p>
<p>　　L("last") ("last") "L" 用在day-of-month字段意思是 "这个月最后一天";用在 day-of-week字段, 它简单意思是 "7" or "SAT"。 如果在day-of-week字段里和数字联合使用，它的意思就是 "这个月的最后一个星期几" &#8211; 例如： "6L" means "这个月的最后一个星期五". 当我们用&#8220;L&#8221;时，不指明一个列表值或者范围是很重要的，不然的话，我们会得到一些意想不到的结果。</p>
<p>　　W("weekday") 只能用在day-of-month字段。用来描叙最接近指定天的工作日(周一到周五)。例如：在day-of-month字段用&#8220;15W&#8221;指&#8220;最接近这个月第15天的工作日&#8221;，即如果这个月第15天是周六，那么触发器将会在这个月第14天即周五触发;如果这个月第15天是周日，那么触发器将会在这个月第 16天即周一触发;如果这个月第15天是周二，那么就在<strong><a style="color: #000000" href="http://www.tbwshc.com/"><strong>tbw</strong></a></strong>触发器这天触发。注意一点：这个用法只会在当前月计算值，不会越过当前月。&#8220;W&#8221;字符仅能在day-of-month指明一天，不能是一个范围或列表。也可以用&#8220;LW&#8221;来指定这个月的最后一个工作日。</p>
<p>　　# 只能用在day-of-week字段。用来指定这个月的第几个周几。例：在day-of-week字段用"6#3"指这个月第3个周五(6指周五，3指第3个)。如果指定的日期不存在，触发器就不会触发。</p>
<p>　　C 指和calendar联系后计算过的值。例：在day-of-month 字段用&#8220;5C&#8221;指在这个月第5天或之后包括calendar的第一天;在day-of-week字段用&#8220;1C&#8221;指在这周日或之后包括calendar的第一天</p><img src ="http://www.blogjava.net/wshao/aggbug/408277.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wshao/" target="_blank">午后星期午</a> 2013-12-31 14:13 <a href="http://www.blogjava.net/wshao/archive/2013/12/31/408277.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>通过JAVA获取优酷、土豆、酷6、6间房等视频</title><link>http://www.blogjava.net/wshao/archive/2013/12/31/408268.html</link><dc:creator>午后星期午</dc:creator><author>午后星期午</author><pubDate>Tue, 31 Dec 2013 05:59:00 GMT</pubDate><guid>http://www.blogjava.net/wshao/archive/2013/12/31/408268.html</guid><wfw:comment>http://www.blogjava.net/wshao/comments/408268.html</wfw:comment><comments>http://www.blogjava.net/wshao/archive/2013/12/31/408268.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wshao/comments/commentRss/408268.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wshao/services/trackbacks/408268.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 通过JAVA获取优酷、土豆、酷6、6间房、56视频，现在很多社会网站都有这个功能，用户输入优酷、土豆、酷6、6间房、56视频地址后，能找到对应的视频及视频的缩略图，有些社区网站还能获取到视频的时长。比如：新浪微博就有这个功能，当用户输入优酷、土豆、酷6、6间房、56视频网址后，就能获取到相应的视频地址及视频的缩略图。代码如下： import&nbsp;org.jsoup.Jsoup;imp...&nbsp;&nbsp;<a href='http://www.blogjava.net/wshao/archive/2013/12/31/408268.html'>阅读全文</a><img src ="http://www.blogjava.net/wshao/aggbug/408268.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wshao/" target="_blank">午后星期午</a> 2013-12-31 13:59 <a href="http://www.blogjava.net/wshao/archive/2013/12/31/408268.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Ehcache详细解读</title><link>http://www.blogjava.net/wshao/archive/2013/12/31/408265.html</link><dc:creator>午后星期午</dc:creator><author>午后星期午</author><pubDate>Tue, 31 Dec 2013 05:56:00 GMT</pubDate><guid>http://www.blogjava.net/wshao/archive/2013/12/31/408265.html</guid><wfw:comment>http://www.blogjava.net/wshao/comments/408265.html</wfw:comment><comments>http://www.blogjava.net/wshao/archive/2013/12/31/408265.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wshao/comments/commentRss/408265.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wshao/services/trackbacks/408265.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Ehcache &nbsp;是现在最流行的纯Java开源缓存框架，配置简单、结构清晰、功能强大，最初知道它，是从Hibernate的缓存开始的。网上中文的EhCache材料以简单介绍和配置方法居多，如果你有这方面的问题，请自行google；对于API，官网上介绍已经非常清楚，请参见官网；但是很少见到特性说明和对实现原理的分析，因此在这篇文章里面，我会详细介绍和分析EhCache的特性，加上一些自己...&nbsp;&nbsp;<a href='http://www.blogjava.net/wshao/archive/2013/12/31/408265.html'>阅读全文</a><img src ="http://www.blogjava.net/wshao/aggbug/408265.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wshao/" target="_blank">午后星期午</a> 2013-12-31 13:56 <a href="http://www.blogjava.net/wshao/archive/2013/12/31/408265.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Hibernate ehcache配置二级缓存</title><link>http://www.blogjava.net/wshao/archive/2013/12/31/408263.html</link><dc:creator>午后星期午</dc:creator><author>午后星期午</author><pubDate>Tue, 31 Dec 2013 05:54:00 GMT</pubDate><guid>http://www.blogjava.net/wshao/archive/2013/12/31/408263.html</guid><wfw:comment>http://www.blogjava.net/wshao/comments/408263.html</wfw:comment><comments>http://www.blogjava.net/wshao/archive/2013/12/31/408263.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wshao/comments/commentRss/408263.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wshao/services/trackbacks/408263.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;1、首先设置EhCache，建立配置文件ehcache.xml，默认的位置在class-path，可以放到你的src目录下：&lt;?xml version="1.0" encoding="UTF-8"?&gt;&lt;ehcache&gt;　&lt;diskStore path="java.io.tmpdir"/&gt; 　　&lt;defaultCache　　　maxEleme...&nbsp;&nbsp;<a href='http://www.blogjava.net/wshao/archive/2013/12/31/408263.html'>阅读全文</a><img src ="http://www.blogjava.net/wshao/aggbug/408263.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wshao/" target="_blank">午后星期午</a> 2013-12-31 13:54 <a href="http://www.blogjava.net/wshao/archive/2013/12/31/408263.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spring邮件服务之附件：Maven + Spring SMTP Mail With Attachment</title><link>http://www.blogjava.net/wshao/archive/2013/12/31/408261.html</link><dc:creator>午后星期午</dc:creator><author>午后星期午</author><pubDate>Tue, 31 Dec 2013 05:52:00 GMT</pubDate><guid>http://www.blogjava.net/wshao/archive/2013/12/31/408261.html</guid><wfw:comment>http://www.blogjava.net/wshao/comments/408261.html</wfw:comment><comments>http://www.blogjava.net/wshao/archive/2013/12/31/408261.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wshao/comments/commentRss/408261.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wshao/services/trackbacks/408261.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 前言：说过了 Spring 如何发送 Email 之后，接着来说一下，怎么样用 Spring 来发送带有附件的邮件，其实实现这个也很简单，Spring 的官方文档也有给出例子，下面来说下我的实现。环境：Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/...&nbsp;&nbsp;<a href='http://www.blogjava.net/wshao/archive/2013/12/31/408261.html'>阅读全文</a><img src ="http://www.blogjava.net/wshao/aggbug/408261.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wshao/" target="_blank">午后星期午</a> 2013-12-31 13:52 <a href="http://www.blogjava.net/wshao/archive/2013/12/31/408261.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spring邮件服务之Html：Maven + Spring SMTP Mail With Html</title><link>http://www.blogjava.net/wshao/archive/2013/12/31/408262.html</link><dc:creator>午后星期午</dc:creator><author>午后星期午</author><pubDate>Tue, 31 Dec 2013 05:52:00 GMT</pubDate><guid>http://www.blogjava.net/wshao/archive/2013/12/31/408262.html</guid><wfw:comment>http://www.blogjava.net/wshao/comments/408262.html</wfw:comment><comments>http://www.blogjava.net/wshao/archive/2013/12/31/408262.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wshao/comments/commentRss/408262.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wshao/services/trackbacks/408262.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 前言：谈过如何用 Spring 发送普通 Email 和带有附件的 Email 之后，接着来谈一下如何用 Spring 来发送 Html 式的 Email。发送 Html 格式的 Email 也是很必要的，现在的很多网站在用户注册之后都会发一封 Email 到用户的邮箱，用户需要点击邮件中的链接来完成注册，这个链接如果是用普通文本式的 Email 来发送的话，这个链接是不能被点击的，因为它是文本内...&nbsp;&nbsp;<a href='http://www.blogjava.net/wshao/archive/2013/12/31/408262.html'>阅读全文</a><img src ="http://www.blogjava.net/wshao/aggbug/408262.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wshao/" target="_blank">午后星期午</a> 2013-12-31 13:52 <a href="http://www.blogjava.net/wshao/archive/2013/12/31/408262.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spring邮件服务：Maven + Spring SMTP Mail</title><link>http://www.blogjava.net/wshao/archive/2013/12/31/408260.html</link><dc:creator>午后星期午</dc:creator><author>午后星期午</author><pubDate>Tue, 31 Dec 2013 05:50:00 GMT</pubDate><guid>http://www.blogjava.net/wshao/archive/2013/12/31/408260.html</guid><wfw:comment>http://www.blogjava.net/wshao/comments/408260.html</wfw:comment><comments>http://www.blogjava.net/wshao/archive/2013/12/31/408260.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wshao/comments/commentRss/408260.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wshao/services/trackbacks/408260.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 前言：当然，发 email 不一定要用 Spring，直接用 javax.mail 的API 就能实现。但是由于 Spring 提供了一个发送电子邮件的高级抽象层，它向用户屏蔽了底层邮件系统的一些细节，同时负责低层次的代表客户端的资源处理。所以用 Spring 来发送 email 会省事很多和让发邮件变的简单许多。Spring邮件抽象层的主要包为org.springframework.mail。它...&nbsp;&nbsp;<a href='http://www.blogjava.net/wshao/archive/2013/12/31/408260.html'>阅读全文</a><img src ="http://www.blogjava.net/wshao/aggbug/408260.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wshao/" target="_blank">午后星期午</a> 2013-12-31 13:50 <a href="http://www.blogjava.net/wshao/archive/2013/12/31/408260.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JFreeChart 生成 折线图（Struts2 + Maven3 + JFreeChart）</title><link>http://www.blogjava.net/wshao/archive/2013/12/31/408257.html</link><dc:creator>午后星期午</dc:creator><author>午后星期午</author><pubDate>Tue, 31 Dec 2013 05:48:00 GMT</pubDate><guid>http://www.blogjava.net/wshao/archive/2013/12/31/408257.html</guid><wfw:comment>http://www.blogjava.net/wshao/comments/408257.html</wfw:comment><comments>http://www.blogjava.net/wshao/archive/2013/12/31/408257.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wshao/comments/commentRss/408257.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wshao/services/trackbacks/408257.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 接上一篇随笔&nbsp;JFreeChart 生成 柱状图 ，环境及其配置不变，只是将生成柱状图的核心类 CylinderAction 替换成 CurveAction，让 CurveAction来负责折线图的生成，看下代码：Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlig...&nbsp;&nbsp;<a href='http://www.blogjava.net/wshao/archive/2013/12/31/408257.html'>阅读全文</a><img src ="http://www.blogjava.net/wshao/aggbug/408257.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wshao/" target="_blank">午后星期午</a> 2013-12-31 13:48 <a href="http://www.blogjava.net/wshao/archive/2013/12/31/408257.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JFreeChart 生成 饼状图（Struts2 + Maven3 + JFreeChart）</title><link>http://www.blogjava.net/wshao/archive/2013/12/31/408256.html</link><dc:creator>午后星期午</dc:creator><author>午后星期午</author><pubDate>Tue, 31 Dec 2013 05:47:00 GMT</pubDate><guid>http://www.blogjava.net/wshao/archive/2013/12/31/408256.html</guid><wfw:comment>http://www.blogjava.net/wshao/comments/408256.html</wfw:comment><comments>http://www.blogjava.net/wshao/archive/2013/12/31/408256.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wshao/comments/commentRss/408256.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wshao/services/trackbacks/408256.html</trackback:ping><description><![CDATA[<span style="font-family: Georgia; font-size: 10pt">接上一篇随笔&nbsp;<a style="color: #008080" href="http://www.blogjava.net/fancydeepin/archive/2012/08/07/java_jfreechart_BarChart3D.html" target="_blank">JFreeChart 生成 柱状图</a> ，环境及其配置不变，只是将生成柱状图的核心类 CylinderAction 替换成 PieAction，让 PieAction 来负责饼状图的生成，看下代码：<br /><br /><br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" /><span style="color: #000000"><br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;com.fancy.action;<br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" /><br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.awt.Color;<br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.jfree.chart.ChartFactory;<br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.jfree.chart.JFreeChart;<br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.jfree.chart.servlet.ServletUtilities;<br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.jfree.data.general.DefaultPieDataset;<br /><img id="Codehighlighter1_221_393_Open_Image" onclick="this.style.display='none'; Codehighlighter1_221_393_Open_Text.style.display='none'; Codehighlighter1_221_393_Closed_Image.style.display='inline'; Codehighlighter1_221_393_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_221_393_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_221_393_Closed_Text.style.display='none'; Codehighlighter1_221_393_Open_Image.style.display='inline'; Codehighlighter1_221_393_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif"></span><span id="Codehighlighter1_221_393_Open_Text"><span style="color: #008000">/**</span><span style="color: #008000"><br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" />&nbsp;*&nbsp;-----------------------------------------<br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" />&nbsp;*&nbsp;@描述&nbsp;&nbsp;饼状图<br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" />&nbsp;*&nbsp;@作者&nbsp;&nbsp;fancy<br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" />&nbsp;*&nbsp;@邮箱&nbsp;&nbsp;fancydeepin@yeah.net<br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" />&nbsp;*&nbsp;@日期&nbsp;&nbsp;2012-8-7&nbsp;&lt;p&gt;<br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" />&nbsp;*&nbsp;-----------------------------------------<br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif" />&nbsp;</span><span style="color: #008000">*/</span></span><span style="color: #000000"><br /><img id="Codehighlighter1_436_1203_Open_Image" onclick="this.style.display='none'; Codehighlighter1_436_1203_Open_Text.style.display='none'; Codehighlighter1_436_1203_Closed_Image.style.display='inline'; Codehighlighter1_436_1203_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_436_1203_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_436_1203_Closed_Text.style.display='none'; Codehighlighter1_436_1203_Open_Image.style.display='inline'; Codehighlighter1_436_1203_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;PieAction&nbsp;</span><span style="color: #0000ff">extends</span><span style="color: #000000">&nbsp;BaseAction</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_436_1203_Closed_Text"></span><span id="Codehighlighter1_436_1203_Open_Text"><span style="color: #000000">{<br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" /><br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">final</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">long</span><span style="color: #000000">&nbsp;serialVersionUID&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1L</span><span style="color: #000000">;<br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;String&nbsp;fileName;<br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;<br /><img id="Codehighlighter1_558_1145_Open_Image" onclick="this.style.display='none'; Codehighlighter1_558_1145_Open_Text.style.display='none'; Codehighlighter1_558_1145_Closed_Image.style.display='inline'; Codehighlighter1_558_1145_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_558_1145_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_558_1145_Closed_Text.style.display='none'; Codehighlighter1_558_1145_Open_Image.style.display='inline'; Codehighlighter1_558_1145_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;String&nbsp;execute()&nbsp;</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;Exception</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_558_1145_Closed_Text"></span><span id="Codehighlighter1_558_1145_Open_Text"><span style="color: #000000">{<br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">创建Dataset对象</span><span style="color: #008000"><br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DefaultPieDataset&nbsp;dataset&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;DefaultPieDataset();<br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">模拟数据</span><span style="color: #008000"><br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dataset.setValue(</span><span style="color: #000000">"</span><span style="color: #000000">E-1区</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">50</span><span style="color: #000000">);<br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dataset.setValue(</span><span style="color: #000000">"</span><span style="color: #000000">E-2区</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">150</span><span style="color: #000000">);<br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dataset.setValue(</span><span style="color: #000000">"</span><span style="color: #000000">E-3区</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">80</span><span style="color: #000000">);<br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dataset.setValue(</span><span style="color: #000000">"</span><span style="color: #000000">E-4区</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">140</span><span style="color: #000000">);<br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dataset.setValue(</span><span style="color: #000000">"</span><span style="color: #000000">E-5区</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">180</span><span style="color: #000000">);<br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dataset.setValue(</span><span style="color: #000000">"</span><span style="color: #000000">E-6区</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">130</span><span style="color: #000000">);<br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dataset.setValue(</span><span style="color: #000000">"</span><span style="color: #000000">E-7区</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">100</span><span style="color: #000000">);<br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">创建3D饼状图</span><span style="color: #008000"><br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JFreeChart&nbsp;chart&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;ChartFactory.createPieChart3D(</span><span style="color: #000000">"</span><span style="color: #000000">2011年A产品销售量</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;dataset,&nbsp;</span><span style="color: #0000ff">true</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">);<br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">设置背景颜色</span><span style="color: #008000"><br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chart.setBackgroundPaint(Color.WHITE);<br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">保存图表</span><span style="color: #008000"><br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fileName&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;ServletUtilities.saveChartAsPNG(chart,&nbsp;</span><span style="color: #000000">500</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">300</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">,&nbsp;getHttpSession());<br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">pie</span><span style="color: #000000">"</span><span style="color: #000000">;<br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;<br /><img id="Codehighlighter1_1178_1200_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1178_1200_Open_Text.style.display='none'; Codehighlighter1_1178_1200_Closed_Image.style.display='inline'; Codehighlighter1_1178_1200_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_1178_1200_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_1178_1200_Closed_Text.style.display='none'; Codehighlighter1_1178_1200_Open_Image.style.display='inline'; Codehighlighter1_1178_1200_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;String&nbsp;getFileName()&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_1178_1200_Closed_Text"></span><span id="Codehighlighter1_1178_1200_Open_Text"><span style="color: #000000">{<br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;fileName;<br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" /><br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" /></span></div><br /><br />将 cylinder.jsp 拷贝一份名字改成 pie.jsp，其余不变，访问：<a style="color: #993300" href="http://localhost:8080/jfreechart-demo/pie.html" target="_blank">http://localhost:8080/jfreechart-demo/pie.html</a>&nbsp;的结果如图示：<br /><br /><img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/fancydeepin/pie1.jpg" width="523" longdesc="" height="327" /><br /><br />从上图可以看出A产品在每个区销售的大概份额，但是默认并没有给显示所占的百分比，下面通过添加代码来使得所占百分比能够显示出来：<br /><br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" /><span style="color: #000000"><br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;com.fancy.action;<br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" /><br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.awt.Color;<br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.text.DecimalFormat;<br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.text.NumberFormat;<br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.jfree.chart.ChartFactory;<br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.jfree.chart.JFreeChart;<br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.jfree.chart.labels.StandardPieSectionLabelGenerator;<br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.jfree.chart.plot.PiePlot;<br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.jfree.chart.servlet.ServletUtilities;<br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.jfree.data.general.DefaultPieDataset;<br /><img id="Codehighlighter1_385_557_Open_Image" onclick="this.style.display='none'; Codehighlighter1_385_557_Open_Text.style.display='none'; Codehighlighter1_385_557_Closed_Image.style.display='inline'; Codehighlighter1_385_557_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_385_557_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_385_557_Closed_Text.style.display='none'; Codehighlighter1_385_557_Open_Image.style.display='inline'; Codehighlighter1_385_557_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif"></span><span id="Codehighlighter1_385_557_Open_Text"><span style="color: #008000">/**</span><span style="color: #008000"><br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" />&nbsp;*&nbsp;-----------------------------------------<br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" />&nbsp;*&nbsp;@描述&nbsp;&nbsp;饼状图<br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" />&nbsp;*&nbsp;@作者&nbsp;&nbsp;fancy<br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" />&nbsp;*&nbsp;@邮箱&nbsp;&nbsp;fancydeepin@yeah.net<br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" />&nbsp;*&nbsp;@日期&nbsp;&nbsp;2012-8-7&nbsp;&lt;p&gt;<br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" />&nbsp;*&nbsp;-----------------------------------------<br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif" />&nbsp;</span><span style="color: #008000">*/</span></span><span style="color: #000000"><br /><img id="Codehighlighter1_600_1620_Open_Image" onclick="this.style.display='none'; Codehighlighter1_600_1620_Open_Text.style.display='none'; Codehighlighter1_600_1620_Closed_Image.style.display='inline'; Codehighlighter1_600_1620_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_600_1620_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_600_1620_Closed_Text.style.display='none'; Codehighlighter1_600_1620_Open_Image.style.display='inline'; Codehighlighter1_600_1620_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;PieAction&nbsp;</span><span style="color: #0000ff">extends</span><span style="color: #000000">&nbsp;BaseAction</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_600_1620_Closed_Text"></span><span id="Codehighlighter1_600_1620_Open_Text"><span style="color: #000000">{<br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" /><br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">final</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">long</span><span style="color: #000000">&nbsp;serialVersionUID&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1L</span><span style="color: #000000">;<br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;String&nbsp;fileName;<br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;<br /><img id="Codehighlighter1_722_1562_Open_Image" onclick="this.style.display='none'; Codehighlighter1_722_1562_Open_Text.style.display='none'; Codehighlighter1_722_1562_Closed_Image.style.display='inline'; Codehighlighter1_722_1562_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_722_1562_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_722_1562_Closed_Text.style.display='none'; Codehighlighter1_722_1562_Open_Image.style.display='inline'; Codehighlighter1_722_1562_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;String&nbsp;execute()&nbsp;</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;Exception</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_722_1562_Closed_Text"></span><span id="Codehighlighter1_722_1562_Open_Text"><span style="color: #000000">{<br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">创建Dataset对象</span><span style="color: #008000"><br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DefaultPieDataset&nbsp;dataset&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;DefaultPieDataset();<br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">模拟数据</span><span style="color: #008000"><br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dataset.setValue(</span><span style="color: #000000">"</span><span style="color: #000000">E-1区</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">50</span><span style="color: #000000">);<br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dataset.setValue(</span><span style="color: #000000">"</span><span style="color: #000000">E-2区</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">150</span><span style="color: #000000">);<br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dataset.setValue(</span><span style="color: #000000">"</span><span style="color: #000000">E-3区</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">80</span><span style="color: #000000">);<br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dataset.setValue(</span><span style="color: #000000">"</span><span style="color: #000000">E-4区</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">140</span><span style="color: #000000">);<br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dataset.setValue(</span><span style="color: #000000">"</span><span style="color: #000000">E-5区</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">180</span><span style="color: #000000">);<br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dataset.setValue(</span><span style="color: #000000">"</span><span style="color: #000000">E-6区</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">130</span><span style="color: #000000">);<br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dataset.setValue(</span><span style="color: #000000">"</span><span style="color: #000000">E-7区</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">100</span><span style="color: #000000">);<br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">创建3D饼状图</span><span style="color: #008000"><br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JFreeChart&nbsp;chart&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;ChartFactory.createPieChart3D(</span><span style="color: #000000">"</span><span style="color: #000000">2011年AA产品销售量</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;dataset,&nbsp;</span><span style="color: #0000ff">true</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">);<br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">设置背景颜色</span><span style="color: #008000"><br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chart.setBackgroundPaint(Color.WHITE);<br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PiePlot&nbsp;plot&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(PiePlot)chart.getPlot();<br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;图片中显示百分比：自定义方式，{0}&nbsp;表示选项，&nbsp;{1}&nbsp;表示数值，{2}&nbsp;表示所占比例&nbsp;，小数点后两位&nbsp;</span><span style="color: #008000"><br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;plot.setLabelGenerator(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;StandardPieSectionLabelGenerator(</span><span style="color: #000000">"</span><span style="color: #000000">{0}={1}({2})</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;NumberFormat.getNumberInstance(),</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;DecimalFormat(</span><span style="color: #000000">"</span><span style="color: #000000">0.00%</span><span style="color: #000000">"</span><span style="color: #000000">)));<br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">保存图表</span><span style="color: #008000"><br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fileName&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;ServletUtilities.saveChartAsPNG(chart,&nbsp;</span><span style="color: #000000">500</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">300</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">,&nbsp;getHttpSession());<br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">pie</span><span style="color: #000000">"</span><span style="color: #000000">;<br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;<br /><img id="Codehighlighter1_1595_1617_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1595_1617_Open_Text.style.display='none'; Codehighlighter1_1595_1617_Closed_Image.style.display='inline'; Codehighlighter1_1595_1617_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_1595_1617_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_1595_1617_Closed_Text.style.display='none'; Codehighlighter1_1595_1617_Open_Image.style.display='inline'; Codehighlighter1_1595_1617_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;String&nbsp;getFileName()&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_1595_1617_Closed_Text"></span><span id="Codehighlighter1_1595_1617_Open_Text"><span style="color: #000000">{<br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;fileName;<br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" /><br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" /></span></div><br /><br />OK，再次访问的结果如图示：<br /><br /><img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/fancydeepin/pie2.jpg" width="529" longdesc="" height="332" /><br /><br /></span><br /><br /><span style="font-family: Georgia; font-size: 10pt"><br /><span style="font-family: Georgia; color: #008000; font-size: 10pt">&nbsp;&nbsp;&nbsp;[ 转载出处：<a href="http://www.blogjava.net/fancydeepin" target="_blank"><font color="#1d58d1">http://www.blogjava.net/fancydeepin</font></a>&nbsp;]</span></span><font size="2"> </font><br /><img src ="http://www.blogjava.net/wshao/aggbug/408256.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wshao/" target="_blank">午后星期午</a> 2013-12-31 13:47 <a href="http://www.blogjava.net/wshao/archive/2013/12/31/408256.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JFreeChart 生成 柱状图（Struts2 + Maven3 + JFreeChart）</title><link>http://www.blogjava.net/wshao/archive/2013/12/31/408255.html</link><dc:creator>午后星期午</dc:creator><author>午后星期午</author><pubDate>Tue, 31 Dec 2013 05:46:00 GMT</pubDate><guid>http://www.blogjava.net/wshao/archive/2013/12/31/408255.html</guid><wfw:comment>http://www.blogjava.net/wshao/comments/408255.html</wfw:comment><comments>http://www.blogjava.net/wshao/archive/2013/12/31/408255.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wshao/comments/commentRss/408255.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wshao/services/trackbacks/408255.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 准备环境：Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->eclipse&nbsp;&nbsp; 3.6maven&nbsp;&nbsp;&nbsp;3.0.4struts&nbsp;&nbsp;&nbsp;&nbsp; 2.1.8JFreeCha...&nbsp;&nbsp;<a href='http://www.blogjava.net/wshao/archive/2013/12/31/408255.html'>阅读全文</a><img src ="http://www.blogjava.net/wshao/aggbug/408255.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wshao/" target="_blank">午后星期午</a> 2013-12-31 13:46 <a href="http://www.blogjava.net/wshao/archive/2013/12/31/408255.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spring AOP + AspectJ framework</title><link>http://www.blogjava.net/wshao/archive/2013/12/31/408253.html</link><dc:creator>午后星期午</dc:creator><author>午后星期午</author><pubDate>Tue, 31 Dec 2013 05:43:00 GMT</pubDate><guid>http://www.blogjava.net/wshao/archive/2013/12/31/408253.html</guid><wfw:comment>http://www.blogjava.net/wshao/comments/408253.html</wfw:comment><comments>http://www.blogjava.net/wshao/archive/2013/12/31/408253.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wshao/comments/commentRss/408253.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wshao/services/trackbacks/408253.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: AOP（Aspect Orient Programming），也就是常说的面向方面编程，它是作为面向对象编程的一种补充，专门用于处理系统中分布于各个模块（不同方法）中的交叉关注点的问题，在 Java EE 应用中，常常通过 AOP 来处理一些具有横切性质的系统级服务，如事务管理、安全检查、缓存、对象池管理等。简单点来说，它就是一个拦截器可以拦截一些进程，例如，当某个方法执行时，Spring AOP...&nbsp;&nbsp;<a href='http://www.blogjava.net/wshao/archive/2013/12/31/408253.html'>阅读全文</a><img src ="http://www.blogjava.net/wshao/aggbug/408253.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wshao/" target="_blank">午后星期午</a> 2013-12-31 13:43 <a href="http://www.blogjava.net/wshao/archive/2013/12/31/408253.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>hibernate one-to-many many-to-one 双向注解</title><link>http://www.blogjava.net/wshao/archive/2013/12/31/408251.html</link><dc:creator>午后星期午</dc:creator><author>午后星期午</author><pubDate>Tue, 31 Dec 2013 05:34:00 GMT</pubDate><guid>http://www.blogjava.net/wshao/archive/2013/12/31/408251.html</guid><wfw:comment>http://www.blogjava.net/wshao/comments/408251.html</wfw:comment><comments>http://www.blogjava.net/wshao/archive/2013/12/31/408251.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wshao/comments/commentRss/408251.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wshao/services/trackbacks/408251.html</trackback:ping><description><![CDATA[环境： 
<div class="cnblogs_code"><pre>Hibernate 3.3.1<span style="color: #000000"> 
Maven </span>3.0.4<span style="color: #000000"> 
MySQL </span>5.5.13<span style="color: #000000"> 
Myeclipse </span>8.6.1 </pre></div>
<p>建表语句：</p>
<div class="cnblogs_code"><pre><span style="color: #0000ff">DROP</span> <span style="color: #0000ff">TABLE</span> <span style="color: #0000ff">IF</span> <span style="color: #808080">EXISTS</span><span style="color: #000000"> `t_company`;
</span><span style="color: #0000ff">CREATE</span> <span style="color: #0000ff">TABLE</span><span style="color: #000000"> `t_company` (
  `companyId` </span><span style="color: #0000ff">int</span>(<span style="color: #800000; font-weight: bold">10</span>) unsigned <span style="color: #808080">NOT</span> <span style="color: #0000ff">NULL</span><span style="color: #000000"> AUTO_INCREMENT,
  `companyName` </span><span style="color: #0000ff">varchar</span>(<span style="color: #800000; font-weight: bold">30</span>) <span style="color: #808080">NOT</span> <span style="color: #0000ff">NULL</span><span style="color: #000000">,
  </span><span style="color: #0000ff">PRIMARY</span> <span style="color: #0000ff">KEY</span><span style="color: #000000"> (`companyId`)
) ENGINE</span><span style="color: #808080">=</span>InnoDB AUTO_INCREMENT<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">3</span> <span style="color: #0000ff">DEFAULT</span> CHARSET<span style="color: #808080">=</span><span style="color: #000000">gb2312;

</span><span style="color: #0000ff">INSERT</span> <span style="color: #0000ff">INTO</span> `t_company` <span style="color: #0000ff">VALUES</span> (<span style="color: #ff0000">'</span><span style="color: #ff0000">1</span><span style="color: #ff0000">'</span>, <span style="color: #ff0000">'</span><span style="color: #ff0000">Sun</span><span style="color: #ff0000">'</span><span style="color: #000000">);
</span><span style="color: #0000ff">INSERT</span> <span style="color: #0000ff">INTO</span> `t_company` <span style="color: #0000ff">VALUES</span> (<span style="color: #ff0000">'</span><span style="color: #ff0000">2</span><span style="color: #ff0000">'</span>, <span style="color: #ff0000">'</span><span style="color: #ff0000">Apache</span><span style="color: #ff0000">'</span>);</pre></div>
<div class="cnblogs_code"><pre><span style="color: #0000ff">DROP</span> <span style="color: #0000ff">TABLE</span> <span style="color: #0000ff">IF</span> <span style="color: #808080">EXISTS</span><span style="color: #000000"> `t_employee`;
</span><span style="color: #0000ff">CREATE</span> <span style="color: #0000ff">TABLE</span><span style="color: #000000"> `t_employee` (
  `employeeId` </span><span style="color: #0000ff">int</span>(<span style="color: #800000; font-weight: bold">10</span>) unsigned <span style="color: #808080">NOT</span> <span style="color: #0000ff">NULL</span><span style="color: #000000"> AUTO_INCREMENT,
  `employeeName` </span><span style="color: #0000ff">varchar</span>(<span style="color: #800000; font-weight: bold">15</span>) <span style="color: #808080">NOT</span> <span style="color: #0000ff">NULL</span><span style="color: #000000">,
  `cid` </span><span style="color: #0000ff">int</span>(<span style="color: #800000; font-weight: bold">10</span>) unsigned <span style="color: #808080">NOT</span> <span style="color: #0000ff">NULL</span><span style="color: #000000">,
  </span><span style="color: #0000ff">PRIMARY</span> <span style="color: #0000ff">KEY</span><span style="color: #000000"> (`employeeId`)
) ENGINE</span><span style="color: #808080">=</span>InnoDB AUTO_INCREMENT<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">6</span> <span style="color: #0000ff">DEFAULT</span> CHARSET<span style="color: #808080">=</span><span style="color: #000000">gb2312;

</span><span style="color: #0000ff">INSERT</span> <span style="color: #0000ff">INTO</span> `t_employee` <span style="color: #0000ff">VALUES</span> (<span style="color: #ff0000">'</span><span style="color: #ff0000">1</span><span style="color: #ff0000">'</span>, <span style="color: #ff0000">'</span><span style="color: #ff0000">Tom</span><span style="color: #ff0000">'</span>, <span style="color: #ff0000">'</span><span style="color: #ff0000">1</span><span style="color: #ff0000">'</span><span style="color: #000000">);
</span><span style="color: #0000ff">INSERT</span> <span style="color: #0000ff">INTO</span> `t_employee` <span style="color: #0000ff">VALUES</span> (<span style="color: #ff0000">'</span><span style="color: #ff0000">2</span><span style="color: #ff0000">'</span>, <span style="color: #ff0000">'</span><span style="color: #ff0000">Summ</span><span style="color: #ff0000">'</span>, <span style="color: #ff0000">'</span><span style="color: #ff0000">1</span><span style="color: #ff0000">'</span><span style="color: #000000">);
</span><span style="color: #0000ff">INSERT</span> <span style="color: #0000ff">INTO</span> `t_employee` <span style="color: #0000ff">VALUES</span> (<span style="color: #ff0000">'</span><span style="color: #ff0000">3</span><span style="color: #ff0000">'</span>, <span style="color: #ff0000">'</span><span style="color: #ff0000">Cat</span><span style="color: #ff0000">'</span>, <span style="color: #ff0000">'</span><span style="color: #ff0000">2</span><span style="color: #ff0000">'</span><span style="color: #000000">);
</span><span style="color: #0000ff">INSERT</span> <span style="color: #0000ff">INTO</span> `t_employee` <span style="color: #0000ff">VALUES</span> (<span style="color: #ff0000">'</span><span style="color: #ff0000">4</span><span style="color: #ff0000">'</span>, <span style="color: #ff0000">'</span><span style="color: #ff0000">Vinylon</span><span style="color: #ff0000">'</span>, <span style="color: #ff0000">'</span><span style="color: #ff0000">1</span><span style="color: #ff0000">'</span><span style="color: #000000">);
</span><span style="color: #0000ff">INSERT</span> <span style="color: #0000ff">INTO</span> `t_employee` <span style="color: #0000ff">VALUES</span> (<span style="color: #ff0000">'</span><span style="color: #ff0000">5</span><span style="color: #ff0000">'</span>, <span style="color: #ff0000">'</span><span style="color: #ff0000">Dog</span><span style="color: #ff0000">'</span>, <span style="color: #ff0000">'</span><span style="color: #ff0000">2</span><span style="color: #ff0000">'</span>);</pre></div>
<p>目录结构：</p>
<p><img alt="" src="http://pic002.cnblogs.com/images/2012/417214/2012061018423920.jpg" /></p>
<p>Employee.java</p>
<div class="cnblogs_code"><pre><span style="color: #0000ff">package</span><span style="color: #000000"> com.fancy.po;

</span><span style="color: #0000ff">import</span><span style="color: #000000"> javax.persistence.CascadeType;
</span><span style="color: #0000ff">import</span><span style="color: #000000"> javax.persistence.Entity;
</span><span style="color: #0000ff">import</span><span style="color: #000000"> javax.persistence.FetchType;
</span><span style="color: #0000ff">import</span><span style="color: #000000"> javax.persistence.GeneratedValue;
</span><span style="color: #0000ff">import</span><span style="color: #000000"> javax.persistence.GenerationType;
</span><span style="color: #0000ff">import</span><span style="color: #000000"> javax.persistence.Id;
</span><span style="color: #0000ff">import</span><span style="color: #000000"> javax.persistence.JoinColumn;
</span><span style="color: #0000ff">import</span><span style="color: #000000"> javax.persistence.ManyToOne;
</span><span style="color: #0000ff">import</span><span style="color: #000000"> javax.persistence.Table;
</span><span style="color: #008000">/**</span><span style="color: #008000">
 * -----------------------------------------
 * @文件: Employee.java
 * @作者: fancy
 * @邮箱: fancyzero@yeah.net
 * @时间: 2012-6-10
 * @描述: 实体类
 * -----------------------------------------
 </span><span style="color: #008000">*/</span>
<span style="color: #008000">/**</span><span style="color: #008000">
 * 下面只说@ManyToOne,如需了解其他注解,
 * 可以参考上一篇：</span><span style="color: #008000; text-decoration: underline">http://www.cnblogs.com/fancyzero/archive/2012/06/10/hibernate-one-to-one-annotation.html</span>
 <span style="color: #008000">*/</span><span style="color: #000000">
@Entity
@Table(name </span>= "t_employee"<span style="color: #000000">)
</span><span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span><span style="color: #000000"> Employee {

    </span><span style="color: #0000ff">private</span><span style="color: #000000"> Integer employeeId;
    </span><span style="color: #0000ff">private</span><span style="color: #000000"> String  employeeName;
    </span><span style="color: #0000ff">private</span><span style="color: #000000"> Company company;
    
    @Id
    @GeneratedValue(strategy </span>=<span style="color: #000000"> GenerationType.AUTO)
    </span><span style="color: #0000ff">public</span><span style="color: #000000"> Integer getEmployeeId() {
        </span><span style="color: #0000ff">return</span><span style="color: #000000"> employeeId;
    }
    </span><span style="color: #008000">/**</span><span style="color: #008000">
     * @ManyToOne：多对一,cascade：级联,请参考上一篇
      * fetch = FetchType.LAZY,延迟加载策略,如果不想延迟加载可以用FetchType.EAGER
     </span><span style="color: #008000">*/</span><span style="color: #000000">
    @ManyToOne(cascade </span>= {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH},fetch =<span style="color: #000000"> FetchType.LAZY)
    @JoinColumn(name </span>= "cid"<span style="color: #000000">)
    </span><span style="color: #0000ff">public</span><span style="color: #000000"> Company getCompany() {
        </span><span style="color: #0000ff">return</span><span style="color: #000000"> company;
    }
    </span><span style="color: #0000ff">public</span><span style="color: #000000"> String getEmployeeName() {
        </span><span style="color: #0000ff">return</span><span style="color: #000000"> employeeName;
    }
    </span><span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span><span style="color: #000000"> setEmployeeId(Integer employeeId) {
        </span><span style="color: #0000ff">this</span>.employeeId =<span style="color: #000000"> employeeId;
    }
    </span><span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span><span style="color: #000000"> setEmployeeName(String employeeName) {
        </span><span style="color: #0000ff">this</span>.employeeName =<span style="color: #000000"> employeeName;
    }
    </span><span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span><span style="color: #000000"> setCompany(Company company) {
        </span><span style="color: #0000ff">this</span>.company =<span style="color: #000000"> company;
    }
}</span></pre></div>
<p>&nbsp;</p>
<p>Company.java</p>
<div class="cnblogs_code"><pre><span style="color: #0000ff">package</span><span style="color: #000000"> com.fancy.po;

</span><span style="color: #0000ff">import</span><span style="color: #000000"> java.util.Set;
</span><span style="color: #0000ff">import</span><span style="color: #000000"> javax.persistence.Entity;
</span><span style="color: #0000ff">import</span><span style="color: #000000"> javax.persistence.GeneratedValue;
</span><span style="color: #0000ff">import</span><span style="color: #000000"> javax.persistence.GenerationType;
</span><span style="color: #0000ff">import</span><span style="color: #000000"> javax.persistence.Id;
</span><span style="color: #0000ff">import</span><span style="color: #000000"> javax.persistence.OneToMany;
</span><span style="color: #0000ff">import</span><span style="color: #000000"> javax.persistence.Table;
</span><span style="color: #008000">/**</span><span style="color: #008000">
 * -----------------------------------------
 * @文件: Company.java
 * @作者: fancy
 * @邮箱: fancyzero@yeah.net
 * @时间: 2012-6-10
 * @描述: 实体类
 * -----------------------------------------
 </span><span style="color: #008000">*/</span>
<span style="color: #008000">/**</span><span style="color: #008000">
 * 下面只说@OneToMany,如需了解其他注解,
 * 可以参考上一篇：</span><span style="color: #008000; text-decoration: underline">http://www.cnblogs.com/fancyzero/archive/2012/06/10/hibernate-one-to-one-annotation.html</span>
 <span style="color: #008000">*/</span><span style="color: #000000">
@Entity
@Table(name </span>= "t_company"<span style="color: #000000">)
</span><span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span><span style="color: #000000"> Company {

    </span><span style="color: #0000ff">private</span><span style="color: #000000"> Integer companyId;
    </span><span style="color: #0000ff">private</span><span style="color: #000000"> String  companyName;
    </span><span style="color: #0000ff">private</span> Set&lt;Employee&gt;<span style="color: #000000"> employees;
    
    @Id
    @GeneratedValue(strategy </span>=<span style="color: #000000"> GenerationType.AUTO)
    </span><span style="color: #0000ff">public</span><span style="color: #000000"> Integer getCompanyId() {
        </span><span style="color: #0000ff">return</span><span style="color: #000000"> companyId;
    }
    </span><span style="color: #008000">/**</span><span style="color: #008000">
     * @OneToMany 与 OneToOne相似的也用mappedBy,参考了Employee
     * 可以参考上一篇
     </span><span style="color: #008000">*/</span><span style="color: #000000">
    @OneToMany(mappedBy </span>= "company"<span style="color: #000000">)
    </span><span style="color: #0000ff">public</span> Set&lt;Employee&gt;<span style="color: #000000"> getEmployees() {
        </span><span style="color: #0000ff">return</span><span style="color: #000000"> employees;
    }
    </span><span style="color: #0000ff">public</span><span style="color: #000000"> String getCompanyName() {
        </span><span style="color: #0000ff">return</span><span style="color: #000000"> companyName;
    }
    </span><span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span><span style="color: #000000"> setCompanyId(Integer companyId) {
        </span><span style="color: #0000ff">this</span>.companyId =<span style="color: #000000"> companyId;
    }
    </span><span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span><span style="color: #000000"> setCompanyName(String companyName) {
        </span><span style="color: #0000ff">this</span>.companyName =<span style="color: #000000"> companyName;
    }
    </span><span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> setEmployees(Set&lt;Employee&gt;<span style="color: #000000"> employees) {
        </span><span style="color: #0000ff">this</span>.employees =<span style="color: #000000"> employees;
    }
}</span></pre></div>
<p>&nbsp;</p>
<p>pom.xml</p>
<div class="cnblogs_code"><pre><span style="color: #0000ff">&lt;</span><span style="color: #800000">project </span><span style="color: #ff0000">xmlns</span><span style="color: #0000ff">="http://maven.apache.org/POM/4.0.0"</span><span style="color: #ff0000"> xmlns:xsi</span><span style="color: #0000ff">="http://www.w3.org/2001/XMLSchema-instance"</span><span style="color: #ff0000">
  xsi:schemaLocation</span><span style="color: #0000ff">="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"</span><span style="color: #0000ff">&gt;</span>
  <span style="color: #0000ff">&lt;</span><span style="color: #800000">modelVersion</span><span style="color: #0000ff">&gt;</span>4.0.0<span style="color: #0000ff">&lt;/</span><span style="color: #800000">modelVersion</span><span style="color: #0000ff">&gt;</span>
  <span style="color: #0000ff">&lt;</span><span style="color: #800000">groupId</span><span style="color: #0000ff">&gt;</span>com.fancy<span style="color: #0000ff">&lt;/</span><span style="color: #800000">groupId</span><span style="color: #0000ff">&gt;</span>
  <span style="color: #0000ff">&lt;</span><span style="color: #800000">artifactId</span><span style="color: #0000ff">&gt;</span>hibernate-annotation-many-to-one-example<span style="color: #0000ff">&lt;/</span><span style="color: #800000">artifactId</span><span style="color: #0000ff">&gt;</span>
  <span style="color: #0000ff">&lt;</span><span style="color: #800000">version</span><span style="color: #0000ff">&gt;</span>0.0.1-SNAPSHOT<span style="color: #0000ff">&lt;/</span><span style="color: #800000">version</span><span style="color: #0000ff">&gt;</span>
  <span style="color: #0000ff">&lt;</span><span style="color: #800000">packaging</span><span style="color: #0000ff">&gt;</span>jar<span style="color: #0000ff">&lt;/</span><span style="color: #800000">packaging</span><span style="color: #0000ff">&gt;</span>
  <span style="color: #0000ff">&lt;</span><span style="color: #800000">name</span><span style="color: #0000ff">&gt;</span>hibernate-annotation-many-to-one-example<span style="color: #0000ff">&lt;/</span><span style="color: #800000">name</span><span style="color: #0000ff">&gt;</span>
  <span style="color: #0000ff">&lt;</span><span style="color: #800000">url</span><span style="color: #0000ff">&gt;</span>http://maven.apache.org<span style="color: #0000ff">&lt;/</span><span style="color: #800000">url</span><span style="color: #0000ff">&gt;</span>
  <span style="color: #0000ff">&lt;</span><span style="color: #800000">properties</span><span style="color: #0000ff">&gt;</span>
    <span style="color: #0000ff">&lt;</span><span style="color: #800000">project.build.sourceEncoding</span><span style="color: #0000ff">&gt;</span>UTF-8<span style="color: #0000ff">&lt;/</span><span style="color: #800000">project.build.sourceEncoding</span><span style="color: #0000ff">&gt;</span>
  <span style="color: #0000ff">&lt;/</span><span style="color: #800000">properties</span><span style="color: #0000ff">&gt;</span>
  
  <span style="color: #0000ff">&lt;</span><span style="color: #800000">dependencies</span><span style="color: #0000ff">&gt;</span>
    <span style="color: #008000">&lt;!--</span><span style="color: #008000"> hibernate jar </span><span style="color: #008000">--&gt;</span>
    <span style="color: #0000ff">&lt;</span><span style="color: #800000">dependency</span><span style="color: #0000ff">&gt;</span>
      <span style="color: #0000ff">&lt;</span><span style="color: #800000">groupId</span><span style="color: #0000ff">&gt;</span>org.hibernate<span style="color: #0000ff">&lt;/</span><span style="color: #800000">groupId</span><span style="color: #0000ff">&gt;</span>
      <span style="color: #0000ff">&lt;</span><span style="color: #800000">artifactId</span><span style="color: #0000ff">&gt;</span>hibernate-entitymanager<span style="color: #0000ff">&lt;/</span><span style="color: #800000">artifactId</span><span style="color: #0000ff">&gt;</span>
      <span style="color: #0000ff">&lt;</span><span style="color: #800000">version</span><span style="color: #0000ff">&gt;</span>3.3.1.ga<span style="color: #0000ff">&lt;/</span><span style="color: #800000">version</span><span style="color: #0000ff">&gt;</span>
    <span style="color: #0000ff">&lt;/</span><span style="color: #800000">dependency</span><span style="color: #0000ff">&gt;</span>
    <span style="color: #008000">&lt;!--</span><span style="color: #008000"> hibernate annotation jar </span><span style="color: #008000">--&gt;</span>
    <span style="color: #0000ff">&lt;</span><span style="color: #800000">dependency</span><span style="color: #0000ff">&gt;</span>
      <span style="color: #0000ff">&lt;</span><span style="color: #800000">groupId</span><span style="color: #0000ff">&gt;</span>org.hibernate<span style="color: #0000ff">&lt;/</span><span style="color: #800000">groupId</span><span style="color: #0000ff">&gt;</span>
      <span style="color: #0000ff">&lt;</span><span style="color: #800000">artifactId</span><span style="color: #0000ff">&gt;</span>hibernate-annotations<span style="color: #0000ff">&lt;/</span><span style="color: #800000">artifactId</span><span style="color: #0000ff">&gt;</span>
      <span style="color: #0000ff">&lt;</span><span style="color: #800000">version</span><span style="color: #0000ff">&gt;</span>3.3.1.GA<span style="color: #0000ff">&lt;/</span><span style="color: #800000">version</span><span style="color: #0000ff">&gt;</span>
    <span style="color: #0000ff">&lt;/</span><span style="color: #800000">dependency</span><span style="color: #0000ff">&gt;</span>
    <span style="color: #008000">&lt;!--</span><span style="color: #008000"> mysql </span><span style="color: #008000">--&gt;</span>
    <span style="color: #0000ff">&lt;</span><span style="color: #800000">dependency</span><span style="color: #0000ff">&gt;</span>
      <span style="color: #0000ff">&lt;</span><span style="color: #800000">groupId</span><span style="color: #0000ff">&gt;</span>mysql<span style="color: #0000ff">&lt;/</span><span style="color: #800000">groupId</span><span style="color: #0000ff">&gt;</span>
      <span style="color: #0000ff">&lt;</span><span style="color: #800000">artifactId</span><span style="color: #0000ff">&gt;</span>mysql-connector-java<span style="color: #0000ff">&lt;/</span><span style="color: #800000">artifactId</span><span style="color: #0000ff">&gt;</span>
      <span style="color: #0000ff">&lt;</span><span style="color: #800000">version</span><span style="color: #0000ff">&gt;</span>5.1.17<span style="color: #0000ff">&lt;/</span><span style="color: #800000">version</span><span style="color: #0000ff">&gt;</span>
    <span style="color: #0000ff">&lt;/</span><span style="color: #800000">dependency</span><span style="color: #0000ff">&gt;</span>
    <span style="color: #0000ff">&lt;</span><span style="color: #800000">dependency</span><span style="color: #0000ff">&gt;</span>
      <span style="color: #0000ff">&lt;</span><span style="color: #800000">groupId</span><span style="color: #0000ff">&gt;</span>junit<span style="color: #0000ff">&lt;/</span><span style="color: #800000">groupId</span><span style="color: #0000ff">&gt;</span>
      <span style="color: #0000ff">&lt;</span><span style="color: #800000">artifactId</span><span style="color: #0000ff">&gt;</span>junit<span style="color: #0000ff">&lt;/</span><span style="color: #800000">artifactId</span><span style="color: #0000ff">&gt;</span>
      <span style="color: #0000ff">&lt;</span><span style="color: #800000">version</span><span style="color: #0000ff">&gt;</span>3.8.1<span style="color: #0000ff">&lt;/</span><span style="color: #800000">version</span><span style="color: #0000ff">&gt;</span>
      <span style="color: #0000ff">&lt;</span><span style="color: #800000">scope</span><span style="color: #0000ff">&gt;</span>test<span style="color: #0000ff">&lt;/</span><span style="color: #800000">scope</span><span style="color: #0000ff">&gt;</span>
    <span style="color: #0000ff">&lt;/</span><span style="color: #800000">dependency</span><span style="color: #0000ff">&gt;</span>
  <span style="color: #0000ff">&lt;/</span><span style="color: #800000">dependencies</span><span style="color: #0000ff">&gt;</span>
  
<span style="color: #0000ff">&lt;/</span><span style="color: #800000">project</span><span style="color: #0000ff">&gt;</span></pre></div>
<p><br />Test.java</p>
<div class="cnblogs_code"><pre><span style="color: #0000ff">package</span><span style="color: #000000"> com.fancy.test;

</span><span style="color: #0000ff">import</span><span style="color: #000000"> java.util.Iterator;
</span><span style="color: #0000ff">import</span><span style="color: #000000"> java.util.Set;
</span><span style="color: #0000ff">import</span><span style="color: #000000"> org.hibernate.Session;
</span><span style="color: #0000ff">import</span><span style="color: #000000"> org.hibernate.SessionFactory;
</span><span style="color: #0000ff">import</span><span style="color: #000000"> org.hibernate.cfg.AnnotationConfiguration;
</span><span style="color: #0000ff">import</span><span style="color: #000000"> org.hibernate.cfg.Configuration;
</span><span style="color: #0000ff">import</span><span style="color: #000000"> com.fancy.po.Company;
</span><span style="color: #0000ff">import</span><span style="color: #000000"> com.fancy.po.Employee;
</span><span style="color: #008000">/**</span><span style="color: #008000">
 * -----------------------------------------
 * @文件: Test.java
 * @作者: fancy
 * @邮箱: fancyzero@yeah.net
 * @时间: 2012-6-10
 * @描述: 测试类
 * -----------------------------------------
 </span><span style="color: #008000">*/</span>
<span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span><span style="color: #000000"> Test {

    </span><span style="color: #0000ff">public</span> <span style="color: #0000ff">static</span> <span style="color: #0000ff">void</span><span style="color: #000000"> main(String[] args) {
        </span><span style="color: #008000">//</span><span style="color: #008000">读取hibernate配置,默认读取classpath下的hibernate.cfg.xml</span>
        Configuration conf = <span style="color: #0000ff">new</span><span style="color: #000000"> AnnotationConfiguration();    
        </span><span style="color: #008000">//</span><span style="color: #008000">构建session工厂</span>
         SessionFactory sessionFactory =<span style="color: #000000"> conf.configure().buildSessionFactory();
        </span><span style="color: #008000">//</span><span style="color: #008000">打开session</span>
        Session session =<span style="color: #000000"> sessionFactory.openSession();
        </span><span style="color: #008000">//</span><span style="color: #008000">开始事务</span>
<span style="color: #000000">         session.beginTransaction();
        </span><span style="color: #008000">//</span><span style="color: #008000"> * * * * * * * * * * * * * * * * * * * * * * * * * * * *
        </span><span style="color: #008000">//</span><span style="color: #008000">test1(session);   </span><span style="color: #008000">//</span><span style="color: #008000">测试 1
        </span><span style="color: #008000">//</span><span style="color: #008000">test2(session);  </span><span style="color: #008000">//</span><span style="color: #008000">测试  2</span>
        test3(session);   <span style="color: #008000">//</span><span style="color: #008000">测试   3
        </span><span style="color: #008000">//</span><span style="color: #008000"> * * * * * * * * * * * * * * * * * * * * * * * * * * * *
        </span><span style="color: #008000">//</span><span style="color: #008000">提交事务</span>
<span style="color: #000000">         session.getTransaction().commit();
        </span><span style="color: #008000">//</span><span style="color: #008000">关闭session工厂</span>
<span style="color: #000000">         sessionFactory.close();
        </span><span style="color: #008000">//</span><span style="color: #008000">关闭session</span>
<span style="color: #000000">        session.close();
    }
    </span><span style="color: #0000ff">public</span> <span style="color: #0000ff">static</span> <span style="color: #0000ff">void</span><span style="color: #000000"> test1(Session session){
        Company company </span>= (Company)session.get(Company.<span style="color: #0000ff">class</span>, 1); <span style="color: #008000">//</span><span style="color: #008000">发出Company的select语句</span>
         Set&lt;Employee&gt; employee = company.getEmployees();         <span style="color: #008000">//</span><span style="color: #008000">不发出Employee的select语句</span>
         System.out.println("Company ：" +<span style="color: #000000"> company.getCompanyName());
        System.out.println(</span>"CountSum：" + employee.size()); <span style="color: #008000">//</span><span style="color: #008000">Employee初次被使用,发出select语句</span>
         Iterator&lt;Employee&gt; it = employee.iterator(); <span style="color: #008000">//</span><span style="color: #008000">Employee不再发出select语句</span>
         <span style="color: #0000ff">while</span><span style="color: #000000">(it.hasNext()){
          System.out.println(</span>"EmployeeName：" +<span style="color: #000000"> it.next().getEmployeeName());
        }
    }
    </span><span style="color: #0000ff">public</span> <span style="color: #0000ff">static</span> <span style="color: #0000ff">void</span><span style="color: #000000"> test2(Session session){
       Company company </span>= (Company)session.get(Company.<span style="color: #0000ff">class</span>, 2);<span style="color: #008000">//</span><span style="color: #008000">发出Company的select语句</span>
        Set&lt;Employee&gt; employee = company.getEmployees();        <span style="color: #008000">//</span><span style="color: #008000">不发出Employee的select语句</span>
        Iterator&lt;Employee&gt; it = employee.iterator(); <span style="color: #008000">//</span><span style="color: #008000">发出Employee的select语句</span>
        Employee e = <span style="color: #0000ff">null</span><span style="color: #000000">;
       Boolean first </span>= <span style="color: #0000ff">false</span><span style="color: #000000">;
       </span><span style="color: #0000ff">while</span><span style="color: #000000">(it.hasNext()){
          e </span>=<span style="color: #000000"> it.next();
          </span><span style="color: #0000ff">if</span>(!<span style="color: #000000">first){
              System.out.println(</span>"EmployeeId：[" + e.getEmployeeId() + "] information will be change"<span style="color: #000000">);
              e.setEmployeeName(</span>"fancy"); <span style="color: #008000">//</span><span style="color: #008000">更改雇员名字
            </span><span style="color: #008000">// </span><span style="color: #008000"> session.save(e);  </span><span style="color: #008000">//</span><span style="color: #008000">发出Employee的update语句,不发出Company的update语句</span>
                session.save(company);    <span style="color: #008000">//</span><span style="color: #008000">发出Employee的update语句,不发出Company的update语句</span>
                first = <span style="color: #0000ff">true</span><span style="color: #000000">;
            }
            System.out.println(</span>"EmployeeName：" +<span style="color: #000000"> e.getEmployeeName());
        }
    }
    </span><span style="color: #0000ff">public</span> <span style="color: #0000ff">static</span> <span style="color: #0000ff">void</span><span style="color: #000000"> test3(Session session){
        Employee employee </span>= (Employee)session.get(Employee.<span style="color: #0000ff">class</span>, 1);<span style="color: #008000">//</span><span style="color: #008000">发出Employee的select语句</span>
         Company  company  = (Company)session.get(Company.<span style="color: #0000ff">class</span>, 1);<span style="color: #008000">//</span><span style="color: #008000">发出Company的select语句</span>
         company.setCompanyName("Oracle"); <span style="color: #008000">//</span><span style="color: #008000">更改公司名字
    </span><span style="color: #008000">//</span><span style="color: #008000">  session.save(company);</span><span style="color: #008000">//</span><span style="color: #008000">发出Company的update语句,不发出Employee的update语句</span>
         session.save(employee);<span style="color: #008000">//</span><span style="color: #008000">发出Company的update语句,不发出Employee的update语句</span>
<span style="color: #000000">    }
}</span></pre></div>
<p>&nbsp;</p><br /><br /><span style="font-family: Georgia; font-size: 10pt"><br /><span style="font-family: Georgia; color: #008000; font-size: 10pt">&nbsp;&nbsp;&nbsp;[ 转载出处：<a href="http://www.blogjava.net/fancydeepin" target="_blank"><font color="#1d58d1">http://www.blogjava.net/fancydeepin</font></a>&nbsp;]</span></span> <img src ="http://www.blogjava.net/wshao/aggbug/408251.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wshao/" target="_blank">午后星期午</a> 2013-12-31 13:34 <a href="http://www.blogjava.net/wshao/archive/2013/12/31/408251.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>hibernate annotation 双向 one-to-one 注解</title><link>http://www.blogjava.net/wshao/archive/2013/12/31/408250.html</link><dc:creator>午后星期午</dc:creator><author>午后星期午</author><pubDate>Tue, 31 Dec 2013 05:33:00 GMT</pubDate><guid>http://www.blogjava.net/wshao/archive/2013/12/31/408250.html</guid><wfw:comment>http://www.blogjava.net/wshao/comments/408250.html</wfw:comment><comments>http://www.blogjava.net/wshao/archive/2013/12/31/408250.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wshao/comments/commentRss/408250.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wshao/services/trackbacks/408250.html</trackback:ping><description><![CDATA[环境： 
<div class="cnblogs_code"><pre><span style="color: #000000">Hibernate 3.3.1 
Maven 3.0.4 
MySQL 5.5.13 
Myeclipse 8.6.1 </span></pre></div>
<p>&nbsp;</p>
<p>&nbsp;建表语句：</p>
<div class="cnblogs_code"><pre><span style="color: #0000ff">DROP</span> <span style="color: #0000ff">TABLE</span> <span style="color: #0000ff">IF</span> <span style="color: #808080">EXISTS</span><span style="color: #000000"> `t_card`;
</span><span style="color: #0000ff">CREATE</span> <span style="color: #0000ff">TABLE</span><span style="color: #000000"> `t_card` (
  `cardId` </span><span style="color: #0000ff">int</span>(<span style="color: #800000; font-weight: bold">10</span>) unsigned <span style="color: #808080">NOT</span> <span style="color: #0000ff">NULL</span><span style="color: #000000"> AUTO_INCREMENT,
  `cardNumber` </span><span style="color: #0000ff">char</span>(<span style="color: #800000; font-weight: bold">18</span>) <span style="color: #808080">NOT</span> <span style="color: #0000ff">NULL</span><span style="color: #000000">,
  </span><span style="color: #0000ff">PRIMARY</span> <span style="color: #0000ff">KEY</span><span style="color: #000000"> (`cardId`)
) ENGINE</span><span style="color: #808080">=</span>InnoDB AUTO_INCREMENT<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">2</span> <span style="color: #0000ff">DEFAULT</span> CHARSET<span style="color: #808080">=</span><span style="color: #000000">gb2312;

</span><span style="color: #0000ff">INSERT</span> <span style="color: #0000ff">INTO</span> `t_card` <span style="color: #0000ff">VALUES</span> (<span style="color: #ff0000">'</span><span style="color: #ff0000">1</span><span style="color: #ff0000">'</span>, <span style="color: #ff0000">'</span><span style="color: #ff0000">440911199008011122</span><span style="color: #ff0000">'</span>);</pre></div>
<div class="cnblogs_code"><pre><span style="color: #0000ff">DROP</span> <span style="color: #0000ff">TABLE</span> <span style="color: #0000ff">IF</span> <span style="color: #808080">EXISTS</span><span style="color: #000000"> `t_person`;
</span><span style="color: #0000ff">CREATE</span> <span style="color: #0000ff">TABLE</span><span style="color: #000000"> `t_person` (
  `personId` </span><span style="color: #0000ff">int</span>(<span style="color: #800000; font-weight: bold">10</span>) unsigned <span style="color: #808080">NOT</span> <span style="color: #0000ff">NULL</span><span style="color: #000000"> AUTO_INCREMENT,
  `personName` </span><span style="color: #0000ff">varchar</span>(<span style="color: #800000; font-weight: bold">15</span>) <span style="color: #808080">NOT</span> <span style="color: #0000ff">NULL</span><span style="color: #000000">,
  `cid` </span><span style="color: #0000ff">int</span>(<span style="color: #800000; font-weight: bold">10</span>) unsigned <span style="color: #808080">NOT</span> <span style="color: #0000ff">NULL</span><span style="color: #000000">,
  </span><span style="color: #0000ff">PRIMARY</span> <span style="color: #0000ff">KEY</span><span style="color: #000000"> (`personId`)
) ENGINE</span><span style="color: #808080">=</span>InnoDB AUTO_INCREMENT<span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">2</span> <span style="color: #0000ff">DEFAULT</span> CHARSET<span style="color: #808080">=</span><span style="color: #000000">gb2312;

</span><span style="color: #0000ff">INSERT</span> <span style="color: #0000ff">INTO</span> `t_person` <span style="color: #0000ff">VALUES</span> (<span style="color: #ff0000">'</span><span style="color: #ff0000">1</span><span style="color: #ff0000">'</span>, <span style="color: #ff0000">'</span><span style="color: #ff0000">fancy</span><span style="color: #ff0000">'</span>, <span style="color: #ff0000">'</span><span style="color: #ff0000">1</span><span style="color: #ff0000">'</span>);</pre></div>
<p>&nbsp;</p>
<p>Person.java</p>
<div class="cnblogs_code"><pre><span style="color: #0000ff">package</span><span style="color: #000000"> com.fancy.po;

</span><span style="color: #0000ff">import</span><span style="color: #000000"> javax.persistence.CascadeType;
</span><span style="color: #0000ff">import</span><span style="color: #000000"> javax.persistence.Entity;
</span><span style="color: #0000ff">import</span><span style="color: #000000"> javax.persistence.GeneratedValue;
</span><span style="color: #0000ff">import</span><span style="color: #000000"> javax.persistence.GenerationType;
</span><span style="color: #0000ff">import</span><span style="color: #000000"> javax.persistence.Id;
</span><span style="color: #0000ff">import</span><span style="color: #000000"> javax.persistence.JoinColumn;
</span><span style="color: #0000ff">import</span><span style="color: #000000"> javax.persistence.OneToOne;
</span><span style="color: #0000ff">import</span><span style="color: #000000"> javax.persistence.Table;
</span><span style="color: #008000">/**</span><span style="color: #008000">
 * -----------------------------------------
 * @文件: Person.java
 * @作者: fancy
 * @邮箱: fancyzero@yeah.net
 * @时间: 2012-6-10
 * @描述: 实体类
 * -----------------------------------------
 </span><span style="color: #008000">*/</span>
<span style="color: #008000">/**</span><span style="color: #008000">
 * @Entity 声明一个类为实体Bean
 * @Table(name = "xx")指定实体类映射的表,如果表名和实体类名一致,可以不指定
 </span><span style="color: #008000">*/</span><span style="color: #000000">
@Entity
@Table(name </span>= "t_person"<span style="color: #000000">)
</span><span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span><span style="color: #000000"> Person {

    </span><span style="color: #0000ff">private</span><span style="color: #000000"> Integer personId;
    </span><span style="color: #0000ff">private</span><span style="color: #000000"> String  personName;
    </span><span style="color: #0000ff">private</span><span style="color: #000000"> Card    card;
    </span><span style="color: #008000">/**</span><span style="color: #008000">
     * @Id 映射主键属性,这里采用uuid的主键生成策略
      * @GeneratedValue &#8212;&#8212; 注解声明了主键的生成策略。该注解有如下属性
      * strategy 指定生成的策略,默认是GenerationType. AUTO
     * GenerationType.AUTO 主键由程序控制
      * GenerationType.TABLE 使用一个特定的数据库表格来保存主键
      * GenerationType.IDENTITY 主键由数据库自动生成,主要是自动增长类型
      * GenerationType.SEQUENCE 根据底层数据库的序列来生成主键，条件是数据库支持序列
      * generator 指定生成主键使用的生成器
      </span><span style="color: #008000">*/</span><span style="color: #000000">
    @Id
    @GeneratedValue(strategy </span>=<span style="color: #000000"> GenerationType.AUTO)
    </span><span style="color: #0000ff">public</span><span style="color: #000000"> Integer getPersonId() {
        </span><span style="color: #0000ff">return</span><span style="color: #000000"> personId;
    }
    </span><span style="color: #008000">/**</span><span style="color: #008000">
     * @OneToOne：一对一关联
      * cascade：级联,它可以有有五个值可选,分别是：
      * CascadeType.PERSIST：级联新建
      * CascadeType.REMOVE : 级联删除
      * CascadeType.REFRESH：级联刷新
      * CascadeType.MERGE  ： 级联更新
      * CascadeType.ALL    ： 以上全部四项
      * @JoinColumn:主表外键字段
      * cid：Person所映射的表中的一个字段
      </span><span style="color: #008000">*/</span><span style="color: #000000">
    @OneToOne(cascade </span>=<span style="color: #000000"> CascadeType.ALL)
    @JoinColumn(name </span>= "cid"<span style="color: #000000">)
    </span><span style="color: #0000ff">public</span><span style="color: #000000"> Card getCard() {
        </span><span style="color: #0000ff">return</span><span style="color: #000000"> card;
    }
    </span><span style="color: #0000ff">public</span><span style="color: #000000"> String getPersonName() {
        </span><span style="color: #0000ff">return</span><span style="color: #000000"> personName;
    }
    </span><span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span><span style="color: #000000"> setPersonId(Integer personId) {
        </span><span style="color: #0000ff">this</span>.personId =<span style="color: #000000"> personId;
    }
    </span><span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span><span style="color: #000000"> setPersonName(String personName) {
        </span><span style="color: #0000ff">this</span>.personName =<span style="color: #000000"> personName;
    }
    </span><span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span><span style="color: #000000"> setCard(Card card) {
        </span><span style="color: #0000ff">this</span>.card =<span style="color: #000000"> card;
    }
}</span></pre></div>
<p>&nbsp;</p>
<p>Card.java</p>
<div class="cnblogs_code"><pre><span style="color: #0000ff">package</span><span style="color: #000000"> com.fancy.po;

</span><span style="color: #0000ff">import</span><span style="color: #000000"> javax.persistence.Entity;
</span><span style="color: #0000ff">import</span><span style="color: #000000"> javax.persistence.GeneratedValue;
</span><span style="color: #0000ff">import</span><span style="color: #000000"> javax.persistence.GenerationType;
</span><span style="color: #0000ff">import</span><span style="color: #000000"> javax.persistence.Id;
</span><span style="color: #0000ff">import</span><span style="color: #000000"> javax.persistence.OneToOne;
</span><span style="color: #0000ff">import</span><span style="color: #000000"> javax.persistence.Table;
</span><span style="color: #008000">/**</span><span style="color: #008000">
 * -----------------------------------------
 * @文件: Card.java
 * @作者: fancy
 * @邮箱: fancyzero@yeah.net
 * @时间: 2012-6-10
 * @描述: 实体类
 * -----------------------------------------
 </span><span style="color: #008000">*/</span><span style="color: #000000">
@Entity
@Table(name </span>= "t_card"<span style="color: #000000">)
</span><span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span><span style="color: #000000"> Card {

    </span><span style="color: #0000ff">private</span><span style="color: #000000"> Integer cardId;
    </span><span style="color: #0000ff">private</span><span style="color: #000000"> String  cardNumber;
    </span><span style="color: #0000ff">private</span><span style="color: #000000"> Person  person;
    
    @Id
    @GeneratedValue(strategy </span>=<span style="color: #000000"> GenerationType.AUTO)
    </span><span style="color: #0000ff">public</span><span style="color: #000000"> Integer getCardId() {
        </span><span style="color: #0000ff">return</span><span style="color: #000000"> cardId;
    }
    </span><span style="color: #008000">/**</span><span style="color: #008000">
     * @OneToOne：一对一关联
      * mappedBy = "card"：意思是说这里的一对一配置参考了card
     * card又是什么呢?card是Person类中的getCard(),注意不是Person类中的
      * card属性,Person类中的OneToOne配置就是在getCard()方法上面配的.
     * 如果Person类中的getCard()方法改成getIdCard(),其他不变的话,
     * 这里就要写成：mappedBy = "idCard"
     </span><span style="color: #008000">*/</span><span style="color: #000000">
    @OneToOne(mappedBy </span>= "card"<span style="color: #000000">)
    </span><span style="color: #0000ff">public</span><span style="color: #000000"> Person getPerson() {
        </span><span style="color: #0000ff">return</span><span style="color: #000000"> person;
    }
    </span><span style="color: #0000ff">public</span><span style="color: #000000"> String getCardNumber() {
        </span><span style="color: #0000ff">return</span><span style="color: #000000"> cardNumber;
    }
    </span><span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span><span style="color: #000000"> setCardId(Integer cardId) {
        </span><span style="color: #0000ff">this</span>.cardId =<span style="color: #000000"> cardId;
    }
    </span><span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span><span style="color: #000000"> setCardNumber(String cardNumber) {
        </span><span style="color: #0000ff">this</span>.cardNumber =<span style="color: #000000"> cardNumber;
    }
    </span><span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span><span style="color: #000000"> setPerson(Person person) {
        </span><span style="color: #0000ff">this</span>.person =<span style="color: #000000"> person;
    }
}</span></pre></div>
<p>&nbsp;</p>
<p>&nbsp;pom.xml</p>
<div class="cnblogs_code"><pre><span style="color: #0000ff">&lt;</span><span style="color: #800000">project </span><span style="color: #ff0000">xmlns</span><span style="color: #0000ff">="http://maven.apache.org/POM/4.0.0"</span><span style="color: #ff0000"> xmlns:xsi</span><span style="color: #0000ff">="http://www.w3.org/2001/XMLSchema-instance"</span><span style="color: #ff0000">
  xsi:schemaLocation</span><span style="color: #0000ff">="http://maven.apache.org/POM/4.0.0 <a href="http://maven.apache.org/xsd/maven-4.0.0.xsd%22%3E"><font color="#1d58d1">http://maven.apache.org/xsd/maven-4.0.0.xsd"</font></a></span><span style="color: #0000ff">&gt;</span>
  
  <span style="color: #0000ff">&lt;</span><span style="color: #800000">modelVersion</span><span style="color: #0000ff">&gt;</span>4.0.0<span style="color: #0000ff">&lt;/</span><span style="color: #800000">modelVersion</span><span style="color: #0000ff">&gt;</span>
  <span style="color: #0000ff">&lt;</span><span style="color: #800000">groupId</span><span style="color: #0000ff">&gt;</span>com.fancy<span style="color: #0000ff">&lt;/</span><span style="color: #800000">groupId</span><span style="color: #0000ff">&gt;</span>
  <span style="color: #0000ff">&lt;</span><span style="color: #800000">artifactId</span><span style="color: #0000ff">&gt;</span>hibernate-annotation-on-to-one-example<span style="color: #0000ff">&lt;/</span><span style="color: #800000">artifactId</span><span style="color: #0000ff">&gt;</span>
  <span style="color: #0000ff">&lt;</span><span style="color: #800000">version</span><span style="color: #0000ff">&gt;</span>0.0.1-SNAPSHOT<span style="color: #0000ff">&lt;/</span><span style="color: #800000">version</span><span style="color: #0000ff">&gt;</span>
  <span style="color: #0000ff">&lt;</span><span style="color: #800000">packaging</span><span style="color: #0000ff">&gt;</span>jar<span style="color: #0000ff">&lt;/</span><span style="color: #800000">packaging</span><span style="color: #0000ff">&gt;</span>
  <span style="color: #0000ff">&lt;</span><span style="color: #800000">name</span><span style="color: #0000ff">&gt;</span>hibernate-annotation-on-to-one-example<span style="color: #0000ff">&lt;/</span><span style="color: #800000">name</span><span style="color: #0000ff">&gt;</span>
  <span style="color: #0000ff">&lt;</span><span style="color: #800000">url</span><span style="color: #0000ff">&gt;</span>http://maven.apache.org<span style="color: #0000ff">&lt;/</span><span style="color: #800000">url</span><span style="color: #0000ff">&gt;</span>
  <span style="color: #0000ff">&lt;</span><span style="color: #800000">properties</span><span style="color: #0000ff">&gt;</span>
    <span style="color: #0000ff">&lt;</span><span style="color: #800000">project.build.sourceEncoding</span><span style="color: #0000ff">&gt;</span>UTF-8<span style="color: #0000ff">&lt;/</span><span style="color: #800000">project.build.sourceEncoding</span><span style="color: #0000ff">&gt;</span>
  <span style="color: #0000ff">&lt;/</span><span style="color: #800000">properties</span><span style="color: #0000ff">&gt;</span>
  
  <span style="color: #0000ff">&lt;</span><span style="color: #800000">dependencies</span><span style="color: #0000ff">&gt;</span>
    <span style="color: #008000">&lt;!--</span><span style="color: #008000"> hibernate jar </span><span style="color: #008000">--&gt;</span>
    <span style="color: #0000ff">&lt;</span><span style="color: #800000">dependency</span><span style="color: #0000ff">&gt;</span>
      <span style="color: #0000ff">&lt;</span><span style="color: #800000">groupId</span><span style="color: #0000ff">&gt;</span>org.hibernate<span style="color: #0000ff">&lt;/</span><span style="color: #800000">groupId</span><span style="color: #0000ff">&gt;</span>
      <span style="color: #0000ff">&lt;</span><span style="color: #800000">artifactId</span><span style="color: #0000ff">&gt;</span>hibernate-entitymanager<span style="color: #0000ff">&lt;/</span><span style="color: #800000">artifactId</span><span style="color: #0000ff">&gt;</span>
      <span style="color: #0000ff">&lt;</span><span style="color: #800000">version</span><span style="color: #0000ff">&gt;</span>3.3.1.ga<span style="color: #0000ff">&lt;/</span><span style="color: #800000">version</span><span style="color: #0000ff">&gt;</span>
    <span style="color: #0000ff">&lt;/</span><span style="color: #800000">dependency</span><span style="color: #0000ff">&gt;</span>
    <span style="color: #008000">&lt;!--</span><span style="color: #008000"> hibernate annotation jar </span><span style="color: #008000">--&gt;</span>
    <span style="color: #0000ff">&lt;</span><span style="color: #800000">dependency</span><span style="color: #0000ff">&gt;</span>
      <span style="color: #0000ff">&lt;</span><span style="color: #800000">groupId</span><span style="color: #0000ff">&gt;</span>org.hibernate<span style="color: #0000ff">&lt;/</span><span style="color: #800000">groupId</span><span style="color: #0000ff">&gt;</span>
      <span style="color: #0000ff">&lt;</span><span style="color: #800000">artifactId</span><span style="color: #0000ff">&gt;</span>hibernate-annotations<span style="color: #0000ff">&lt;/</span><span style="color: #800000">artifactId</span><span style="color: #0000ff">&gt;</span>
      <span style="color: #0000ff">&lt;</span><span style="color: #800000">version</span><span style="color: #0000ff">&gt;</span>3.3.1.GA<span style="color: #0000ff">&lt;/</span><span style="color: #800000">version</span><span style="color: #0000ff">&gt;</span>
    <span style="color: #0000ff">&lt;/</span><span style="color: #800000">dependency</span><span style="color: #0000ff">&gt;</span>
    <span style="color: #008000">&lt;!--</span><span style="color: #008000"> mysql </span><span style="color: #008000">--&gt;</span>
    <span style="color: #0000ff">&lt;</span><span style="color: #800000">dependency</span><span style="color: #0000ff">&gt;</span>
      <span style="color: #0000ff">&lt;</span><span style="color: #800000">groupId</span><span style="color: #0000ff">&gt;</span>mysql<span style="color: #0000ff">&lt;/</span><span style="color: #800000">groupId</span><span style="color: #0000ff">&gt;</span>
      <span style="color: #0000ff">&lt;</span><span style="color: #800000">artifactId</span><span style="color: #0000ff">&gt;</span>mysql-connector-java<span style="color: #0000ff">&lt;/</span><span style="color: #800000">artifactId</span><span style="color: #0000ff">&gt;</span>
      <span style="color: #0000ff">&lt;</span><span style="color: #800000">version</span><span style="color: #0000ff">&gt;</span>5.1.17<span style="color: #0000ff">&lt;/</span><span style="color: #800000">version</span><span style="color: #0000ff">&gt;</span>
    <span style="color: #0000ff">&lt;/</span><span style="color: #800000">dependency</span><span style="color: #0000ff">&gt;</span>
    <span style="color: #0000ff">&lt;</span><span style="color: #800000">dependency</span><span style="color: #0000ff">&gt;</span>
      <span style="color: #0000ff">&lt;</span><span style="color: #800000">groupId</span><span style="color: #0000ff">&gt;</span>junit<span style="color: #0000ff">&lt;/</span><span style="color: #800000">groupId</span><span style="color: #0000ff">&gt;</span>
      <span style="color: #0000ff">&lt;</span><span style="color: #800000">artifactId</span><span style="color: #0000ff">&gt;</span>junit<span style="color: #0000ff">&lt;/</span><span style="color: #800000">artifactId</span><span style="color: #0000ff">&gt;</span>
      <span style="color: #0000ff">&lt;</span><span style="color: #800000">version</span><span style="color: #0000ff">&gt;</span>3.8.1<span style="color: #0000ff">&lt;/</span><span style="color: #800000">version</span><span style="color: #0000ff">&gt;</span>
      <span style="color: #0000ff">&lt;</span><span style="color: #800000">scope</span><span style="color: #0000ff">&gt;</span>test<span style="color: #0000ff">&lt;/</span><span style="color: #800000">scope</span><span style="color: #0000ff">&gt;</span>
    <span style="color: #0000ff">&lt;/</span><span style="color: #800000">dependency</span><span style="color: #0000ff">&gt;</span>
  <span style="color: #0000ff">&lt;/</span><span style="color: #800000">dependencies</span><span style="color: #0000ff">&gt;</span>
  
<span style="color: #0000ff">&lt;/</span><span style="color: #800000">project</span><span style="color: #0000ff">&gt;</span></pre></div>
<p>&nbsp;</p>
<p>Test.java</p>
<div class="cnblogs_code"><pre><span style="color: #0000ff">package</span><span style="color: #000000"> com.fancy.test;

</span><span style="color: #0000ff">import</span><span style="color: #000000"> org.hibernate.Session;
</span><span style="color: #0000ff">import</span><span style="color: #000000"> org.hibernate.SessionFactory;
</span><span style="color: #0000ff">import</span><span style="color: #000000"> org.hibernate.cfg.AnnotationConfiguration;
</span><span style="color: #0000ff">import</span><span style="color: #000000"> org.hibernate.cfg.Configuration;
</span><span style="color: #0000ff">import</span><span style="color: #000000"> com.fancy.po.Card;
</span><span style="color: #0000ff">import</span><span style="color: #000000"> com.fancy.po.Person;
</span><span style="color: #008000">/**</span><span style="color: #008000">
 * -----------------------------------------
 * @文件: Test.java
 * @作者: fancy
 * @邮箱: fancyzero@yeah.net
 * @时间: 2012-6-10
 * @描述: 测试类
 * -----------------------------------------
 </span><span style="color: #008000">*/</span>
<span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span><span style="color: #000000"> Test {

    </span><span style="color: #0000ff">public</span> <span style="color: #0000ff">static</span> <span style="color: #0000ff">void</span><span style="color: #000000"> main(String[] args) {
        
        </span><span style="color: #008000">//</span><span style="color: #008000">读取hibernate配置,默认读取classpath下的hibernate.cfg.xml</span>
        Configuration conf = <span style="color: #0000ff">new</span><span style="color: #000000"> AnnotationConfiguration();    
        </span><span style="color: #008000">//</span><span style="color: #008000">构建session工厂</span>
         SessionFactory sessionFactory =<span style="color: #000000"> conf.configure().buildSessionFactory();
        </span><span style="color: #008000">//</span><span style="color: #008000">打开session</span>
        Session session =<span style="color: #000000"> sessionFactory.openSession();
        </span><span style="color: #008000">//</span><span style="color: #008000">开始事务</span>
<span style="color: #000000">         session.beginTransaction();
        </span><span style="color: #008000">//</span><span style="color: #008000"> * * * * * * * * * * * * * * * * * * * * * * * * * * * *
        </span><span style="color: #008000">//</span><span style="color: #008000">test1(session);    </span><span style="color: #008000">//</span><span style="color: #008000">测试 1
        </span><span style="color: #008000">//</span><span style="color: #008000">test2(session);    </span><span style="color: #008000">//</span><span style="color: #008000">测试 2</span>
        test3(session);      <span style="color: #008000">//</span><span style="color: #008000">测试 3
        </span><span style="color: #008000">//</span><span style="color: #008000"> * * * * * * * * * * * * * * * * * * * * * * * * * * * *
        </span><span style="color: #008000">//</span><span style="color: #008000">提交事务</span>
<span style="color: #000000">         session.getTransaction().commit();
        </span><span style="color: #008000">//</span><span style="color: #008000">关闭session工厂</span>
<span style="color: #000000">         sessionFactory.close();
       </span><span style="color: #008000">//</span><span style="color: #008000">关闭session</span>
<span style="color: #000000">       session.close();
    }
    </span><span style="color: #008000">/**</span><span style="color: #008000">
     * 数据库初始值：
      * personName：fancy
     * cardNumber：440911199008011122
     </span><span style="color: #008000">*/</span>
    <span style="color: #008000">//</span><span style="color: #008000">测试方法1</span>
    <span style="color: #0000ff">public</span> <span style="color: #0000ff">static</span> <span style="color: #0000ff">void</span><span style="color: #000000"> test1(Session session){
        Person person </span>= (Person)session.get(Person.<span style="color: #0000ff">class</span>, 1); <span style="color: #008000">//</span><span style="color: #008000">发出Person和Card的select语句</span>
         Card card =<span style="color: #000000"> person.getCard();
        System.out.println(person.getPersonName());
        System.out.println(card.getCardNumber());
        person.setPersonName(</span>"fancy");            <span style="color: #008000">//</span><span style="color: #008000">与初始值一致</span>
         card.setCardNumber("440911199008011122");<span style="color: #008000">//</span><span style="color: #008000">与初始值一致</span>
         session.save(person);    <span style="color: #008000">//</span><span style="color: #008000">不发出sql语句
       </span><span style="color: #008000">//</span><span style="color: #008000">session.save(card);     </span><span style="color: #008000">//</span><span style="color: #008000">不发出sql语句</span>
<span style="color: #000000">    }
    </span><span style="color: #008000">//</span><span style="color: #008000">测试方法2</span>
    <span style="color: #0000ff">public</span> <span style="color: #0000ff">static</span> <span style="color: #0000ff">void</span><span style="color: #000000"> test2(Session session){
        Person person </span>= (Person)session.get(Person.<span style="color: #0000ff">class</span>, 1); <span style="color: #008000">//</span><span style="color: #008000">发出Person和Card的select语句</span>
         Card card =<span style="color: #000000"> person.getCard();
        System.out.println(person.getPersonName());
        System.out.println(card.getCardNumber());
        person.setPersonName(</span>"fancyzero");        <span style="color: #008000">//</span><span style="color: #008000">与初始值不一致</span>
         card.setCardNumber("440911199008011122");<span style="color: #008000">//</span><span style="color: #008000">与初始值一致</span>
         session.save(person);    <span style="color: #008000">//</span><span style="color: #008000">发出Person的update语句,数据库中personName被修改,不发出Card的update语句
       </span><span style="color: #008000">//</span><span style="color: #008000">session.save(card);     </span><span style="color: #008000">//</span><span style="color: #008000">发出Person的update语句,数据库中personName被修改,不发出Card的update语句</span>
<span style="color: #000000">    }
    </span><span style="color: #008000">//</span><span style="color: #008000">测试方法3</span>
    <span style="color: #0000ff">public</span> <span style="color: #0000ff">static</span> <span style="color: #0000ff">void</span><span style="color: #000000"> test3(Session session){
        Person person </span>= (Person)session.get(Person.<span style="color: #0000ff">class</span>, 1); <span style="color: #008000">//</span><span style="color: #008000">发出Person和Card的select语句</span>
         Card card =<span style="color: #000000"> person.getCard();
        System.out.println(person.getPersonName());
        System.out.println(card.getCardNumber());
        person.setPersonName(</span>"fancy");           <span style="color: #008000">//</span><span style="color: #008000">与初始值不一致</span>
         card.setCardNumber("440911199008080808");<span style="color: #008000">//</span><span style="color: #008000">与初始值不一致</span>
         session.save(person);    <span style="color: #008000">//</span><span style="color: #008000">同时发出Person和Card的update语句,数据库中的数据相应被修改
       </span><span style="color: #008000">//</span><span style="color: #008000">session.save(card);     </span><span style="color: #008000">//</span><span style="color: #008000">同时发出Person和Card的update语句,数据库中的数据相应被修改</span>
<span style="color: #000000">    }
}</span></pre></div>
<p>&nbsp;</p><br /><br /><span style="font-family: Georgia; font-size: 10pt"><br /><span style="font-family: Georgia; color: #008000; font-size: 10pt">&nbsp;&nbsp;&nbsp;[转载出处：<a href="http://www.blogjava.net/fancydeepin" target="_blank"><font color="#1d58d1">http://www.blogjava.net/fancydeepin</font></a>&nbsp;]</span></span> <br /><img src ="http://www.blogjava.net/wshao/aggbug/408250.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wshao/" target="_blank">午后星期午</a> 2013-12-31 13:33 <a href="http://www.blogjava.net/wshao/archive/2013/12/31/408250.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>hibernate annotation 之 注解声明</title><link>http://www.blogjava.net/wshao/archive/2013/12/31/408249.html</link><dc:creator>午后星期午</dc:creator><author>午后星期午</author><pubDate>Tue, 31 Dec 2013 05:30:00 GMT</pubDate><guid>http://www.blogjava.net/wshao/archive/2013/12/31/408249.html</guid><wfw:comment>http://www.blogjava.net/wshao/comments/408249.html</wfw:comment><comments>http://www.blogjava.net/wshao/archive/2013/12/31/408249.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wshao/comments/commentRss/408249.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wshao/services/trackbacks/408249.html</trackback:ping><description><![CDATA[<span style="font-family: Georgia; color: #008000; font-size: 10pt">@Entity<br /></span><span style="font-family: Georgia; font-size: 10pt"><br /><font size="2">&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>将一个 POJO 类注解成一个实体 bean ( 持久化 POJO 类 )<br /><br /><span style="color: #008000">@Table</span><br /><br />&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>为实体 bean 映射指定具体的表，如果该注解没有被声明，系统将使用默认值 ( 即实体 bean 不带包名的短类名 )<br /><br /><span style="color: #008000">@Id</span><br /><br />&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>将实体bean中的某个属性定义为标识符 ( identifier )<br /><br /><span style="color: #008000">@GeneratedValue</span><br /><br />&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>该注解可以定义该标识符的生成策略 ( 默认是 <span style="color: #993300">AUTO</span> 策略 ) :<br /><br />&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr><span style="color: #993300">AUTO</span> &#8212; 可以是 <span style="color: #993300"><font size="2">IDENTITY</font></span>，或 <span style="color: #993300"><font size="2">SEQUENCE</font></span> 或 <span style="color: #993300"><font size="2">TABLE</font></span> 类型，这取决于不同的底层数据库。<br /><br />&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr><span style="color: #993300">TABLE</span> &#8212; 使用表保存id值<br /><br />&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr><span style="color: #993300">IDENTITY</span> &#8212; 自然递增<br /><br />&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr><span style="color: #993300">SEQUENCE</span> &#8212; 序列<br /><br /><span style="color: #008000">@Transient</span><br /><br />&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>被注解成 @Transient 的 getter 方法或属性，将不会被持久化，hibernate 会忽略这些字段和属性。<br /><br /><span style="color: #008000">@Basic</span><br /><br />&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>所有没有定义注解的属性，等价于在其上面添加了 @Basic 注解.。通过 @Basic注解可以声明属性的获取策略 ( fetch strategy )<br /><br /><span style="color: #008000">@Temporal</span><br /><br />&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>在核心的 Java API 中并没有定义时间精度 ( temporal precision )。因此处理时间类型数据时，你还需要定义将其存储在数据库中所预期的精度。<br /><br />&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>在数据库中，表示时间类型的数据有 DATE，TIME，和 TIMESTAMP 三种精度 ( 即单纯的日期，时间，或者两者兼备 )。 可使用 @Temporal 注解来调整精度。<br /><br /><span style="color: #008000">@Column&nbsp;<wbr></span><br /><br />&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>将实体 bean 中的属性映射到表中的列。<br /><br />&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>@Column(<br /><br />&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr><span style="color: #0000ff">name</span> = "columnName";&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr><span style="color: #993300">(1)</span><br /><br />&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>boolean <span style="color: #0000ff">unique</span>() <span style="color: #ff00ff">default</span> <span style="color: #ff00ff">false</span>;&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> <span style="color: #993300">(2)</span><br /><br />&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>boolean <span style="color: #0000ff">nullable</span>() <span style="color: #ff00ff">default</span> <span style="color: #ff00ff">true</span>;&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr><span style="color: #993300">(3)</span><br /><br />&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>boolean <span style="color: #0000ff">insertable</span>() <span style="color: #ff00ff">default</span> <span style="color: #ff00ff">true</span>;&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> <span style="color: #993300">(4)</span><br /><br />&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>boolean <span style="color: #0000ff">updatable</span>() <span style="color: #ff00ff">default</span> <span style="color: #ff00ff">true</span>;&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> <span style="color: #993300">(5)</span><br /><br />&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>String <span style="color: #0000ff">columnDefinition</span>() <span style="color: #ff00ff">default</span> <span style="color: #ff00ff">""</span>;&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> <span style="color: #993300">(6)</span><br /><br />&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>String <span style="color: #0000ff">table</span>() <span style="color: #ff00ff">default ""</span>;&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> <span style="color: #993300">(7)</span><br /><br />&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>int <span style="color: #0000ff">length</span>() <span style="color: #ff00ff">default 255</span>;&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> <span style="color: #993300">(8)</span><br /><br />&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>int <span style="color: #0000ff">precision</span>() <span style="color: #ff00ff">default 0</span>;&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> &nbsp;<wbr><span style="color: #993300">(9)</span><br /><br />&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>int <span style="color: #0000ff">scale</span>() <span style="color: #ff00ff">default 0</span>;&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> &nbsp;<wbr><span style="color: #993300">&nbsp;<wbr> (10)<br /></span><br /><span style="color: #993300">(1)&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span><span style="color: #0000ff">name</span> 可选，列名(默认值是属性名)<br /><br /><span style="color: #993300">(2)&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span><span style="color: #0000ff">unique</span> 可选<font size="2">，</font>是否在该列上设置唯一约束(默认值false)<br /><br /><span style="color: #993300">(3)&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span><span style="color: #0000ff">nullable</span> 可选<font size="2">，</font>是否设置该列的值可以为空(默认值true)<br /><br /><span style="color: #993300">(4)&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span><span style="color: #0000ff">insertable</span> 可选<font size="2">，</font>该列是否作为生成的insert语句中的一个列(默认值true)<br /><br /><span style="color: #993300">(5)&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span><span style="color: #0000ff">updatable</span> 可选<font size="2">，</font>该列是否作为生成的update语句中的一个列(默认值true)<br /><br /><span style="color: #993300">(6)&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span><span style="color: #0000ff">columnDefinition</span> 可选<font size="2">，</font>为这个特定列覆盖SQL DDL片段 (这可能导致无法在不同数据库间移植)<br /><br /><span style="color: #993300">(7)&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span><span style="color: #0000ff">table</span> 可选<font size="2">，</font>定义对应的表(默认为主表)<br /><br /><span style="color: #993300">(8)&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span><span style="color: #0000ff">length</span> 可选<font size="2">，</font>列长度(默认值255)<br /><br /><span style="color: #993300">(9)&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span><span style="color: #0000ff">precision</span> 可选<font size="2">，</font>列十进制精度(decimal precision)(默认值0)<br /><br /><span style="color: #993300">(10)&nbsp;<wbr></span> <span style="color: #0000ff">scale</span> 可选<font size="2">，</font>如果列十进制数值范围(decimal scale)可用,在此设置(默认值0)<br /><br /></font></span><span style="font-family: Georgia; font-size: 10pt"><span style="font-family: Georgia; color: #008000; font-size: 10pt">&nbsp;<wbr>[ 转载出处：<a href="http://www.blogjava.net/fancydeepin" target="_blank">http://www.blogjava.net/fancydeepin</a>&nbsp;<wbr>]</span></span><br /> <img src ="http://www.blogjava.net/wshao/aggbug/408249.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wshao/" target="_blank">午后星期午</a> 2013-12-31 13:30 <a href="http://www.blogjava.net/wshao/archive/2013/12/31/408249.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>hibernate annotation 之 主键生成策略</title><link>http://www.blogjava.net/wshao/archive/2013/12/31/408248.html</link><dc:creator>午后星期午</dc:creator><author>午后星期午</author><pubDate>Tue, 31 Dec 2013 05:29:00 GMT</pubDate><guid>http://www.blogjava.net/wshao/archive/2013/12/31/408248.html</guid><wfw:comment>http://www.blogjava.net/wshao/comments/408248.html</wfw:comment><comments>http://www.blogjava.net/wshao/archive/2013/12/31/408248.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wshao/comments/commentRss/408248.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wshao/services/trackbacks/408248.html</trackback:ping><description><![CDATA[<p><span style="font-family: 微软雅黑; font-size: 10pt">Hibernate</span> <span style="font-family: 微软雅黑; font-size: 10pt">默认总共支持 13 种生成策略 :<br /><br /></span></p>
<p><span style="font-family: 微软雅黑; font-size: 10pt">1.&nbsp;<wbr>increment&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span><span style="font-family: 微软雅黑; font-size: 10pt">2. &nbsp;<wbr>identity&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span><span style="font-family: 微软雅黑; font-size: 10pt">3.&nbsp;<wbr>sequence<br /><br /></span></p>
<p><span style="font-family: 微软雅黑; font-size: 10pt">4.&nbsp;<wbr>hilo&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span> <span style="font-family: 微软雅黑; font-size: 10pt">5.&nbsp;<wbr>seqhilo&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span> <span style="font-family: 微软雅黑; font-size: 10pt">6.&nbsp;<wbr>uuid<br /><br /></span></p>
<p><span style="font-family: 微软雅黑; font-size: 10pt">7.&nbsp;<wbr>uuid.hex&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span> <span style="font-family: 微软雅黑; font-size: 10pt">8.&nbsp;<wbr>guid&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span> <span style="font-family: 微软雅黑; font-size: 10pt">9.&nbsp;<wbr>native<br /><br /></span></p>
<p><span style="font-family: 微软雅黑; font-size: 10pt">10. assigned&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span><span style="font-family: 微软雅黑; font-size: 10pt">11. select&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span> <span style="font-family: 微软雅黑; font-size: 10pt">12. foreign&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span><span style="font-family: 微软雅黑; font-size: 10pt">13. sequence-identity<br /></span></p>
<p>&nbsp;<wbr></p>
<p><span style="font-family: 微软雅黑; font-size: 10pt">下面介绍几个较为常用的策略 :<br /><br /></span></p>
<p><span style="font-family: 微软雅黑; color: green; font-size: 10pt">&#9312; identity [ 自然递增 ]<br /></span></p>
<p><span style="font-family: 微软雅黑; font-size: 7.5pt">&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span> <span style="font-family: 微软雅黑; font-size: 10pt">支持 DB2，MySQL，SQL Server，Sybase 和HypersonicSQL 数据库， 用于为 long 或 short 或 int 类型生成唯一标识。它依赖于底层不同的数据库，<br />&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> 与 Hibernate 和 程序员无关。<br /></span></p>
<p><span style="font-family: 微软雅黑; color: #993300; font-size: 10pt">注解示例 :<br /></span></p>
<p style="text-align: left; text-indent: 21pt" align="left"><span style="font-family: 'Courier new'; color: #646464; font-size: 10pt">@Id<br /></span></p>
<p style="text-align: left; text-indent: 21pt" align="left"><span style="font-family: 'Courier new'; color: #646464; font-size: 10pt">@GenericGenerator</span><span style="font-family: 'Courier new'; color: black; font-size: 10pt">(name =</span> <span style="font-family: 'Courier new'; color: #2a00ff; font-size: 10pt">"idGenerator"</span><span style="font-family: 'Courier new'; color: black; font-size: 10pt">, strategy =</span> <span style="font-family: 'Courier new'; color: #2a00ff; font-size: 10pt">"identity"</span><span style="font-family: 'Courier new'; color: black; font-size: 10pt">)<br /></span></p>
<p style="text-indent: 21pt"><span style="font-family: 'Courier new'; color: #646464; font-size: 10pt">@GeneratedValue</span><span style="font-family: 'Courier new'; color: black; font-size: 10pt">(generator =</span> <span style="font-family: 'Courier new'; color: #2a00ff; font-size: 10pt">"idGenerator"</span><span style="font-family: 'Courier new'; color: black; font-size: 10pt">)<br /></span></p>
<p style="text-indent: 21pt">&nbsp;<wbr></p>
<p><span style="font-family: 微软雅黑; color: green; font-size: 10pt">&#9313; sequence [ 序列 ]<br /></span></p>
<p style="text-indent: 21pt"><span style="font-family: 微软雅黑; font-size: 10pt">支持</span> <span style="font-family: 微软雅黑; font-size: 10pt">Oracle</span><span style="font-family: 微软雅黑; font-size: 10pt">，DB2，PostgreSql，SAPDb 等数据库，用于为 long 或 short 或 int 类型生成唯一标识。它需要底层数据库的支持，<br />&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>并由数据库来维护这个 sequence 序列。</span></p>
<p><span style="font-family: 微软雅黑; color: #993300; font-size: 10pt">注解示例 :<br /></span></p>
<p style="text-align: left; text-indent: 21pt" align="left"><span style="font-family: 'Courier new'; color: #646464; font-size: 10pt">@Id</span></p>
<p align="left"><span style="font-family: 'Courier new'; color: black; font-size: 11pt">&nbsp;<wbr>&nbsp;<wbr></span> <span style="font-family: 'Courier new'; color: #646464; font-size: 10pt">@GenericGenerator</span><span style="font-family: 'Courier new'; color: black; font-size: 10pt">(name =</span> <span style="font-family: 'Courier new'; color: #2a00ff; font-size: 10pt">"idGenerator"</span><span style="font-family: 'Courier new'; color: black; font-size: 10pt">, strategy =</span> <span style="font-family: 'Courier new'; color: #2a00ff; font-size: 10pt">"sequence"</span><span style="font-family: 'Courier new'; color: black; font-size: 10pt">,</span></p>
<p style="text-align: left; text-indent: 22pt" align="left"><span style="font-family: 'Courier new'; color: black; font-size: 10pt">parameters = {</span><span style="font-family: 'Courier new'; color: #646464; font-size: 10pt">@Parameter</span><span style="font-family: 'Courier new'; color: black; font-size: 10pt">(name =</span> <span style="font-family: 'Courier new'; color: #2a00ff; font-size: 10pt">"sequence"</span><span style="font-family: 'Courier new'; color: black; font-size: 10pt">,value=</span><span style="font-family: 'Courier new'; color: #2a00ff; font-size: 10pt">"seq_name"</span><span style="font-family: 'Courier new'; color: black; font-size: 10pt">)})</span></p>
<p><span style="font-family: 'Courier new'; color: black; font-size: 11pt">&nbsp;<wbr>&nbsp;<wbr></span> <span style="font-family: 'Courier new'; color: #646464; font-size: 10pt">@GeneratedValue</span><span style="font-family: 'Courier new'; color: black; font-size: 10pt">(generator =</span> <span style="font-family: 'Courier new'; color: #2a00ff; font-size: 10pt">"idGenerator"</span><span style="font-family: 'Courier new'; color: black; font-size: 10pt">)</span></p>
<p><span style="font-family: 微软雅黑; color: fuchsia; font-size: 10pt">注意 :</span> <span style="font-family: 微软雅黑; font-size: 10pt">该策略要求设定序列名，否则 hibernate 将无法找到，这将引致抛出异常 :</span></p>
<p style="text-indent: 26.4pt"><u><span style="font-family: 'Courier new'; color: navy; font-size: 10pt">org.hibernate.exception.SQLGrammarException</span></u><span style="font-family: 'Courier new'; color: red; font-size: 10pt">: could not get next sequence value</span></p>
<p style="text-indent: 26.4pt">&nbsp;<wbr></p>
<p><span style="font-family: 微软雅黑; color: green; font-size: 10pt">&#9314; native</span></p>
<p><span style="font-family: 微软雅黑; font-size: 7.5pt">&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span> <span style="font-family: 微软雅黑; font-size: 10pt">需底层数据库的支持，对于 MySQL，SQL Server 采用 identity 的生成策略，对于 Oracle，则采用 sequence 策略。</span></p>
<p><span style="font-family: 微软雅黑; color: #993300; font-size: 10pt">注解示例 :</span></p>
<p style="text-align: left; text-indent: 21pt" align="left"><span style="font-family: 'Courier new'; color: #646464; font-size: 10pt">@Id</span></p>
<p align="left"><span style="font-family: 'Courier new'; color: black; font-size: 11pt">&nbsp;<wbr>&nbsp;<wbr></span> <span style="font-family: 'Courier new'; color: #646464; font-size: 10pt">@GenericGenerator</span><span style="font-family: 'Courier new'; color: black; font-size: 10pt">(name =</span> <span style="font-family: 'Courier new'; color: #2a00ff; font-size: 10pt">"idGenerator"</span><span style="font-family: 'Courier new'; color: black; font-size: 10pt">, strategy =</span> <span style="font-family: 'Courier new'; color: #2a00ff; font-size: 10pt">"native"</span><span style="font-family: 'Courier new'; color: black; font-size: 10pt">)</span></p>
<p><span style="font-family: 'Courier new'; color: black; font-size: 11pt">&nbsp;<wbr>&nbsp;<wbr></span> <span style="font-family: 'Courier new'; color: #646464; font-size: 10pt">@GeneratedValue</span><span style="font-family: 'Courier new'; color: black; font-size: 10pt">(generator =</span> <span style="font-family: 'Courier new'; color: #2a00ff; font-size: 10pt">"idGenerator"</span><span style="font-family: 'Courier new'; color: black; font-size: 10pt">)</span></p>
<p>&nbsp;<wbr></p>
<p><span style="font-family: 微软雅黑; color: green; font-size: 10pt">&#9315; increment [ 自然递增 ]</span></p>
<p><span style="font-family: 微软雅黑; color: green; font-size: 9pt">&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span> <span style="font-family: 微软雅黑; font-size: 10pt">与 identity 策略不同的是</span><span style="font-family: 微软雅黑; font-size: 10pt">，该策略不依赖于底层数据库，而依赖于 hibernate 本身，用于为 long 或 short 或 int 类型生成唯一标识。<br />&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>主键计数器是由 hibernate 的一个实例来维护，每次自增量为 1，但在集群下不能使用该策略，<br />&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>否则将引起主键冲突的情况，该策略适用于所有关系型数据库使用。</span></p>
<p><span style="font-family: 微软雅黑; color: #993300; font-size: 10pt">注解示例 :</span></p>
<p align="left"><span style="font-family: 微软雅黑; color: #993300; font-size: 9pt">&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span> <span style="font-family: 'Courier new'; color: #646464; font-size: 10pt">@Id</span></p>
<p align="left"><span style="font-family: 'Courier new'; color: black; font-size: 11pt">&nbsp;<wbr>&nbsp;<wbr></span> <span style="font-family: 'Courier new'; color: #646464; font-size: 10pt">@GenericGenerator</span><span style="font-family: 'Courier new'; color: black; font-size: 10pt">(name =</span> <span style="font-family: 'Courier new'; color: #2a00ff; font-size: 10pt">"idGenerator"</span><span style="font-family: 'Courier new'; color: black; font-size: 10pt">, strategy =</span> <span style="font-family: 'Courier new'; color: #2a00ff; font-size: 10pt">"increment"</span><span style="font-family: 'Courier new'; color: black; font-size: 10pt">)</span></p>
<p><span style="font-family: 'Courier new'; color: black; font-size: 11pt">&nbsp;<wbr>&nbsp;<wbr></span> <span style="font-family: 'Courier new'; color: #646464; font-size: 10pt">@GeneratedValue</span><span style="font-family: 'Courier new'; color: black; font-size: 10pt">(generator =</span> <span style="font-family: 'Courier new'; color: #2a00ff; font-size: 10pt">"idGenerator"</span><span style="font-family: 'Courier new'; color: black; font-size: 10pt">)</span></p>
<p>&nbsp;<wbr></p>
<p><span style="font-family: 微软雅黑; color: green; font-size: 10pt">&#9316; uuid [ 32位16进制数的字符串 ]</span></p>
<p><span style="font-family: 微软雅黑; font-size: 7.5pt">&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span> <span style="font-family: 微软雅黑; font-size: 10pt">采用128位UUID算法生成主键，能够保证网络环境下的主键唯一性，也就能够保证在不同数据库及不同服务器下主键的唯一性。<br />&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>uuid 最终被编码成一个32位16进制数的字符串，<br />&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> 占用的存储空间较大。用于为 String 类型生成唯一标识，适用于所有关系型数据库。</span></p>
<p><span style="font-family: 微软雅黑; color: #993300; font-size: 10pt">注解示例 :</span></p>
<p align="left"><span style="font-family: 微软雅黑; color: #993300; font-size: 9pt"><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span></span> <span style="font-family: 'Courier new'; color: #646464; font-size: 10pt">@Id</span></p>
<p align="left"><span style="font-family: 'Courier new'; color: black; font-size: 11pt"><span>&nbsp;<wbr>&nbsp;<wbr></span></span> <span style="font-family: 'Courier new'; color: #646464; font-size: 10pt">@GenericGenerator</span><span style="font-family: 'Courier new'; color: black; font-size: 10pt">(name =</span> <span style="font-family: 'Courier new'; color: #2a00ff; font-size: 10pt">"idGenerator"</span><span style="font-family: 'Courier new'; color: black; font-size: 10pt">, strategy =</span> <span style="font-family: 'Courier new'; color: #2a00ff; font-size: 10pt">"uuid"</span><span style="font-family: 'Courier new'; color: black; font-size: 10pt">)</span></p>
<p><span style="font-family: 'Courier new'; color: black; font-size: 11pt"><span>&nbsp;<wbr>&nbsp;<wbr></span></span> <span style="font-family: 'Courier new'; color: #646464; font-size: 10pt">@GeneratedValue</span><span style="font-family: 'Courier new'; color: black; font-size: 10pt">(generator =</span> <span style="font-family: 'Courier new'; color: #2a00ff; font-size: 10pt">"idGenerator"</span><span style="font-family: 'Courier new'; color: black; font-size: 10pt">)</span></p>
<p>&nbsp;<wbr></p>
<p><span style="font-family: 微软雅黑; color: green; font-size: 10pt">&#9316; assigned [ 手工分配主键ID值 ]</span></p>
<p><span style="font-family: 微软雅黑; color: #993300; font-size: 9pt">&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span> <span style="font-family: 微软雅黑; font-size: 10pt">该策略要求程序员必须自己维护和管理主键，当有数据需要存储时，程序员必须自己为该数据分配指定一个主键ID值，<br />&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>如果该数据没有被分配主键ID值或分配的值存在重复，则该数据都将无法被持久化且会引起异常的抛出。</span></p>
<p><span style="font-family: 微软雅黑; color: #993300; font-size: 10pt">注解示例 :</span></p>
<p align="left"><span style="font-family: 微软雅黑; color: #993300; font-size: 9pt">&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span> <span style="font-family: 'Courier new'; color: #646464; font-size: 10pt">@Id</span></p>
<p align="left"><span style="font-family: 'Courier new'; color: black; font-size: 11pt">&nbsp;<wbr>&nbsp;<wbr></span> <span style="font-family: 'Courier new'; color: #646464; font-size: 10pt">@GenericGenerator</span><span style="font-family: 'Courier new'; color: black; font-size: 10pt">(name =</span> <span style="font-family: 'Courier new'; color: #2a00ff; font-size: 10pt">"idGenerator"</span><span style="font-family: 'Courier new'; color: black; font-size: 10pt">, strategy =</span> <span style="font-family: 'Courier new'; color: #2a00ff; font-size: 10pt">"assigned"</span><span style="font-family: 'Courier new'; color: black; font-size: 10pt">)</span></p>
<p><span style="font-family: 'Courier new'; color: black; font-size: 11pt">&nbsp;<wbr>&nbsp;<wbr></span> <span style="font-family: 'Courier new'; color: #646464; font-size: 10pt">@GeneratedValue</span><span style="font-family: 'Courier new'; color: black; font-size: 10pt">(generator =</span> <span style="font-family: 'Courier new'; color: #2a00ff; font-size: 10pt">"idGenerator"</span><span style="font-family: 'Courier new'; color: black; font-size: 10pt">)</span></p>
<p><br /><span style="font-family: Georgia; font-size: 10pt"><span style="font-family: Georgia; color: #008000; font-size: 10pt">&nbsp;<wbr>[转载出处：<a href="http://www.blogjava.net/fancydeepin" target="_blank">http://www.blogjava.net/fancydeepin</a>&nbsp;<wbr>]</span></span></p> <img src ="http://www.blogjava.net/wshao/aggbug/408248.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wshao/" target="_blank">午后星期午</a> 2013-12-31 13:29 <a href="http://www.blogjava.net/wshao/archive/2013/12/31/408248.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>