`
chandler
  • 浏览: 81622 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

hibernate学习笔记(一)

阅读更多

        关于bean中属性作用域的问题。(隐藏 某些属性,同时希望能够通过hibernate抽上来)

     有时候,我们不希望能够让某些属性暴露在外面,比方说书中的例子类Category。
    public class Category {
         private String name;
         private Category parenteCategory;
         private Set<Category> childCategories = new HashSet<Category>();
         private Set<Item> items = new HashSet<Item>();
         public void addChildCategory(Category childCategory){
             if(childCategory==null){
                 throw new IllegalArgumentException("Null child category!");
                 }
             if(childCategory.getParenteCategory()!=null){               //如果原父目录不为空,则在原副目录中删去子目录,
                     childCategory.getParenteCategory()             
                                             .getChildCategories()
                                             .remove(childCategory);
                 }
             childCategory.setParenteCategory(this);
             this.childCategories.add(childCategory);
         }
    }
    其不希望存放子目录的childCategories直接暴露给外面。就可以用把其get,set方法设为私有,或者删除。书上说可以直接的字段访问进行持久化,这一点我还是看不太明白。估计以后会说吧。
    在这里他绝少一个不错的方法,返回只读的set和map。这个方法是Collections中的unmodifiableXXX,很不错的一个方法。
    
    hibernate中的脏检查。
        对于在hibernate中,对于某一个对象的属性的改变,是判断它的值,而不是统一性。所以获取方法的时候,返回一个不同的对象比返回由hibernate传递到设置方法的对象来的安全。
        比方说下面的方法(返回User类的firstname属性)就比较安全
           public String getFirstname(){
               return new String(firstname);
           }
       这里我的理解是,如果要返回从hibernate抽上来的对象。那么如果这个返回对象改变。那么hibernate可能会自动的进行更新。比方说说这里的firstname。我返回出去之后,那么如果我改变这个值,hibernate也会更新。
       但是对于集合,则只是判断其统一性,而不是值的改变。
       比如说下面的代码需要尽量的避免
         public void setNames(List namesList){
             names=(String[])namesList.toArray();
         }

        public List getNames(){

            return Arrays.asList(names)
       }
       因为每次都会产生不同的对象,而使得统一性改变。

 

      动态SQL语句生成。(SQL语句不显示所有的数据表的字段)
      就是class标签中的dynamic-insert和dynamic-update语句。这个时候生成的sql语句,只会出现需要更新的字段。(估计这东西到时候看看api就能了解个大概。只是会看不懂。)
     

     使查询返回的实体(类)不可变。
     class标签中的mutable属性。设置成false
     这个属性个人觉得有点比较大的限制。毕竟一旦设置,那么一切也就没了。这个就有点太严谨了一点。

     给查询实体命名。(重命名类的实体)
        标签是:
      <hibernate-mapping>
            <import class="auction.model.Auditable" rename="IAuditable"/>
      </hibernate-mapping>
       以后的HQL查询的时候,直接输入IAuditable就好了。不过这个觉得比较奇怪,因为import标签没有说明给。

     

    实现命名约定
       比方说一个类User,而规约约定的是数据库表的前缀是db。那么数据库中对应的表应该是db_user。那么用了这个就可以在配置文件中直接写对应的表为user。
       具体的用法是写一个类,继承ImprovedNamingStrategy或者实现NamingStrategy接口。然后调用Configuration中setNamingStrategy方法
       这个方法觉得有点鸡肋。唯一的用处就是相同的对象要进入不同的表中的时候用到。但是用这个方法感觉很原始,首先,需要不创建不同的SessionFactory。其次,用继承也能起到差不多的效果,而且继承更加的方便。唯一的用处就是写映射文件的时候,方便一点了吧。

     属性访问,衍生属性(计算值),默认属性等
          看具体api吧,比较清楚一点。

     映射组建
         使用的是Component标签来进行。我发现如果要使用到parent子标签时,组件类当中要有一个属性,指向包含它的类。
4
0
分享到:
评论

相关推荐

    Hibernate学习笔记整理

    Hibernate学习笔记整理 以下是 Hibernate 框架的详细知识点: Hibernate 介绍 Hibernate 是一个 ORM(Object-Relational Mapping)框架,用于将 Java 对象映射到数据库表中。它提供了一个简洁的方式来访问和操作...

    Hibernate学习笔记特别详细

    《Hibernate学习笔记特别详细》 Hibernate,作为一款开源的Object-Relational Mapping(ORM)框架,为Java开发者提供了强大的数据库操作支持。它简化了数据库访问的复杂性,使得开发人员可以像操作对象一样操作...

    hibernate 学习笔记精要

    hibernate 学习笔记精要hibernate 学习笔记精要hibernate 学习笔记精要hibernate 学习笔记精要

    hibernate学习笔记

    在本篇《Hibernate学习笔记》中,我们将深入探讨Hibernate这一流行的Java对象关系映射(ORM)框架。Hibernate允许开发者以面向对象的方式处理数据库操作,极大地简化了数据存取的复杂性。以下是一些关键知识点: 1....

    Hibernate 学习笔记(全套)

    这套笔记是我学习Hibernate,进行相关技术点训练时记录下来的,其中包括技术点说明与相关事例,拿出来与大家分享。

    Java相关课程系列笔记之十四Hibernate学习笔记

    【Java相关课程系列笔记之十四Hibernate学习笔记】 Hibernate是一个开源的对象关系映射(ORM)框架,它极大地简化了Java应用程序对数据库的操作。本笔记将详细阐述Hibernate的核心概念、使用方法和特性。 一、...

    hibernate学习笔记mashibing

    《Hibernate学习笔记——马士兵教程解析》 在Java开发领域,ORM(Object-Relational Mapping)框架的使用已经非常普遍,其中Hibernate作为一款优秀的ORM框架,因其强大的功能和易用性深受开发者喜爱。本文将根据马...

    Hibernate学习笔记和资料

    hibernate中一对一,一对多,多对多关系的配置,延迟加载,cascade,inverse hibernate查询方式概述,HQL查询,QBC查询,分页,结果集封装方式 ,高级查询 查询的优化,一级缓存,二级缓存,批量查询,注解方式

    Hibernate学习笔记与总结

    **Hibernate学习笔记与总结** Hibernate 是一款开源的对象关系映射(ORM)框架,它为Java开发者提供了一种在关系数据库上操作对象数据的便捷方式。本文将深入探讨Hibernate的核心概念、配置、实体类、映射文件、...

    马士兵hibernate学习笔记(原版)

    《马士兵Hibernate学习笔记》是一份深入浅出的教程,旨在帮助初学者掌握Hibernate这一流行的Java持久化框架。Hibernate是一个对象关系映射(ORM)工具,它允许开发者用面向对象的方式来操作数据库,从而减少了传统...

    hibernate API帮助文档 及hibernate学习笔记

    Hibernate是一款强大的Java持久...通过阅读这份“Hibernate API帮助文档”和“Hibernate学习笔记”,你将能够深入理解Hibernate的工作原理,掌握其API的使用,并能在实际项目中有效地利用Hibernate进行数据持久化操作。

    hibernate学习笔记文档

    ### Hibernate 学习笔记知识点概览 #### 一、Hibernate 概述 - **定义**:Hibernate 是一款开源的对象关系映射(ORM)框架,它实现了将 Java 应用程序中的对象模型映射到关系型数据库中的记录。通过 ORM 技术,...

    hibernate学习笔记第一天的源码

    hibernate学习笔记第一天的源码

    传智播客 汤阳光 Hibernate 学习笔记

    传智播客 汤阳光 Hibernate 学习笔记,非常详细的hibernate学习资料!

    hibernate学习笔记第二天的源码

    在深入探讨Hibernate学习笔记第二天的源码之前,我们先来理解一下Hibernate的核心概念。Hibernate是一个开源的对象关系映射(ORM)框架,它允许Java开发者将数据库操作转化为对象模型,大大简化了数据访问层的开发...

    马士兵java框架hibernate学习笔记

    以上是马士兵Java框架Hibernate学习笔记的主要知识点概览,涵盖了从基础配置到高级特性的一系列内容。对于初学者来说,这是一个很好的起点,可以帮助他们快速掌握Hibernate的核心概念和技术要点。

Global site tag (gtag.js) - Google Analytics