`
houtingting
  • 浏览: 1819 次
  • 性别: Icon_minigender_2
  • 来自: 长沙
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

hibernate几点小解

阅读更多
  这已经是在项目中第三次用到hibernate了,刚开始hibernate时感觉很不错,因为可以省去很多繁琐的sql语句,但通过这几次在项目中用hibernate,就一个字形容“累”。。。。原因是我并没有真正地理解hibernate,经常出现no-session、two open session的问题,还经常出现查询数据时卡死的情况 。。。   ,所以决定这个项目完了后好好地学习下hibernate            
        Hibernate主要接口对象
1、Configuration对象:读取hibernate配置文件
2、SessionFactory对象:创建耗时,重量级的,通常只创建一次,线程安全,
  session不是线程安全的  所以,一个请求对应一个session,请求完毕session关闭
3、Query对象:支持hql和sql

                         hibernate常用标签属性
1、hbm中心配置文件中配了hibernate.hbm2ddl.auto属性
                     a、create—drop:在显示关闭sessionFactory时,将drop掉数据库schema
                     b、update:对数据库表执行save操作时,即使数据库中没有对应的表(即没有ExportDB),
                         它会自动建立对应的数据库表;当在mapping文件中改变表中字段名时,那么执行save操作时,
                  以前的那个字段会留着不会删掉,但不管这个字段,新的字段会加入进去
2、<class>标签中 name:持久类的java全限定名
                  lazy:这个class是否支持lazy,默认是lazy的
      get和load的区别:
         get不支持lazy,load支持lazy;
          get取得所有对象的属性,load只有在使用对象属性时才会向数据库发出sql语句查询
    采用get加载数据,如果没有匹配的数据,返回null,而load则抛出异常;
3、<id>标签:必须配到class的第一个标签,唯一主键
               name:实体类的属性
               column:数据库表中对应的列名(没有默认是实体类属性测名字)
               type:没有配,hibernate自动转换(如String——》varchar)
                       也可自己手动陪,如遇到String就转换成配置的int型
                       这个属性不是很重要,一般不配
               generator:主键生成策略(主键必须配)
                 a、increament自增,缺陷:在分布式系统中,不唯一,这是在一个
                     jvm中唯一
                 b、identity自增,采用mysql数据库自增
                 c、sequence自增,采用oracle数据库自增
                 d、uuid自增  32位字符串,hibernate生成的唯一的id
                 e、native自增  根据数据库的生成能力选择生成方式,如果是mysql
                     就是identity,是oracle则是sequence,所以一般都配为native
                  f、assigned自增  手动自增
3、<property>标签:
                 name:实体bean的属性名
                 column:数据库表中对应的列名
                 type:与上面的一样
                 unique:设置属性的唯一性,默认是false可以重复
                 not-null:设置属性是否为空,默认是false可以为空
                 length:设置属性的长度
                             hibernate的lazy策略
1、集合上的lazy策略:可以取值true/false/extra,默认是true
                     load时: 普通属性加载,集合属性不会加载,只有在使用集合时
                      加载;所以class标签上的lazy只影响普通属性 ,不影响集合属性
                      起作用
                     extra:与lazy=true差不多,如果查询集合的长度,则只会查询集合
                        长度,不会查询每个集合元素,比较智能      
2、单端关联中的lazy策略:(many-to-one,one-to-one)
                         可以取值:false/proxy/noproxy
                        
                       默认情况为proxy:与lazy=“true”上面的一样,用的时候才会真正发出sql语句
                      lazy=false时:查询普通属性时,发出sql语句,这时也查询对象属性
                      (与集合属性一样)
                                                                                                                                                                                                                                                                                                           
3、class标签上的lazy=false,其他默认:
                      所以一开始load时就会发出sql语句查询普通属性,但不会影响到集合属性和单端上的
                        对象

分享到:
评论
1 楼 dxm1986 2009-10-19  
小聪童鞋.

相关推荐

    Hibernate知识点总结

    在Hibernate中,对象持久化的具体含义包括以下几个方面: - **保存**:将对象状态存储到数据库中。 - **更新**:更新数据库中对象的状态。 - **删除**:从数据库中移除对象。 - **查询**:根据某些条件从数据库中...

    优化Hibernate性能的几点建议

    ### 优化Hibernate性能的几点建议 #### 一、调整Fetch Size以提高性能 在使用Hibernate进行数据查询时,Fetch Size的设置对性能有着显著的影响。Fetch Size是指每次从数据库中取出的数据行数,默认情况下,Oracle...

    Hibernate全部知识点

    Hibernate全部知识点

    hibernate知识点

    hibernate知识点的总结,适合初学者

    hibernate主要知识点

    【hibernate主要知识点】 Hibernate 是一款流行的 Java 平台上的 ORM(对象关系映射)框架,它使得开发者可以使用面向对象的方式处理数据库操作,而无需直接编写 SQL 语句。ORM 框架如 Hibernate、TopLink 和 OJB ...

    hibernate的学习笔记,hibernate所以知识点全,一看就能上手

    hibernate的学习笔记,hibernate所以知识点全,一看就能上手........包含代码和书写格式和图片分析~~~~hibernate的学习笔记,hibernate所以知识点全,一看就能上手........包含代码和书写格式和图片分析~~~~...

    Hibernate入门到精通

    下面是 Hibernate 的主要知识点: Hibernate 简介 Hibernate 是一个开源的Java Persistence Framework,它提供了一种对象关系映射的解决方案,帮助开发者轻松地访问和操作关系数据库。Hibernate 的主要特点是:...

    hibernate知识点汇总

    这篇文章主要汇总了关于 Hibernate 的一些关键知识点,对于准备面试的 IT 专业人士来说非常有用。 1. **持久化**:持久化是将应用程序的数据存储在数据库中,使得数据即使在应用程序关闭后也能长期存在。在 ...

    Hibernate Hibernate5 讲义 PDF

    Hibernate是一个开源的对象关系映射(ORM)框架,它封装了JDBC(Java Database ...该讲义涵盖了Hibernate的基本技术、配置方法以及如何开发一个Hibernate程序等重要知识点,为学习者提供了一个实践ORM框架的良好起点。

    Hibernate,hibernate笔记

    以下是对Hibernate的一些关键知识点的详细说明: 1. **异常处理**: 在描述中提到的`org.hibernate.PropertyValueException: not-null property references a null or transient value`是Hibernate抛出的一个常见...

    hibernate学习资料大全

    以上只是压缩包中部分可能包含的知识点,实际学习资料可能包括教程文档、示例代码、实战项目等,通过深入学习和实践,开发者可以全面掌握Hibernate的精髓,并将其应用到实际开发中,提高开发效率,降低维护成本。...

    hibernate jar包:hibernate-commons-annotations-4.0.1.Final.jar等

    Hibernate.jar包,Hibernate可以应用在任何使用JDBC的场合,包含 hibernate-commons-annotations-4.0.1.Final.jar hibernate-core-4.1.12.Final.jar hibernate-ehcache-4.1.12.Final.jar hibernate-entitymanager-...

    hibernate3.zip 包含hibernate3.jar

    在Java开发中,Hibernate3主要提供了以下关键知识点: 1. **对象关系映射(ORM)**:ORM是将数据库表与Java类之间建立映射的技术,允许开发者以面向对象的方式处理数据库。Hibernate通过XML配置文件或注解来定义...

    Beginning Hibernate: For Hibernate 5

    ### 关于《Beginning Hibernate: For Hibernate 5》的知识点总结 #### Hibernate 5 概述 - **定义**: Hibernate 是一款流行的开源对象关系映射(ORM)框架,它简化了数据库与 Java 对象之间的交互过程。 - **版本**...

    Hibernate实践例子程序

    一个最简单的Hibernate project(不涉及Struts, Tomcat, XDoclet,JBoss等东东)必须的几个东东: 1. Hibernate工具包。 2. JDBC数据库连接驱动。以mysql为例,mysql-connector-java-3.1.×-bin.jar。 3. 配置...

    hibernate和MySQL的jar

    下面我们将深入探讨Hibernate和MySQL结合使用时的一些关键知识点: 1. **Hibernate ORM**: Hibernate是一个持久层框架,它将Java对象转换为数据库记录,反之亦然。通过提供对象关系映射(ORM)服务,Hibernate消除...

    Hibernate几本书补充1

    《Hibernate几本书补充1》包含了两本关于Hibernate的重要著作——《Hibernate Quickly》和《Hibernate Search in Action》。Hibernate是Java领域广泛使用的对象关系映射(ORM)框架,它极大地简化了数据库操作,使得...

    Hibernate框架知识点的练习代码

    在本练习代码中,我们将深入探讨以下几个关键的Hibernate知识点: 1. **实体类和映射文件**:每个Java类代表数据库中的一个表,类的属性对应表的字段。通过XML映射文件(hibernate.cfg.xml)或注解,我们可以定义...

    hibernate 5.2.15

    hibernate 5.2.15 hibernate 5.2.15 hibernate 5.2.15 hibernate 5.2.15 hibernate 5.2.15hibernate 5.2.15

Global site tag (gtag.js) - Google Analytics