📄 index.html
字号:
public void setName(String name) { this.name = name; } public char getSex() { return sex; } public void setSex(char sex) { this.sex = sex; } public float getWeight() { return weight; } public void setWeight(float weight) { this.weight = weight; }}</pre><p> Hibernate对属性使用的类型不加限制。所有的Java JDK类型和原始类型(比如<tt class="literal">String</tt>,<tt class="literal">char</tt>和<tt class="literal">float</tt>)都可以被映射,也包括Java 集合框架(Java collections framework)中的类。你可以把它们映射成为值,值集合,或者与其他实体相关联。<tt class="literal">id</tt>是一个特殊的属性,代表了这个类的数据库标识符(主键),它对于类似于<tt class="literal">Cat</tt>这样的实体是必需的。 </p><p> 持久化类不需要实现什么特别的接口,也不需要从一个特别的持久化根类继承下来。Hibernate也不需要使用任何编译期处理,比如字节码增强操作,它独立的使用Java反射机制和运行时类增强(通过CGLIB)。所以,在Hibernate中,POJO的类不需要任何前提条件,我们就可以把它映射成为数据库表。 </p></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e272"></a>1.3. 映射cat</h2></div></div><div></div></div><p> <tt class="literal">Cat.hbm.xml</tt>映射文件包含了对象/关系映射所需的元数据。 </p><p> 元数据包含了持久化类的声明和把它与其属性映射到数据库表的信息(属性作为值或者是指向其他实体的关联)。 </p><pre class="programlisting"><?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN" "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd"><hibernate-mapping> <class name="net.sf.hibernate.examples.quickstart.Cat" table="CAT"> <!-- A 32 hex character is our surrogate key. It's automatically generated by Hibernate with the UUID pattern. --> <id name="id" type="string" unsaved-value="null" > <column name="CAT_ID" sql-type="char(32)" not-null="true"/> <generator class="uuid.hex"/> </id> <!-- A cat has to have a name, but it shouldn' be too long. --> <property name="name"> <column name="NAME" sql-type="varchar(16)" not-null="true"/> </property> <property name="sex"/> <property name="weight"/> </class></hibernate-mapping></pre><p> 每个持久化类都需要一个标识属性(实际上,只是哪些代表一手对象的类,而不是代表值对象的类,后者会被映射称为一手对象中的一个组件)。这个属性用来区分持久化对象:如果<tt class="literal">catA.getId().equals(catB.getId())</tt>结果是true的话,两只猫就是相同的。这个概念称为<span class="emphasis"><em>数据库标识</em></span>。Hiernate附带了几种不同的标识符生成器,用于不同的场合(包括数据库本地的顺序(sequence)生成器和hi/lo高低位标识模式)。我们在这里使用UUID生成器,并指定<tt class="literal">CAT</tt>表的<tt class="literal">CAT_ID</tt>字段(作为表的主键)存放生成的标识值。 </p><p> <tt class="literal">Cat</tt>的其他属性都映射到同一个表。对<tt class="literal">name</tt>属性来说,我们把它显式地声明映射到一个数据库字段。如果数据库schema是由映射声明使用Hibernate的<span class="emphasis"><em>SchemaExport</em></span>工具自动生成的(作为SQL DDL指令),这特别有用。所有其它的属性都用Hibernate的默认值映射,大多数情况你都会这样做。数据库中的<tt class="literal">CAT</tt>表看起来是这样的: </p><pre class="programlisting"> Column | Type | Modifiers--------+-----------------------+----------- cat_id | character(32) | not null name | character varying(16) | not null
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -