映射文件(hbm.xml): 是配置对象与数据库表的对应关系。是站在对象的位置上进
行配置的。* hibernate-mapping元素, package:指定一个包前缀,如果在映射文档中
没有指定全限定的类名,就使用这个作为包名。auto-import:指定是否可以在查
询语言中使用非全限定名(仅限于本映射文件中的类),默认为true。
Java是面向对象语言,对象模型,其主要概念有:继承、关联、多态等;关系型
数据库中的概念有:表、主键、外键等。当使用Jdbc去操作关系型数据库时,因
为他们对应不起来,所以要做转换(转换的过程就叫做ORM, Object Relation
Mapping, 对象关系映射)。除了手工转换外,还可以使用ORM框架来解决,当前
主流ORM框架有Hibernate和TopLink等,我们学习的是Hibernate(3.2.6).
0,准备环境:
1,引入jar包,最基本的包为:
hibernate3.jar
antlr-2.7.6.jar
asm.jar
asm-attrs.jar
cglib-2.1.3.jar
dom4j-1.6.1.jar
commons-collections-2.1.1.jar
commons-logging-1.0.4.jar
jta.jar
所用的数据库的JDBC驱动
可以选择加入log4j-1.2.11.jar。
2,拷贝配置文件hibernate.cfg.xml到classpath的根中,并修改其中的数据
库连接信息。选择拷贝log4j.properties文件。
<property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql:///lesson-hibernate</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">1234</property>
<!-- 显示sql语句 -->
<property name="show_sql">true</property>
<!-- 自动更新表结构 -->
<property name="hbm2ddl.auto">update</property>
Hibernate映射文件就是用于说明Java对象与数据库表中的记录的对应关系的。不
能性质的属性(例如主键和普通属性)用不同的标签来映射,如果Java对象中的
某个属性不需要存储到数据库中,那么就不需要在映射文件中配置这个属性。
1,HelloWorld:
domain: User: id:int, name:string.
dao: UserDao: save, delete, update, get, find(int first, int max).
实现实体映射与实体的增删改查与分页查询(HQL)。
Hibernate对实体的要求:
1,有默认的构造方法;
2,推荐提供一个标识属性(与业务无关的id);
3,推荐此类不是final的(对懒加载有影响);
4,推荐重写hashCode与equals方法。
2,属性映射:name,colum,type,length,not-null.
id映射与主键生成策略;unsaved-value:一个特定的标识属性值,用来标专该
实例是刚刚创建的,尚未保存。默认是由hibernate选择一个合理的值。
在id或property中指定column信息或使用<column>子元素。
主键生成策略:identity, increment, ehilo, native.
常用的映射类型:integer,string,date,timestamp,text,binary.
时间类型映射: 生日(Date,date);
大文本类型映射:描述(String,text);
二进制类型映射:文件(byte[],binary);
Session的几个主要方法
1.save,persist,保存数据
2.delete,删除对象
3.update,更新对象,如果数据库中没有记录,会出现异常。
4.get,根据ID查,会立刻访问数据库。
5.Load,根据ID查,(返回的是代理,不会立即访问数据库)。
6.saveOrUpdate,merge,由Hibernte来确定是save或update
3,Hibernate对象实例的三种状态与Session的方法:
三种状态:自由(瞬时)、持久、游离;
自由(瞬时)状态:从未与任何Session关联过,一般指新创建的对象实例。
持久状态:目前正与Session有关联,拥有持久化标识(相当于主键值),
并且相关联的session没有关闭,事务没有提交。持久对象状态发
生改变,在事务提交时会更新到数据库。
游离状态:曾经与Session关联过,不过那个Session已经关闭了。
三种状态之间的转换(通过Session的方法):
Session的方法:save(persist), delete, get, load.
update:update是把一个已经更改过的脱管状态的对象变成持久状态。
saveOrUpdate(merge):【什么下情况添加什么情况下更新】;
使用save和saveOrUpdate方法时,如果被操作对象与另一个跟本session
关联的po对象拥有相同的持久化标识(identifier),就会抛出一个异常:
org.hibernate.NonUniqueObjectException。
通常下面的场景会使用update()或saveOrUpdate():程序在第一个
session 中加载对象,接着把session关闭,该对象被传递到表现层,对
象发生了一些改动,该对象被返回到业务逻辑层最终到持久层,程序创建
第二session调用第二个session的update()方法持久这些改动。
contains:Session是否包含某个对象(是否是持久状态);
clear:清空一级缓存;
flush:强制刷出(更新到数据库);
load与get的区别:
get方法:如果找不到符合条件的纪录,返回null。
load方法:返回的是一个代理对象。在第一次访问这些懒加载对象(代理对
象)的属性(getId方法除外)时,hibernate 会初始化这些代理。这
时如果数据库中没有与之对应的记录,就会抛异常:
org.hibernate.ObjectNotFoundException: No row with the given
identifier exists: ...。
如果PO是final的,则load被调用时会马上发出一条select语句(即不能使
用懒加载功能)。
分享到:
相关推荐
1. **异常处理**: 在描述中提到的`org.hibernate.PropertyValueException: not-null property references a null or transient value`是Hibernate抛出的一个常见异常,表示尝试保存一个实体时,其某个非空属性为...
### Hibernate精华笔记全纪录 #### 一、知识准备与背景介绍 **1. JDBC基础** 在深入了解Hibernate之前,首先需要掌握Java Database Connectivity (JDBC)的基础知识。JDBC是Java中用于连接各种类型数据库的标准API...
在深入探讨《hibernate笔记.txt》所提及的关键知识点前,我们先来解析一下标题和描述中的核心概念。“自上而下的依赖,单向依赖,层与层之间最好依赖抽象”,这一描述实际上触及了软件架构设计中的关键原则,特别是...
《韩顺平.2011版.hibernate笔记》是一份针对Hibernate框架的详细学习资料,由知名IT讲师韩顺平在2011年编撰而成。Hibernate是Java开发领域中广泛使用的对象关系映射(ORM)框架,它极大地简化了数据库操作,使开发者...
【传智播客 Hibernate 笔记】是一份深入学习 Hibernate ORM 框架的资源集合,包括了 word 笔记、pdf 讲义、源代码以及相关分析图表和 jar 包,旨在帮助开发者全面理解并掌握 Hibernate 的核心概念与实际应用。...
《Hibernate笔记完整版》 在Web开发领域,Hibernate作为三大框架之一,扮演着至关重要的角色。本文将全面介绍Hibernate,包括其数据持久化的概念、优缺点对比,以及Hibernate的核心概念和编程步骤。 对象持久化是...
《韩顺平Hibernate笔记》是一份详尽记录了著名IT讲师韩顺平关于Hibernate框架讲解内容的资料集合。Hibernate作为Java领域中广泛使用的对象关系映射(ORM)框架,极大地简化了数据库操作,使得开发者可以更加专注于...
1. Configuration类:这是启动Hibernate的第一步,它负责配置并创建SessionFactory实例。配置包括数据库连接信息、ORM映射文件路径等。 2. SessionFactory接口:这是Hibernate的核心组件,它是线程安全的,用于初始...
Hibernate学习笔记整理 以下是 Hibernate 框架的详细知识点: Hibernate 介绍 Hibernate 是一个 ORM(Object-Relational Mapping)框架,用于将 Java 对象映射到数据库表中。它提供了一个简洁的方式来访问和操作...
《韩顺平Hibernate笔记》是一份详尽的关于Hibernate框架的学习资料,由知名IT教育专家韩顺平编撰。Hibernate是Java开发中的一个强大的对象关系映射(ORM)框架,它简化了数据库与Java对象之间的交互,使得开发者可以...
Hibernate学习笔记 Hibernate学习笔记 Hibernate学习笔记 Hibernate学习笔记
培训期间的hibernate笔记 hibernate笔记 达内培训
### 马士兵Hibernate学习笔记知识点总结 #### 一、课程内容概览 - **HelloWorld**:通过简单的示例程序介绍如何启动一个基于Hibernate的Java项目。 - **Hibernate原理模拟**:解释O/R Mapping的概念及其重要性。 -...
### 尚学堂Hibernate笔记知识点详解 #### 一、项目初始化与环境搭建 1. **新建项目**:在IDE中创建一个新的Java项目。 2. **构建用户库并添加所需的JAR包**: - 右键点击项目 -> `Build Path` -> `Configure ...
hibernate的详细笔记 基础配置
《Hibernate学习笔记特别详细》 Hibernate,作为一款开源的Object-Relational Mapping(ORM)框架,为Java开发者提供了强大的数据库操作支持。它简化了数据库访问的复杂性,使得开发人员可以像操作对象一样操作...