这已经是在项目中第三次用到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语句查询普通属性,但不会影响到集合属性和单端上的
对象
分享到:
相关推荐
在Hibernate中,对象持久化的具体含义包括以下几个方面: - **保存**:将对象状态存储到数据库中。 - **更新**:更新数据库中对象的状态。 - **删除**:从数据库中移除对象。 - **查询**:根据某些条件从数据库中...
### 优化Hibernate性能的几点建议 #### 一、调整Fetch Size以提高性能 在使用Hibernate进行数据查询时,Fetch Size的设置对性能有着显著的影响。Fetch Size是指每次从数据库中取出的数据行数,默认情况下,Oracle...
Hibernate全部知识点
hibernate知识点的总结,适合初学者
【hibernate主要知识点】 Hibernate 是一款流行的 Java 平台上的 ORM(对象关系映射)框架,它使得开发者可以使用面向对象的方式处理数据库操作,而无需直接编写 SQL 语句。ORM 框架如 Hibernate、TopLink 和 OJB ...
hibernate的学习笔记,hibernate所以知识点全,一看就能上手........包含代码和书写格式和图片分析~~~~hibernate的学习笔记,hibernate所以知识点全,一看就能上手........包含代码和书写格式和图片分析~~~~...
下面是 Hibernate 的主要知识点: Hibernate 简介 Hibernate 是一个开源的Java Persistence Framework,它提供了一种对象关系映射的解决方案,帮助开发者轻松地访问和操作关系数据库。Hibernate 的主要特点是:...
Hibernate 配置各种数据库 Hibernate 是一个基于 Java 的持久层框架,提供了一个抽象的数据访问层,能够与多种数据库进行集成。在 Hibernate 的配置文件中,我们可以配置不同的数据库连接,包括驱动程序、URL 等...
这篇文章主要汇总了关于 Hibernate 的一些关键知识点,对于准备面试的 IT 专业人士来说非常有用。 1. **持久化**:持久化是将应用程序的数据存储在数据库中,使得数据即使在应用程序关闭后也能长期存在。在 ...
Hibernate是一个开源的对象关系映射(ORM)框架,它封装了JDBC(Java Database ...该讲义涵盖了Hibernate的基本技术、配置方法以及如何开发一个Hibernate程序等重要知识点,为学习者提供了一个实践ORM框架的良好起点。
以下是对Hibernate的一些关键知识点的详细说明: 1. **异常处理**: 在描述中提到的`org.hibernate.PropertyValueException: not-null property references a null or transient value`是Hibernate抛出的一个常见...
以上只是压缩包中部分可能包含的知识点,实际学习资料可能包括教程文档、示例代码、实战项目等,通过深入学习和实践,开发者可以全面掌握Hibernate的精髓,并将其应用到实际开发中,提高开发效率,降低维护成本。...
在Java开发中,Hibernate3主要提供了以下关键知识点: 1. **对象关系映射(ORM)**:ORM是将数据库表与Java类之间建立映射的技术,允许开发者以面向对象的方式处理数据库。Hibernate通过XML配置文件或注解来定义...
### 关于《Beginning Hibernate: For Hibernate 5》的知识点总结 #### Hibernate 5 概述 - **定义**: Hibernate 是一款流行的开源对象关系映射(ORM)框架,它简化了数据库与 Java 对象之间的交互过程。 - **版本**...
一个最简单的Hibernate project(不涉及Struts, Tomcat, XDoclet,JBoss等东东)必须的几个东东: 1. Hibernate工具包。 2. JDBC数据库连接驱动。以mysql为例,mysql-connector-java-3.1.×-bin.jar。 3. 配置...
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-...
下面我们将深入探讨Hibernate和MySQL结合使用时的一些关键知识点: 1. **Hibernate ORM**: Hibernate是一个持久层框架,它将Java对象转换为数据库记录,反之亦然。通过提供对象关系映射(ORM)服务,Hibernate消除...
《Hibernate几本书补充1》包含了两本关于Hibernate的重要著作——《Hibernate Quickly》和《Hibernate Search in Action》。Hibernate是Java领域广泛使用的对象关系映射(ORM)框架,它极大地简化了数据库操作,使得...
在本练习代码中,我们将深入探讨以下几个关键的Hibernate知识点: 1. **实体类和映射文件**:每个Java类代表数据库中的一个表,类的属性对应表的字段。通过XML映射文件(hibernate.cfg.xml)或注解,我们可以定义...