Hibernate 学习教程大纲

合集下载

Hibernate快速入门教程

Hibernate快速入门教程

一、第一个应用实例1.搭建环境:新建一个名为HibernateDemo的java工程,并导入Hibernate的jar包,特别要注意除了导入lib下的jar包还需导入hibernate3.jar核心jar包。

由于涉及数据库操作,还应导入mysql驱动包。

说明,如果使用最新的hibernate,hibernate开发的基本jar包(7个) 来源:hibernate-distribution-3.3.2.GA.zip hibernate3.jarlib\required下的所有jar包2.简述Hibernate的作用:ORM:Object Relational Mapping,对象关系映射。

将java程序中的对象自动持久化到关系数据库中。

而Hibernate的作用好比就是在java对象与关系数据库之间的一座桥梁,它主要负责两者之间的映射。

在Hibernate内部封装了JDBC技术(但只是一个轻量级的封装,因而可以让程序设计人员更方便的以面向对象的思想操纵数据库),并向外提供API接口。

3.建新一个名为User.java的类,即是上面所说的java对象。

我们以后称这种类为实体类(或是持久化类),它的对象为实体对象(或是持久化对象)。

User.java内容如下:package com.asm.hibernate.domain;import java.util.Date;public class User {private int id;private String name;private Date date;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) { = name;}public Date getDate() {return date;}public void setDate(Date date) {this.date = date;}}4.编写配置文件:User.hbm.xml。

Hibernate教程---看这一篇就够了

Hibernate教程---看这一篇就够了

Hibernate教程---看这⼀篇就够了1 Hibernate概述1.1什么是hibernate框架(重点)1 hibernate框架应⽤在javaee三层结构中 dao层框架2 在dao层⾥⾯做对数据库crud操作,使⽤hibernate实现crud操作,hibernate底层代码就是jdbc,hibernate对jdbc进⾏封装,使⽤hibernate好处,不需要写复杂jdbc代码了,不需要写sql语句实现3 hibernate开源的轻量级的框架4 hibernate版本Hibernate3.xHibernate4.xHibernate5.x(学习)1.2 什么是orm思想(重点)1 hibernate使⽤orm思想对数据库进⾏crud操作2 在web阶段学习 javabean,更正确的叫法实体类3 orm:object relational mapping,对象关系映射⽂字描述:(1)让实体类和数据库表进⾏⼀⼀对应关系让实体类⾸先和数据库表对应让实体类属性和表⾥⾯字段对应(2)不需要直接操作数据库表,⽽操作表对应实体类对象画图描述2 Hibernate⼊门2.1 搭建hibernate环境(重点)第⼀步导⼊hibernate的jar包因为使⽤hibernate时候,有⽇志信息输出,hibernate本⾝没有⽇志输出的jar包,导⼊其他⽇志的jar包不要忘记还有mysql驱动的jar包第⼆步创建实体类package cn.itcast.entity;public class User {/*hibernate要求实体类有⼀个属性唯⼀的*/// private int uid;private String uid;private String username;private String password;private String address;// public int getUid() {// return uid;// }// public void setUid(int uid) {// this.uid = uid;// }public String getUsername() {return username;}public String getUid() {return uid;}public void setUid(String uid) {this.uid = uid;}public void setUsername(String username) {ername = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}}(1)使⽤hibernate时候,不需要⾃⼰⼿动创建表,hibernate帮把表创建第三步配置实体类和数据库表⼀⼀对应关系(映射关系)使⽤配置⽂件实现映射关系(1)创建xml格式的配置⽂件- 映射配置⽂件名称和位置没有固定要求- 建议:在实体类所在包⾥⾯创建,实体类名称.hbm.xml(2)配置是是xml格式,在配置⽂件中⾸先引⼊xml约束- 学过约束dtd、schema,在hibernate⾥⾯引⼊的约束dtd约束(3)配置映射关系<hibernate-mapping><!-- 1 配置类和表对应class标签name属性:实体类全路径table属性:数据库表名称--><class name="er" table="t_user"><!-- 2 配置实体类id和表id对应hibernate要求实体类有⼀个属性唯⼀值hibernate要求表有字段作为唯⼀值--><!-- id标签name属性:实体类⾥⾯id属性名称column属性:⽣成的表字段名称--><id name="uid" column="uid"><!-- 设置数据库表id增长策略native:⽣成表id值就是主键⾃动增长--><generator class="native"></generator></id><!-- 配置其他属性和表字段对应name属性:实体类属性名称column属性:⽣成表字段名称--><property name="username" column="username"></property><property name="password" column="password"></property><property name="address" column="address"></property></class></hibernate-mapping>第四步创建hibernate的核⼼配置⽂件(1)核⼼配置⽂件格式xml,但是核⼼配置⽂件名称和位置固定的- 位置:必须src下⾯- 名称:必须hibernate.cfg.xml(2)引⼊dtd约束(3)hibernate操作过程中,只会加载核⼼配置⽂件,其他配置⽂件不会加载第⼀部分:配置数据库信息必须的第⼆部分:配置hibernate信息可选的第三部分:把映射⽂件放到核⼼配置⽂件中<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN""/dtd/hibernate-configuration-3.0.dtd"><hibernate-configuration><session-factory><!-- 第⼀部分:配置数据库信息必须的 --><property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <property name="hibernate.connection.url">jdbc:mysql:///hibernate_day01</property> <property name="ername">root</property><property name="hibernate.connection.password">root</property><!-- 第⼆部分:配置hibernate信息可选的--><!-- 输出底层sql语句 --><property name="hibernate.show_sql">true</property><!-- 输出底层sql语句格式 --><property name="hibernate.format_sql">true</property><!-- hibernate帮创建表,需要配置之后update: 如果已经有表,更新,如果没有,创建--><property name="hibernate.hbm2ddl.auto">update</property><!-- 配置数据库⽅⾔在mysql⾥⾯实现分页关键字 limit,只能使⽤mysql⾥⾯在oracle数据库,实现分页rownum让hibernate框架识别不同数据库的⾃⼰特有的语句--><property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property><!-- 第三部分:把映射⽂件放到核⼼配置⽂件中必须的--><mapping resource="cn/itcast/entity/User.hbm.xml"/></session-factory></hibernate-configuration>2.2 实现添加操作第⼀步加载hibernate核⼼配置⽂件第⼆步创建SessionFactory对象第三步使⽤SessionFactory创建session对象第四步开启事务第五步写具体逻辑 crud操作第六步提交事务第七步关闭资源@Testpublic void testAdd() {// 第⼀步加载hibernate核⼼配置⽂件// 到src下⾯找到名称是hibernate.cfg.xml//在hibernate⾥⾯封装对象Configuration cfg = new Configuration();cfg.configure();// 第⼆步创建SessionFactory对象//读取hibernate核⼼配置⽂件内容,创建sessionFactory//在过程中,根据映射关系,在配置数据库⾥⾯把表创建SessionFactory sessionFactory = cfg.buildSessionFactory(); // 第三步使⽤SessionFactory创建session对象// 类似于连接Session session = sessionFactory.openSession();// 第四步开启事务Transaction tx = session.beginTransaction();// 第五步写具体逻辑 crud操作//添加功能User user = new User();user.setUsername("⼩王");user.setPassword("250");user.setAddress("⽇本");//调⽤session的⽅法实现添加session.save(user);// 第六步提交事务mit();// 第七步关闭资源session.close();sessionFactory.close();}3 内容⽬录1 实体类编写规则2 hibernate主键⽣成策略(1)native(2)uuid3 实体类操作(1)crud操作(2)实体类对象状态4 hibernate的⼀级缓存5 hibernate的事务操作(1)事务代码规范写法6 hibernate其他的api(查询)(1)Query(2)Criteria(3)SQLQuery3.1 实体类编写规则1 实体类⾥⾯属性私有的2 私有属性使⽤公开的set和get⽅法操作3 要求实体类有属性作为唯⼀值(⼀般使⽤id值)4 实体类属性建议不使⽤基本数据类型,使⽤基本数据类型对应的包装类(1)⼋个基本数据类型对应的包装类- int – Integer- char—Character、- 其他的都是⾸字母⼤写⽐如 double – Double(2)⽐如表⽰学⽣的分数,假如 int score;- ⽐如学⽣得了0分,int score = 0;- 如果表⽰学⽣没有参加考试,int score = 0;不能准确表⽰学⽣是否参加考试l 解决:使⽤包装类可以了, Integer score = 0,表⽰学⽣得了0分,表⽰学⽣没有参加考试,Integer score = null;3.2 Hibernate主键⽣成策略1 hibernate要求实体类⾥⾯有⼀个属性作为唯⼀值,对应表主键,主键可以不同⽣成策略2 hibernate主键⽣成策略有很多的值3 在class属性⾥⾯有很多值(1)native:根据使⽤的数据库帮选择哪个值(2)uuid:之前web阶段写代码⽣成uuid值,hibernate帮我们⽣成uuid值3.3 实体类操作对实体类crud操作添加操作1 调⽤session⾥⾯的save⽅法实现根据id查询1 调⽤session⾥⾯的get⽅法实现修改操作1 ⾸先查询,修改值(1)根据id查询,返回对象删除操作1 调⽤session⾥⾯delete⽅法实现3.4 实体类对象状态(概念)1 实体类状态有三种(1)瞬时态:对象⾥⾯没有id值,对象与session没有关联(2)持久态:对象⾥⾯有id值,对象与session关联(3)托管态:对象有id值,对象与session没有关联2 演⽰操作实体类对象的⽅法(1)saveOrUpdate⽅法:实现添加、实现修改3.5 Hibernate的⼀级缓存什么是缓存1 数据存到数据库⾥⾯,数据库本⾝是⽂件系统,使⽤流⽅式操作⽂件效率不是很⾼。

跟我学Hibernate框架技术——Hibernate框架技术基础

跟我学Hibernate框架技术——Hibernate框架技术基础

目录1.1 跟我学Hibernate框架技术——Hibernate框架技术基础 (2)1.1.1 O/R Mapping工具----Hibernate技术基础 (2)1.1.2 Hibernate和JDBC在性能上的对比 (9)1.1.3 Hibernate系统介绍 (12)1.1.4 Hibernate系统的应用环境 (18)1.1.5 Hibernate为什么如此成功 (20)1.1跟我学Hibernate框架技术——Hibernate框架技术基础1.1.1O/R Mapping工具----Hibernate技术基础1、Hibernate基本概念(1)Hibernate技术本质上是一个提供数据库服务的中间件●Hibernate 是一个面向Java 环境的对象/ 关系数据库映射工具,把Java类对应到数据库的table中,并且采用了xml技术、Java Reflection技术等。

●Hibernate技术本质上也是遵守的ODMG标准的,它的出色源于不断的升级、不断的维护、修改。

以及完善的文档、人气很旺的论坛。

还有很重要的一点就是它的易学易用性。

●Hibernate它不仅提供了从Java类到数据表的映射,也提供了数据查询和恢复等机制。

可以大幅度减少开发时人工使用SQL 和JDBC 处理数据的时间。

(2)Hibernate是一个开放源代码的对象关系映射框架●以OO的方式来操纵数据库它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。

●Hibernate可以应用在任何使用JDBC的场合Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序实用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。

try{stmt=con.createStatement();rs=stmt.executeQuery("select * from student");metaData = rs.getMetaData();for(int column = 0; column < metaData.getColumnCount(); column++){System.out.print(metaData.getColumnName(column+1)+"\t");}while(rs.next()){for (int i = 1; i <= metaData.getColumnCount(); i++){System.out.print(rs.getObject(i)+"\t");}System.out.println("");}stmt.close(); //must closecon.close();}catch(SQLException e){}(3)主要的特点及与Entity EJB Bean的不同点Hibernate是JDBC的轻量级的对象封装它是一个独立的对象持久层框架,和应用服务器以及和EJB没有什么必然的联系。

hibernate官方入门教程

hibernate官方入门教程

hibernate官方入门教程第一部分-第一个Hibernate程序首先我们将创建一个简单的控制台(console-based)hibernate程序。

我们使用内置数据库(in-memory database) (HSQL DB),所以我们不必安装任何数据库服务器。

让我们假设我们希望有一个小程序可以保存我们希望关注的事件(Event)和这些事件的信息。

(译者注:在本教程的后面部分,我们将直接使用Event而不是它的中文翻译“事件”,以免混淆。

)我们做的第一件事是建立我们的开发目录,并把所有需要用到的Java库文件放进去。

从Hibernate网站的下载页面下载Hibernate分发版本。

解压缩包并把/lib下面的所有库文件放到我们新的开发目录下面的/lib目录下面。

看起来就像这样:.+libantlr.jarcglib-full.jarasm.jarasm-attrs.jarscommons-collections.jarcommons-logging.jarehcache.jarhibernate3.jarjta.jardom4j.jarlog4j.jarThis is the minimum set of required libraries (note that we also copied hibernate3.jar, the main archive) for Hibernate. See the README.txt file in the lib/ directory of the Hibernate distribution for more information about required and optional third-party libraries. (Actually,Log4j is not required but preferred by many developers.) 这个是Hibernate运行所需要的最小库文件集合(注意我们也拷贝了Hibernate3.jar,这个是最重要的库)。

Hibernate教程_从入门到精通_第二篇(共四篇)

Hibernate教程_从入门到精通_第二篇(共四篇)
第二章 Hibernate API
目标: •Hibernate API简介
Hinernate的体系结构(运行时)





SessionFactory:它保存了对当前数据库配置的所有映射关系,它是将某 个数据库的映射关系经过编译之后全部保存在内存中的。 它还是生成 Session的工厂,它在进行实例化的过程中将会用到ConnectionProvider。 一个SessionFactory对应一个数据库连接,当数据库连接改变时需要修改 SessionFactory Sesion: 是进行持久化操作的基础,所有的持久化操作都是在Session的 基础上进行的。它相当与JDBC中的Connection。它是Hibernate的持 久化 管理器的核心,提供了一系列的持久化操作方法。另外,它还持有一个针 对持久化对象的一级缓存,在遍历持久化对象或者根据持久化标识查找对 象的时候会用 到。 Transation:功能上和数据库中的事务完全一样,通过它实现对数据库中 事务的控制。Transation对象是Session对象产生的,所以他的生命周期比 Session短。一个Session的生命周期中可以有多个Transaction对象。 ConnectonProvider:主要作用是生成与数据库建立了连接的JDBC对象 ,同时他还作为数据库连接的缓冲池。通过ConnectionProvider实现了应 用程序和底层的DataSource和DriverManager的隔离。 TransactionFactory:是生成Transaction对象的工厂,通过 TransactionFactory实现了事务的封装,使其具体的实现方法与应用程序无 关。

判断一个实体对象是否处于瞬态: 该实体对象的<id>属性(如果存在)的值为空 如果在映射文件中为<id>设置了unsaved-value属性,并且 实体对象的id属性的值与unsaved-value属性的值相同 如果这个实体对象配置version属性,并且version属性的 空 在映射文件中为version属性设置了unsaved-value属性,并且 version属性的值与unsaved-value属性的值相同。 如果设置了interceptor,并且interceptor的isUnsaved() 方法的返回值为true

最经典的hibernate教程 从入门到精通 第一篇(共四篇)

最经典的hibernate教程 从入门到精通 第一篇(共四篇)

• </session-factory>
准备3:添加实体类和映射文件(UserInfo.hbm.xml)
使用Hibernate的7个步骤:
1、 Configuration 7、 关闭Session 2、 创建 SessionFactory
6、 提交事务 5、
3、 打开 Session 4、 开始一个事务
2-1):添加配置文件 -- hibernate.cfg.xml
<session-factory> <property name="connection.url"> jdbc:microsoft:sqlserver://localhost:1433;Database=pubs </property> <property name="ername">sa</property> <property name="connection.password">pwd</property> <property name="connection.driver_class"> com.microsoft.jdbc.sqlserver.SQLServerDriver </property> <property name="dialect"> org.hibernate.dialect.SQLServerDialect </property> <property name="show_sql">true</property> <mapping resource="com/aptech/jb/entity/User.hbm.xml" /> </session-factory>

hibernate完美培训教程课件

hibernate完美培训教程课件
XDoclet提供了对Hibernate的支持,这样我们可以直接由Java代码 生成Hibernate映射文件。
hibernate完美培训教程
11
Hibernate核心接口
hibernate完美培训教程
12
Configuration
➢ 概述:Configuration 类负责管理Hibernate 的配置信息。它包括
hibernate.connection.url jdbc:mysql://localhost/hibernate
ername root
hibernate.connection.password ➢ 数据库连接池的配置-DBCP(App Server连接池首选)
如果是集合类型的属性,它的类型必须定义为集合的接口。例如: List、Set。
提供一个标识属性(identifier property)。如果没有该属性,一些 功能不起作用,比如:级联更新(Cascaded updates) Session.saveOrUpdate()。
hibernate完美培训教程
目录
一、持久化层-O/R Mapping 二、Hibernate入门 三、Hibernate映射申明(Mapping declaration) 四、持久化对象的状态和生命周期 五、Hibernate查询 六、Hibernate最佳实践
hibernate完美培训教程
1
一、持久化层-O/R Mapping
primary key (name)
1:n/n:1 n:m
外键 关联表
)
继承
单表继承、具体表继承、
类表继承
hibernate完美培训教程
3
对象—关系数据库的不匹配范式

1-Hibernate入门

1-Hibernate入门

维 信 高端 软 件 研 发 实 训
创建持久化类
持久化类是指其实例需要被hibernate持久化到数据库 中的类,持久化符合javaBean的规范,包含一些属 性,以及与之对应的set,get方法 持久化类必须有一个ID
public class User { private int id; private String username; private String password; }
维 信 高 端 软 件 研 发 实 训
Hibernate入门
应用Hibernate包含以下步骤:
创建hibernate配置文件 创建持久化类 创建对象-关系映射文件 通过API编写访问数据库的代码
维 信 高 端 软 件 研 发 实 训
创建hibernate配置文件
Hibernate从其配置文件hibernate.cfg.xml中读取和数据库连接有 关的信息,这个配置文件应该位于应用的classpath
维 信 高 端 软 件 研 发 实 训
Query接口
Query 接口是 Hibernate 的查询接口,用于向数据库查询对象。 Query Query 接口是 Hibernate 的查询接口,用于向数据库查询对象。 Query 实例包装了一个 HQL(hibernate 查询语句, HQL 查 实例包装了一个 HQL(hibernateQuery QueryLanguage) Language) 查询语句, HQL 查 询语句与 SQL 查询语句有些类似,但 HQL 查询语句是面向对象的,它 询语句与 SQL 查询语句有些类似,但 HQL 查询语句是面向对象的,它 引用类名及类的属性名,而不是表名和字段名 引用类名及类的属性名,而不是表名和字段名

Hibernate教程讲师用-23页精选文档

Hibernate教程讲师用-23页精选文档

Hibernate教程前言1、 java对象持久化技术1.1 、hibernate是什么1.2、软件模型1.2.1、概念模型1.2.2、关系数据模型1.2.3、域模型1.2.4、域对象1.2.5、域对象之间的关系1.2.6、域对象的持久化概念提示:1.3、数据库访问模式1.3.1、ORM模式1.3.2、主动域对象模式1.3.3、JDO模式1.3.4、CMP模式一、数据源层-O/R Mapping主要介绍三层架构,如何分层?(逻辑上的分层,二个原则)数据层技术的选择:直接使用1.1、SQL/JDBC:优点:很多开发者熟悉关系数据库管理系统,理解SQL,也知道如何使用表和外键进行工作。

此外,他们可以始终使用众所周知并广泛使用的DAO设计模式对业务逻辑隐藏复杂的JDBC代码和不可移植的SQL。

缺点:为域中的每个类手工编写持续性代码的工作是非常可观的,特别是需要支持多种SQL方言时。

这项工作通常会消耗很大一部分的开发努力。

此外,当需求改变时,一个手工编码的解决方案总是需要更多的注意和维护努力。

1.2、序列化:Java有一个内建的持久化机制:序列化提供了将对象图(应用状态)写到字节流中的能力,然后它可能被持久化到文件或数据库中。

持久化也被Java的远程方法调用(RMI)使用来为复杂对象传递值语义。

持久化的另一种用法是在机器集群中跨节点复制应用状态。

缺点:很不幸,一个相互连接的对象图在序列化之后只能被当作一个整体访问,如果不反序列化整个流就不可能从流中取出任何数据。

这样,结果字节流肯定会被认为不适合进行任意的检索或聚合。

甚至不可能独立地访问或更新一个单独的对象或子图。

非常明显,因为当前特定的技术,序列化不适合于作为高并发性的Web和企业应用的持久化机制。

在特定的环境中它被作为桌面应用的适当的持久化机制。

1.3EJB entity beansEJB1.1实体Bean在实践中彻底地失败了。

EJB规范的设计缺陷阻碍了Bean管理的持续性(BMP)实体Bean有效地执行。

关于hibernate详细教程

关于hibernate详细教程

九、ORM工具实现持久化示意图
如何进行对象-关系数据库的匹配
public class User {
➢ 如何进行对象-关系数据库的匹配?
private String name;
private String password;
对象
关系数据库
private String address; ……… } create table t_user ( name varchar(255) not null ,
七、 Hibernate概述
这就是Gavin King,一个充满激情、脾气很倔、永不言败的人。他的成就也 许全世界搞Java的人都知道:他是hibernate的创始人;他是EJB 3.0的Entity bean specification的实际领导人2003年9月, Gavin King和hibernate的一些开 发者加入了JBoss。这样他们就可以全职进行hibernate的开发,并提供最好 的服务和培训。 也许在这里讨论hibernate的成功和影响力这种全世界都知 道的事情已经是多余的了。Gavin King的火暴的脾气和自负也是闻名的,看 看Gavin King自己有趣的评价:Even when I'm a rude grumpy bastard answering forum posts at 3am, I'm always happy to see people using Hibernate.
Hibernate---对象/关系映射
第二篇 Hibernate框架
一、要求与目标
要求:熟悉Java、SQL、JDBC,掌握面
向对象的开发方法。
课程目标:理解O/R Mapping原理,掌
握Hibernate开发的相关知识,并能使用 Hibernate进行实际项目开发。

hibernate第一课

hibernate第一课

第一课Hibernate对象关系映射以及开发步骤一、对象关系映射(O/R Mapping)1、定义:将java类的对象和数据库中表的记录进行关联。

2、Java类映射为库中的表3、Java的类的属性映射为表中的列4、Java类之间的关联关系映射为表的关联关系5、java的类对象和数据库中的记录保持同步状态。

受持久化框架的影响,有事务处理的能力。

二、Hibernate的构成1、实体类(POJO)2、实体映射文件(描述类的属性和表的映射关系)命名规则为:类名.hbm.xml3、hibernate的配置文件(Hibernate.cfg.xml)(1)、描述数据库的访问方式和操作的相关属性。

(2)、包含数据库的驱动和所使用的数据库的类型(mssql oracle、mysql),还包含相关的实体映射文件。

(3)、包含数据库访问的用户名和密码(4)、hibernate运行时首先加载Hibernate.cfg.xml文件,建立与数据库之间的关系三、Hibernate的重要接口(1)Configuration—用于加载hibernate的配置文件,用于与数据库之间建立联系。

使用它可以创建数据库会话工厂(SessionFactory)(2)SessionFactory创建数据库之间的会话对象Session,以单态方式出现(3)Session数据库会话接口,主要用于操作实体对象(4)、事务由Session对象获取,用于保持操作的事务特性(ACID )(5)、查询接口(Query)主要用于对数据库中的数据通过实体对象进行查询。

由Session对象创建.四、Hibernate的操作步骤库和表3、生成实体类和Hibernate映射文件4、在测试类中创建Session对象5、使用Session对象创建事务对象6、给实体对象赋值7、使用session对象操作实体对象8、提交事务9、关闭Session对象五、生成的Admin.hbm.xml文件六、生成的HibernateSessionFactory.java类。

Hibernate入门

Hibernate入门

JNDI 数据源配置
3、hibernate.cfg.xml改为: hibernate.cfg.xml改为: 改为 • <property name="connection.datasource">java:comp/env/jdbc/TestD B</property> • 4. 在SPRING的配置文件中加入如下代码 • <bean id="dataSource" class="org.springframework.jnd i.JndiObjectFactoryBean"> <property name="jndiName"> • <value>java:comp/env/jdbc/yourdbname</value> • </property> </bean>
3.2 下载与安装Hibernate
• Hibernate的安装非常简单,可以把Hibernate工具பைடு நூலகம்来 使用,只要把Hibernate提供的jar文件加入到 ClassPath,再做几个项简单配置就可以使用了。
3.2.1 下载Hibernate
• 请到Hibernate的网站/下载 Hibernate包,目前Hibernate核心API的版本是3.6.1。
3.3.5 编写测试程序并测试
为了力图简单,本例只使用一个main函数来实现测试程序。 首先必须启动Hibernate,此过程包括创建一个 SessoinFactory,SessionFactory可以创建并打开新的 Session。一个Session代表一个单线程的单元操作。 接下来是正式的访问数据库的代码,将一个对象的信息保 存到数据库中,然后再读取它。在本例中可以看出使用 hibernate完成这些操作完全是面向对象的方法来实现的。 不必关心数据库种类,甚至不必了解SQL语句用法。

第二讲 Hibernate入门

第二讲 Hibernate入门

基本概念
• 对象持久化:持久化的目的就是将内存中 的数据存储在关系数据库或磁盘文件和 XML数据文件中。 • O种 主要的持久化技术,需要同时使用面向对 象和关系数据库进行开发。
第一个Hibernate程序-HelloWorld
• 1、建立新的Java项目,名为Hibernate_01_HelloWorld • 2、学习建立User Library——Hibernate3.6,并加入相应 的jar包 • 1)项目右键Build path-》configure build path-》add library • 2)选择user library命名Hibernate3.6 • 3)在该library中加入所需的jar包(hibernate3、 required、jpa、slf4j-nop)
第二讲 Hibernate入门
• 环境准备 • Hibernate3.6.7 • slf4j -1.6 • Apache-log4j-1.2.16 • Junit4.9 • mysql-connector-java-5.1.15 • 学习资源 • • Hibernate zh_CN文档
第一个Hibernate程序-HelloWorld
• 3、引入mysql的jdbc包 • 4、在mysql中建立相对应的数据库和表 • 1)create database hibernate • 2)use hibernate • 3)create table student(id int primary key,name varchar(20),age int)
第一个Hibernate程序-HelloWorld
• 5、建立Hibernate配置文件hibernate.cfg.xml • 1)从参考手册中拷贝 • 2)修改对应的数据库连接 • 3)注释掉暂时用不上的内容 • 6、建立Student类 • 7、建立Student映射文件Student.hbm.xml • 1)参考手册

Hibernate学习过程

Hibernate学习过程

Hibernate学习过程第一章hibernate 入门一、jbosstools的安装hibernate是jboss公司的一个项目,所用STS工具并不支持hibernate配置文件的开发,jboss 集成开发包有大量的工具类。

1、导入工具过程:点击Help Install New Software接下来过程如图所示:Jboss工具安装成功如下2、创建一个java项目导入相应的包(hibernate_01中)。

在java项目中与web项目不同导入的jar包通常需要执行这一操作(Build Path->Add Build Path)二、创建hibernate配置文件在src目录下创建相应的hibernate.cfg.xml文件在这个文件中加上相应的数据库配置信息创建实体类User.java三、在实体类的包中创建相应的Use.hbm.xml文件,用来指定实体类和数据库映射关系与User.java 同一文件路径将配置文件User.hbm.xml添加到hibernate的cfg的配置文件中常用对象(Configuration , ServiceRegistry, SessionFactory)六、创建SessionFactory,SessionFactory是线程安全,所以整个SessionFactory应该基于单例的模式来创建(TestFirst.java中)Configuration cfg = new Configuration().configure();ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(cfg.getProperties()).buildServiceRegistry();SessionFactory factory = cfg.buildSessionFactory(serviceRegistry);七、创建sessionSession session = factory.openSession();八、通过session来进行各种操作以下代码完成了对象的添加操作try {session = factory.openSession();//开启事务session.beginTransaction();User u = new User();u.setNickname("张三");u.setPassword("123");u.setUsername("zhangsan");u.setBorn(new Date());session.save(u);//提交事务session.getTransaction().commit();} catch (HibernateException e) {e.printStackTrace();if(session!=null) session.getTransaction().rollback();} finally {if(session!=null) session.close();}体验hibernate的魅力吧请仔细研究关于User对象的增删改查(CRUD)在hibernate_01项目包中。

hibernate教程

hibernate教程

hibernate教程Hibernate是一个开源的对象/关系映射框架,它提供了一种通过Java类对数据库操作的方式,能够帮助我们更加方便、灵活地操作数据库。

下面是一个简要的Hibernate教程。

1. 配置Hibernate:在使用Hibernate之前,需要先配置Hibernate的相关信息,如数据库连接等。

配置信息可以存放在一个XML文件中,通过读取XML文件来获取。

2. 创建实体类:在Hibernate中,数据库中的表与Java中的类是一一对应的关系,我们需要创建与数据库表对应的Java类。

在Java类中,可以定义属性来表示表中的列,并相应地定义getter和setter方法。

3. 定义映射文件:映射文件定义了Java类与数据库表之间的映射关系。

在映射文件中,需要指定类名、表名、属性与列的对应关系等。

4. 创建SessionFactory:SessionFactory是Hibernate的核心接口之一,用于创建Session对象。

SessionFactory负责初始化Hibernate的配置,以及创建数据库连接池。

5. 创建Session:Session是Hibernate处理持久化操作的接口。

它代表了一次对数据库的操作,可以用于保存、更新、删除对象,以及执行查询操作。

6. 保存对象:在Hibernate中,可以通过Session的save方法将Java对象保存到数据库中。

当调用save方法后,Hibernate会自动将Java对象转换为SQL语句,并执行保存操作。

7. 更新对象:通过Session的update方法可以更新数据库中的对象。

当调用update方法时,Hibernate会根据对象的状态,自动执行更新操作。

8. 删除对象:通过Session的delete方法可以删除数据库中的对象。

当调用delete方法时,Hibernate会自动执行删除操作。

9. 查询对象:Hibernate提供了一种面向对象的查询语言,称为HQL(Hibernate Query Language)。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Hibernate 学习教程第1课课程内容. 6
第2课Hibernate UML图. 6
第3课风格. 7
第4课资源. 7
第5课环境准备. 7
第6课第一个示例HibernateHelloWorld 7
第7课建立Annotation版本的HellWorld 9
第8课什么是O/RMapping 11
一、定义:. 11
二、 Hibernate的创始人:. 11
三、 Hibernate做什么:. 12
四、 Hibernate存在的原因:. 12
五、 Hibernate的优缺点:. 12
六、 Hibernate使用范围:. 12
第9课Hibernate的重点学习:Hibernate的对象关系映射. 12
一、对象---关系映射模式. 12
二、常用的O/R映射框架:. 13
第10课模拟Hibernate原理(OR模拟) 13
一、项目名称. 13
二、原代码. 13
第11课Hibernate基础配置. 15
一、提纲. 15
二、介绍MYSQL的图形化客户端. 16
三、 Hibernate.cfg.xml:hbm2ddl.auto 16
四、搭建日志环境并配置显示DDL语句. 16
五、搭建Junit环境. 16
六、 ehibernate.cfg.xml : show_sql 17
七、 hibernate.cfg.xml :format_sql 17
八、表名和类名不同,对表名进行配置. 17
九、字段名和属性相同. 17
十、字段名和属性名不同. 17
十一、不需要(持久化)psersistence的字段. 18
十二、映射日期与时间类型,指定时间精度. 18
十三、映射枚举类型. 19
第12课使用hibernate工具类将对象模型生成关系模型. 19第13课ID主键生成策略. 20
一、 Xml方式. 20
<generator>元素(主键生成策略) 20
二、 annotateon方式. 21
1、AUTO默认. 21
2、IDENTITY 22
3、SEQUENCE 22
4、为Oracle指定定义的Sequence 22
5、TABLE - 使用表保存id值. 23
三、联合主键. 24
1、xml方式. 24
2、annotation方式. 27
第14课Hibernate核心开发接口(重点) 29
一、 Configuration(AnnotationConfiguration) 29
二、 SessionFactory 29
三、 Session 29
1、管理一个数据库的任务单元. 29
2、 save(); 29
3、 delete() 29
4、 load() 29
5、 Get() 30
6、 load()与get()区别. 31
7、 update() 31
8、 saveOrUpdate() 32
9、 clear() 32
10、 flush() 33
11、 evict() 33
第15课持久化对象的三种状态. 35
一、瞬时对象(TransientObject):. 35
二、持久化对象(PersistentObject):. 35
三、离线对象(DetachedObject):. 35
四、三种状态的区分:. 35
五、总结:. 35
第16课关系映射(重点) 36
一、一对一关联映射. 36
(一) 唯一外键关联-单向(unilateralism) 37
(二) 唯一外键关联-双向. 40
(三) 主键关联-单向(不重要) 41
(四) 主键关联-双向(不重要) 44
(五) 联合主键关联(Annotation方式) 44
二、 component(组件)关联映射. 45
(一) Component关联映射:. 45
(二) User实体类:. 45
(三) Contact值对象:. 46
(四) xml--User映射文件(组件映射):. 46
(五) annotateon注解. 46
(六) 导出数据库输出SQL语句:. 47
(七) 数据表结构:. 47
(八) 组件映射数据保存:. 47
三、多对一–单向. 48
(一) 对象模型图:. 48
(二) 关系模型:. 48
(三) 关联映射的本质:. 48
(四) 实体类. 48
(五) xml方式:映射文件:. 49
(六) annotation 50
(七) 多对一存储(先存储group(对象持久化状态后,再保存user)):. 50
(八) 重要属性-cascade(级联):. 51
(九) 多对一加载数据. 51
四、一对多- 单向. 51
(一) 对象模型:. 52
(二) 关系模型:. 52
(三) 多对一、一对多的区别:. 52
(四) 实体类. 52
(五) xml方式:映射. 52
(六) annotateon注解. 53
(七) 导出至数据库(hbmàddl)生成的SQL语句:. 53
(八) 一对多单向存储实例:. 53
(九) 生成的SQL语句:. 54
(十) 一对多,在一的一端维护关系的缺点:. 54 (十一) 一对多单向数据加载:. 54
(十二) 加载生成SQL语句:. 54
五、一对多- 双向. 54
(一) xml方式:映射. 55
(二) annotateon方式注解. 55
(三) 数据保存:. 56
(四) 关于inverse属性:. 56
(五) Inverse和cascade区别:. 56
(六) 一对多双向关联映射总结:. 57
六、多对多- 单向. 57
(一) 实例场景:. 57
(二) 对象模型:. 57
(三) 关系模型:. 57
(四) 实体类. 57
(五) xml方式:映射. 58
(六) annotation注解方式. 58
(七) 生成SQL语句. 59
(八) 数据库表及结构:. 59
(九) 多对多关联映射单向数据存储:. 59
(十) 多对多关联映射单向数据加载:. 61
七、多对多- 双向. 61
(一) xml方式:映射. 61
(二) annotation注解方式. 62
八、关联关系中的CRUD_Cascade_Fetch 63
九、集合映射. 63
十、继承关联映射. 64
(一) 继承关联映射的分类:. 64
(二) 对象模型:. 64
(三) 单表继承SINGLE_TABLE:. 64
(四) 具体表继承JOINED:. 70
(五) 类表继承TABLE_PER_CLASS 72
(六) 三种继承关联映射的区别:. 74
第17课hibernate树形结构(重点) 75
一、节点实体类:. 75
二、 xml方式:映射文件:. 75
三、 annotation注解. 76
四、测试代码:. 76
五、相应的类代码:. 76
第18课作业-学生、课程、分数的映射关系. 79
一、设计. 79
二、代码:. 79
三、注意. 80
第19课Hibernate查询(Query Language) 80
一、 Hibernate可以使用的查询语言. 80
二、实例一. 80
三、实体一测试代码:. 82
四、实例二. 86
五、实例二测试代码. 87
第20课Query by Criteria(QBC) 89
一、实体代码:. 89
二、 Restrictions用法. 90
三、工具类Order提供设置排序方式. 91
四、工具类Projections提供对查询结果进行统计与分组操作. 91
五、 QBC分页查询. 92
六、 QBC复合查询. 92
七、 QBC离线查询. 92
第21课Query By Example(QBE) 92
一、实例代码. 92
第22课Query.list与query.iterate(不太重要) 93
一、 query.iterate查询数据. 93
二、 query.list()和query.iterate()的区别. 94
三、两次query.list() 94
第23课性能优化策略. 95
第24课hibernate缓存. 95
一、 Session级缓存(一级缓存) 95
二、二级缓存. 95
1、二级缓存的配置和使用:. 96
2、二级缓存的开启:. 96
3、指定二级缓存产品提供商:. 96
4、使用二级缓存. 97
5、应用范围. 99
6、二级缓存的管理:. 99
7、二级缓存的交互. 100
8、总结. 102
三、查询缓存. 102
四、缓存算法. 103
第25课事务并发处理. 104
一、数据库的隔离级别:并发性作用。

. 104
1、 Mysql查看数据库隔离级别:. 104
2、 Mysql数据库修改隔离级别:. 104
二、事务概念(ACID) 104
三、事务并发时可能出现问题. 104
第26课hibernate悲观锁、乐观锁. 105
一、悲观锁. 105
1、悲观锁的实现. 105
2、悲观锁的适用场景:. 105
3、实例:. 105
4、悲观锁的使用. 106
5、执行输出SQL语句:. 106。

相关文档
最新文档