Hibernate读书笔记1-对象持久化模式

来源:互联网 发布:洞主的手工皂淘宝店 编辑:程序博客网 时间:2024/05/17 05:11

1. 持久化模式

    ORM持久化

 ORM是Hibernate的著名的持久化模式.ORM解决的就是对象-关系的映射。域模型面向对象,关系数据库面向关系,一般情况下,一个持久化类和一个表对应,类的每个实例对应表中的一条记录。而用于描述对象-关系映射细节的元数据通常采用XML格式,那么分析XML就可以了解到映射细节是怎样的,这个我们在标题2中讲。

    主动域对象模式

  主动域对象是实体域对象的一种形式。

 2. 怎样用到XML映射文件

    public void delete(Customer customer){
          Session session=getSession();

          session.delete(customer);

    }

   在session.delete(customer)时执行步骤如下:

  1.运用JAVA反射机制,获得customer对象的类型Customer.class。

   2.参考XML文件,关联到表,外键表关联。

   3.根据映射信息,生成sql语句。

   4.调用JDBC API ,执行sql语句。

3.映射文件

   1. 实体映射基础

          Hibernate映射主要包括三部分的映射

              a 表名-类名映射   b主键映射    c字段映射

          <hibernate-mapping>

<class name=" "  table="">

    <id name="" column="" type=""><generator class="" /></id>//主键有主键生成策略,具体的策略省略

    <property name="" column="" type=""/> 

</class>

</hibernate-mapping>

  2  高级映射

        1.自定义数据类型

               Hibernate提供两个自定义类型接口,UserType,CompositeUsertype,我们只需要实现接口就可以了。

         2.复合主键

              a 使用<composite-id>

                             <key-property name="" column="" type=""/>

                             <key-property name="" column="" type="" />

                   </composite-id>,同时复合主键类需要实现equals方法和hashcode方法。

               b 以单独的主键类对复合主键进行描述。<composite-id name="" class="">

                                                                                    <key-property name="" column="" type=""/>

                                                                                    <key-property name="" column="" type="" />

                                                                                 </composite-id>

 

        3.Blob,Clob字段的映射

                  大字段的获取,以及获取之后用什么字段类型存储是我们在提取数据时需要考虑到的,而Hibernate正好给我们提供了一个思路。

首先,Blob字段采用单字节存储,适合保存二进制数据,Clob采用多字节存储,适合保存大型文本文件。

   3 实体映射策略

          1 component节点声明

                 <component name="" class=""></component>

           2 父子类映射

   4 数据关联

           一对一关联

               a 主键关联  <one-to-one name=" " class="" cascade="" outer-join="" />

                b 惟一外键关联 <many-to-one name="" class="" column="" unique="" />

 

           多对多关联

               

 

 

参考文献

[1]《深入浅出Hibernate》

[2] 《精通Hibernate:java 对象持久化技术祥解》

原创粉丝点击