<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>权记 &#187; JPA</title>
	<atom:link href="http://www.quanlei.com/tag/jpa/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.quanlei.com</link>
	<description>一个关于我们生活点滴的网站，一个记录我们酸甜苦辣的日志。</description>
	<lastBuildDate>Sun, 06 Jun 2010 01:10:16 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>[10/01周主题] – Web 项目开发中的常见问题</title>
		<link>http://www.quanlei.com/2010/01/1001-week-subject-web-project-problems/</link>
		<comments>http://www.quanlei.com/2010/01/1001-week-subject-web-project-problems/#comments</comments>
		<pubDate>Sun, 10 Jan 2010 08:32:40 +0000</pubDate>
		<dc:creator>小权</dc:creator>
				<category><![CDATA[周主题]]></category>
		<category><![CDATA[编程相关]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[JDBC]]></category>
		<category><![CDATA[JPA]]></category>
		<category><![CDATA[UI]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[乱码]]></category>
		<category><![CDATA[测试]]></category>
		<category><![CDATA[浏览器]]></category>
		<category><![CDATA[表单]]></category>
		<category><![CDATA[项目]]></category>

		<guid isPermaLink="false">http://www.quanlei.com/?p=1149</guid>
		<description><![CDATA[这周来一直在赶一个Web项目，没多少时间focus到其他上面，于是这周的主题就干脆做个整理，整理下web项目开发时遇到的一些问题和解决办法。 本周主题：Web 项目开发中的常见问题 一、中文乱码 建议统一使用UTF8，或者全局做个filter处理。 二、表单校验 使用第三方校验框架， 而非自己去写，可以减少很多工作量。 三、Ajax的使用 首页尽量少用ajax，页面初次加载时常会加载不上来，尤其多个Ajax实例同时运行。 四、UI 规范 UI最好是出Demo，跟客户确认，定终稿，然后开发按最终效果图实现页面最好，否则没有页面或者效果图，即使有统一的规范，还是会浪费很多时间去调UI问题。 五、浏览器的兼容问题 虽然IE6基本上淘汰了，可老机器上使用IE6的还是不少的，Css 在处理兼容问题时，建议分开处理，在页面进行浏览器version判断，读取不同的css，这样管理和调整起来都方便。 六、比较完整的测试数据 页面框架搭完了，看着效果不错，可是填完数据后会发现和想象的不太一样。 七、用JPA Or JDBC 与数据库交互 JPA与JDBC相比之下，使用JPA大大减少了编程人员的工作量，因此还是偏向使用JPA，特殊环境下再选择JDBC]]></description>
			<content:encoded><![CDATA[<p>这周来一直在赶一个Web项目，没多少时间focus到其他上面，于是这周的主题就干脆做个整理，整理下web项目开发时遇到的一些问题和解决办法。</p>
<h1>本周主题：Web 项目开发中的常见问题</h1>
<h3>一、中文乱码</h3>
<blockquote><p>建议统一使用UTF8，或者全局做个filter处理。</p></blockquote>
<h3>二、表单校验</h3>
<blockquote><p>使用第三方校验框架， 而非自己去写，可以减少很多工作量。</p></blockquote>
<h3>三、Ajax的使用</h3>
<blockquote><p>首页尽量少用ajax，页面初次加载时常会加载不上来，尤其多个Ajax实例同时运行。</p></blockquote>
<h3>四、UI 规范</h3>
<blockquote><p>UI最好是出Demo，跟客户确认，定终稿，然后开发按最终效果图实现页面最好，否则没有页面或者效果图，即使有统一的规范，还是会浪费很多时间去调UI问题。</p></blockquote>
<h3>五、浏览器的兼容问题</h3>
<blockquote><p>虽然IE6基本上淘汰了，可老机器上使用IE6的还是不少的，Css 在处理兼容问题时，建议分开处理，在页面进行浏览器version判断，读取不同的css，这样管理和调整起来都方便。</p></blockquote>
<h3>六、比较完整的测试数据</h3>
<blockquote><p>页面框架搭完了，看着效果不错，可是填完数据后会发现和想象的不太一样。</p></blockquote>
<h3>七、用JPA Or JDBC 与数据库交互</h3>
<blockquote><p>JPA与JDBC相比之下，使用JPA大大减少了编程人员的工作量，因此还是偏向使用JPA，特殊环境下再选择JDBC</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.quanlei.com/2010/01/1001-week-subject-web-project-problems/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[09/48周主题] &#8211; JPA</title>
		<link>http://www.quanlei.com/2009/11/0948-week-subject-jpa/</link>
		<comments>http://www.quanlei.com/2009/11/0948-week-subject-jpa/#comments</comments>
		<pubDate>Tue, 24 Nov 2009 12:35:22 +0000</pubDate>
		<dc:creator>小权</dc:creator>
				<category><![CDATA[周主题]]></category>
		<category><![CDATA[编程相关]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[JPA]]></category>
		<category><![CDATA[对象]]></category>
		<category><![CDATA[总结]]></category>

		<guid isPermaLink="false">http://www.quanlei.com/?p=879</guid>
		<description><![CDATA[这是本博客开始周主题的第一个主题，周主题计划按自然周为标记，记录一年内每周的关注主题，这样至少可以提醒自己哪个周的没有写了。 本期主题：JPA 对于JPA不熟悉的朋友可以先看看这里：百度百科之JPA 里面介绍了JPA的起源，优势，厂商等。 本文是由网上其他网友的经验和自己的经验总结而成，个人能力有限，不免有错误之处，如有误导之地恳请指正。欢迎大家提出宝贵意见，以便完善。 一、JPA中必须知道的4个状态 1. 新建态(New)：新创建的实例对象，没有持久化主键。 简单讲就是你刚new出来的对象，谁也管不着的。 2. 受控态(Managed)：在持久化上下文中受管理的对象； 先理解两个概念持久化主键和持久化上下文：持久化上下文是由与该上下文相关联的 EntityManager 实例管理的一组实体实例，关键词是EntityManager， 新创建的实体尚未被托管于持久化上下文中，EntityManager无法对它进行管理。EntityManager对持久化上下文中的实体进行管理，必然通过主键去查找实体对象，这个主键就是持久化主键。 3. 游离态(Detached)：游离于持久化上下文之外的实例对象； 4. 删除态(Removed)：被删除的实例对象。 这些状态通过调用EntityManager的接口方法进行相互迁移 二、EntityManager 的常用API void persist(Object entity) 通过persist()方法，新建状态将转换为受控状态。这意谓着当persist ()方法所在的事务提交时，实体的数据将保存到数据库中。 如果实体已经被持久化，那么再调用persist()操作，会抛出异常 Duplicate entry。 如果对一个已经删除的实体调用persist()操作，删除态的实体又转变为受控态，实体的数据将保存到数据库中。 如果persist的是一个游离实体（即上下文中没有它），而上下文中又没有它的受管版本，数据库却有这个实体，那么会抛出异常 Duplicate entry； 如果persist的是一个游离实体（即上下文中没有它），而上下文中却有它的受管版本，数据库中也有了这个实体，那么EntityManager在persist它的时候就会抛出异常：javax.persistence.EntityExistsException 在一个实体上调用persist()操作，将广播到和实体关联的其他实体上，执行相应的级联持久化操作； void remove(Object entity) 通过remove()方法删除一个受控的实体; 如果实体声明为级联删除(cascade=REMOVE 或者cascade=ALL )，被关联的实体也会被删除; 在一个新建状态的实体上调用remove()操作，将被忽略; 如果在游离实体上调用remove()操作，将抛出 IllegalArgumentException，相关的事务将回滚; 如果在已经删除的实体上执行remove()操作，也会被忽略 T merge(T entity) 将一个游离态的实体持久化到数据库中，并转换为受控态的实体； Merge一个游离版本，同时上下文中却有它的受管版本，那么返回的是受管版本，数据库中的数据更新 Query createQuery(String qlString) [...]]]></description>
			<content:encoded><![CDATA[<p><span style="color: #800000;"><span style="font-size: xx-large;">这</span></span>是本博客开始周主题的第一个主题，周主题计划按自然周为标记，记录一年内每周的关注主题，这样至少可以提醒自己哪个周的没有写了。</p>
<h2>本期主题：JPA</h2>
<blockquote><p>对于JPA不熟悉的朋友可以先看看这里：<a href="http://baike.baidu.com/view/1036852.htm?fr=ala0" target="_blank">百度百科之JPA</a> 里面介绍了JPA的起源，优势，厂商等。</p></blockquote>
<p><strong>本文是由网上其他网友的经验和自己的经验总结而成，个人能力有限，不免有错误之处，如有误导之地恳请指正。欢迎大家提出宝贵意见，以便完善。</strong><br />
<img class="aligncenter size-full wp-image-892" title="context" src="http://www.quanlei.com/wp-content/uploads/2009/11/context.jpg" alt="context" width="257" height="256" /></p>
<h3>一、JPA中必须知道的4个状态</h3>
<blockquote>
<h4>1. 新建态(New)：新创建的实例对象，没有持久化主键。</h4>
<blockquote><p>简单讲就是你刚new出来的对象，谁也管不着的。</p></blockquote>
<h4>2. 受控态(Managed)：在持久化上下文中受管理的对象；</h4>
<blockquote><p>先理解两个概念<strong>持久化主键</strong>和<strong>持久化上下文</strong>：持久化上下文是由与该上下文相关联的 EntityManager 实例管理的一组实体实例，关键词是EntityManager， 新创建的实体尚未被托管于持久化上下文中，EntityManager无法对它进行管理。EntityManager对持久化上下文中的实体进行管理，必然通过主键去查找实体对象，这个主键就是持久化主键。</p></blockquote>
<h4>3. 游离态(Detached)：游离于持久化上下文之外的实例对象；</h4>
<h4>4. 删除态(Removed)：被删除的实例对象。</h4>
</blockquote>
<p>这些状态通过调用EntityManager的接口方法进行相互迁移</p>
<h3>二、EntityManager 的常用API</h3>
<blockquote>
<h4>void persist(Object entity)</h4>
<blockquote>
<ul>
<li>通过persist()方法，新建状态将转换为受控状态。这意谓着当persist ()方法所在的事务提交时，实体的数据将保存到数据库中。</li>
<li>如果实体已经被持久化，那么再调用persist()操作，会抛出异常 Duplicate entry。</li>
<li>如果对一个已经删除的实体调用persist()操作，删除态的实体又转变为受控态，实体的数据将保存到数据库中。</li>
<li>如果persist的是一个游离实体（即上下文中没有它），而上下文中又没有它的受管版本，数据库却有这个实体，那么会抛出异常 Duplicate entry；</li>
<li>如果persist的是一个游离实体（即上下文中没有它），而上下文中却有它的受管版本，数据库中也有了这个实体，那么EntityManager在persist它的时候就会抛出异常：javax.persistence.EntityExistsException</li>
<li>在一个实体上调用persist()操作，将广播到和实体关联的其他实体上，执行相应的级联持久化操作；</li>
</ul>
</blockquote>
<h4>void remove(Object entity)</h4>
<blockquote>
<ul>
<li>通过remove()方法删除一个受控的实体;</li>
<li>如果实体声明为级联删除(cascade=REMOVE 或者cascade=ALL )，被关联的实体也会被删除;</li>
<li>在一个新建状态的实体上调用remove()操作，将被忽略;</li>
<li>如果在游离实体上调用remove()操作，将抛出 IllegalArgumentException，相关的事务将回滚;</li>
<li>如果在已经删除的实体上执行remove()操作，也会被忽略</li>
</ul>
</blockquote>
<h4>T merge(T entity)</h4>
<blockquote>
<ul>
<li>将一个游离态的实体持久化到数据库中，并转换为受控态的实体；</li>
<li>Merge一个游离版本，同时上下文中却有它的受管版本，那么返回的是受管版本，数据库中的数据更新</li>
</ul>
</blockquote>
<h4>Query createQuery(String qlString)</h4>
<blockquote>
<ul>
<li>根据JPA的查询语句创建一个查询对象Query</li>
</ul>
</blockquote>
<h4>T find(Class entityClass, Object primaryKey)</h4>
<blockquote>
<ul>
<li>以主键查询实体对象，entityClass是实体的类，primaryKey是主键值</li>
</ul>
</blockquote>
</blockquote>
<h3>三、使用时应注意的一些情况</h3>
<blockquote><p>1. EntityManager对象的事务管理方式有两种，分别为JTA和RESOURCE_LOCAL，即Java Transaction API方法和本地的事务管理。JPA中的事务类型通过persistence.xml文件中的“transaction-type”元素配置。JTA事务只能运行在J2EE的环境中，即EJB容器中和Web容器中；而在J2SE环境中只能使用RESOURCE_LOCAL管理事务。</p>
<p>2. 注意OneToMany,ManyToOne,ManyToMany三种关系时的参数配置.</p>
<p>3. Merge也有Persist的功能，数据库中有就merge，没有添加。</p>
<p>4. 注意Transaction的使用，不要一个方法中有几个Transaction。</p>
<p>5. 正确使用Eager和Lazy能显著提交效率。</p>
<p>6. 使用persist，只需注意操作的对象要么是new，要么是受管的，否则肯定出问题。</p>
<p>7. 使用merge，基本上无论如何都不会抛异常，但后续的操作必须针对该方法返回的新受管对象进行操作，否则肯定出问题。</p>
</blockquote>
<h3>四、参考资料</h3>
<blockquote><p>1. http://www.oracle.com/technology/products/ias/toplink/jpa/index.html</p>
<p>2. http://baike.baidu.com/view/1036852.htm?fr=ala0</p>
<p>3. http://java.sun.com/javaee/technologies/persistence.jsp</p>
<p>4. http://pz0513.blog.51cto.com/443986/113098</p></blockquote>
<p><span style="color: #800000;">==本文谢绝转载，谢谢==</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.quanlei.com/2009/11/0948-week-subject-jpa/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>周主题</title>
		<link>http://www.quanlei.com/2009/11/week-subject/</link>
		<comments>http://www.quanlei.com/2009/11/week-subject/#comments</comments>
		<pubDate>Mon, 23 Nov 2009 01:46:17 +0000</pubDate>
		<dc:creator>小权</dc:creator>
				<category><![CDATA[周主题]]></category>
		<category><![CDATA[JPA]]></category>
		<category><![CDATA[懒惰]]></category>
		<category><![CDATA[计划]]></category>

		<guid isPermaLink="false">http://www.quanlei.com/?p=862</guid>
		<description><![CDATA[本周开始实施“周主题”计划，就是每周都有一个关注的主题内容，了解，掌握，到熟知，可以是各方面的内容， 自己感兴趣的，好玩的等，不过应该会以技术应用居多，毕竟目前还属于技术型，有些内容一周不行可以两周， 甚至三周&#8230;。 推出此计划的目的是自己太懒惰了，习惯性的东西太多，长期计划执行没有持久性，这才决定推出短期的以周为 单位的任务计划，以鞭策自己，你需要快点涉猎各方面的东西，而且是持久的。 预告下本周的主题：JPA， 主要结合项目中的使用，比较系统的了解JPA的应用情况。]]></description>
			<content:encoded><![CDATA[<p><span style="color: #333333;"><span style="color: #800000;"><span style="font-size: xx-large;">本</span></span>周开始实施“周主题”计划，就是每周都有一个关注的主题内容，了解，掌握，到熟知，可以是各方面的内容，</span></p>
<p><span style="color: #333333;">自己感兴趣的，好玩的等，不过应该会以技术应用居多，毕竟目前还属于技术型，有些内容一周不行可以两周，</span></p>
<p><span style="color: #333333;">甚至三周&#8230;。</span></p>
<p><span style="color: #333333;">推出此计划的目的是自己太懒惰了，习惯性的东西太多，长期计划执行没有持久性，这才决定推出短期的以周为</span></p>
<p><span style="color: #333333;">单位的</span><span style="color: #333333;">任务</span><span style="color: #333333;">计划，以鞭策自己，你需要快点涉猎各方面的东西，而且是持久的。</span></p>
<p><span style="color: #333333;">预告下本周的主题：JPA， 主要结合项目中的使用，比较系统的了解JPA的应用情况。</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.quanlei.com/2009/11/week-subject/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
