<p class="MsoNormal" id="ext-gen1793" style="margin: 0cm 0cm 0pt; text-indent: 27pt;"><span style="font-size: small;"><span style="font-family: helvetica;"><span id="ext-gen1801">近年来</span><span lang="EN-US">ORM(Object-Relational Mapping;</span><span id="ext-gen1763">对象关系映射,即实体对象和数据库表的映射</span><span lang="EN-US">)</span><span id="ext-gen1773">技术市场人声音鼎沸,异常热闹,</span> <span id="ext-gen1854" lang="EN-US">Sun</span><span id="ext-gen1855">在充分吸收现有的优秀</span><span lang="EN-US">ORM</span><span id="ext-gen1767">框架设计思想的基础上,制定了新的</span><span lang="EN-US">JPA(Java Persistence API)</span><span id="ext-gen1795">规范。</span></span></span></p>
<p class="MsoNormal" id="ext-gen1809" style="margin: 0cm 0cm 0pt; text-indent: 27pt;"><span style="font-size: small;"><span style="font-family: helvetica;"><span id="ext-gen1781">那么什么是</span><span lang="EN-US">JPA</span><span id="ext-gen1811">呢?</span><span lang="EN-US">JPA</span><span id="ext-gen1798">是通过</span><span lang="EN-US">JDK5.0</span><span id="ext-gen1796">注解或</span><span lang="EN-US">XML</span><span id="ext-gen1772">描述对象</span><span lang="EN-US">-</span><span id="ext-gen1804">关系表的映射关系,并将运行期实体对象持久化到数据库中去。</span></span></span></p>
<p class="MsoNormal" id="ext-gen1762" style="margin: 0cm 0cm 0pt; text-indent: 27pt;"><span style="font-size: small;"><span style="font-family: helvetica;"><span id="ext-gen1807">这里我们要先谈一下什么叫实体</span><span lang="EN-US">(Entity),</span><span id="ext-gen1761">按照</span><span lang="EN-US">JPA</span><span id="ext-gen1771">规范,具有</span><span lang="EN-US">ORM</span><span id="ext-gen1776">元数据的领域对象就叫做实体。它应具备一下条件:</span></span></span></p>
<p class="MsoNormal" id="ext-gen1770" style="margin: 0cm 0cm 0pt; text-indent: 27pt;"><span style="font-size: small;"><span style="font-family: helvetica;"><span lang="EN-US">1</span><span id="ext-gen1818">.必须使用</span><span lang="EN-US">javax.persistence.Entity</span><span id="ext-gen1816">注解或</span><span lang="EN-US">XML</span><span id="ext-gen1820">映射文件中有对应的</span><span lang="EN-US"><entity></span><span id="ext-gen1822">元素;</span></span></span></p>
<p class="MsoNormal" id="ext-gen1815" style="margin: 0cm 0cm 0pt; text-indent: 27pt;"><span style="font-size: small;"><span style="font-family: helvetica;"><span lang="EN-US">2</span><span id="ext-gen1814">.必须具有一个不带参数的构造函数,类不能声明为</span><span lang="EN-US">final,</span><span id="ext-gen1812">方法和需要持久化的属性也不能声明为</span><span lang="EN-US">final;</span></span></span></p>
<p class="MsoNormal" id="ext-gen1778" style="margin: 0cm 0cm 0pt; text-indent: 27pt;"><span style="font-size: small;"><span style="font-family: helvetica;"><span lang="EN-US">3</span><span id="ext-gen1780">.如果游离态的实体对象需要以值的方式进行传递(如通过</span><span lang="EN-US">Session bean</span><span id="ext-gen1826">的远程业务接口传递),则必须实现</span><span lang="EN-US">Serializable</span><span id="ext-gen1829">接口;</span></span></span></p>
<p class="MsoNormal" id="ext-gen1775" style="margin: 0cm 0cm 0pt; text-indent: 27pt;"><span style="font-size: small;"><span style="font-family: helvetica;"><span lang="EN-US">4</span><span id="ext-gen1760">.需要持久化的属性,起访问修饰符不能是</span><span lang="EN-US">public</span><span id="ext-gen1827">,它必须通过实体类方法进行访问。</span></span></span></p>
<p class="MsoNormal" id="ext-gen1757" style="margin: 0cm 0cm 0pt; text-indent: 27pt;"><span lang="EN-US"><span style="font-size: small;"><span style="font-family: helvetica;"> </span></span></span></p>
<p id="ext-gen1758"><span style="font-size: small;"><span style="font-family: helvetica;"><span id="ext-gen1831" style="font-size: 10.5pt;">下面我们来尝试对一个域对象进行</span><span id="ext-gen1830" lang="EN-US" style="font-size: 10.5pt;">JPA</span><span id="ext-gen1759" style="font-size: 10.5pt;">注解,使其成为一个实体类:</span></span></span></p>
<p> </p>
<p> </p>
<p><span style="font-size: small;"><span style="font-size: 10.5pt; font-family: 宋体;"><textarea class="java" name="code">@Entity(name=”T_TEST”)public class Test implements Serializable{ @Id @GeneratedValue(strategy=GenerationType.TABLE) @Column(name=” id”) private int testId; @Column(name=”uname”,length=100) private String uname; @Column(name=”password”) private String password; @Column(name=”time”) @Temporal(TemporalType.Date) private Date loginTime; 省略get/setter方法}</textarea> </span></span></p>
<p> </p>
<p><span style="font-size: small;"> </span></p>
<p><span style="font-size: 10.5pt; font-family: 宋体;"> </span></p>
<p class="MsoNormal" id="ext-gen1863" style="margin: 0cm 0cm 0pt; text-indent: 27pt;"><span style="font-family: 宋体;"><span style="font-size: small;">下面对以上代码中所涉及的</span></span><span lang="EN-US"><span style="font-size: sma |
|