Hibernate初识

[TOC]
初识Hibernate
1 ORM简介
2 Hibernate简介
3 Hibernate的应用实例
4 Hibernate核心api
5 实体对象状态转换
6 实体映射配置详解

                  ***01ORM简介***     

一 什么是ORM?
简单来说,就是对象-关系映射,具体来说,就是数据的一种持久化技术,把实体对象和关系型数据库建立对立关系,并且创建一个面向对象操作数据库的机制。

二 ORM的优势:
1 ORM在对象模型和关系数据库表之间建立了一座桥梁
2 程序员就不需要再使用SQL语句操作数据库中的表
3 以面向对象的形式实现数据的存储、查询、更改和删除等操作
4 通过ORM实现简单、高效的数据库迁移
5 ORM其实对JDBC封装,利用反射机制和代理机制

三 常见的ORM框架
1 Hibernate
2 MyBatis
3 OpenJPA
4 Toplink
5 Cayenne
5 jRelationalFramework
6 Apache OJB

      **02Hibernate简介**

一 什么是Hibernate?

  hibernate是java语言最早出现的对象关系映射关系。

二 hibernate的使用

  1. 将hibernate需要的jar文件构建当前项目
  2. 在src下创建一个hibernate的配置文件,建议hibernate.cfg.xm
  3. 创建实体对象、将实体对象和数据库中表进行映射,需要创建一个hibernate的映射文件
  4. 编写代码测试

                  **03Hibernate应用实例**
    

    一 Hibernate应用程序开发实例

1 创建db_hibernate数据库
2 在创建的数据库中创建一个tb_student表
3 创建Java项目
4 项目中添加hibernate所需类库
5 项目中添加hibernate.cfg.xml配置文件,完善配置信息
6 创建Student实体类,为该类提供私有属性和get/set方法
7 在Student类的包下添加一个映射文件Student.hbm.xml
8 创建SessionFactory对象,获取Session对象
9 通过Session对象以面向对象形式操作关系型数据库
hibernate所需的类库

这里写图片描述

添加hibernate.cfg.xml配置文件
这里写图片描述

创建Student实体类,为该类提供私有属性和get/set方法
package com.zhidisort.entity;

import java.util.HashSet;
import java.util.Set;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.Table;

/**
2017年9月20日
类描述:dao类
*/
@Entity
@Table(name=”student”)
public class Student {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Integer id;
private String name;
private String sex;
private Integer age;
@ManyToMany(targetEntity=Course.class)
@JoinTable(name=”student_course”,joinColumns=@JoinColumn(name=”stu_id”),inverseJoinColumns=@JoinColumn(name=”cou_id”))
private Set courses=new HashSet<>();
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public Set getCourses() {
return courses;
}
public void setCourses(Set courses) {
this.courses = courses;
}

}

在Student类的包下添加一个映射文件Student.hbm.xml
这里写图片描述
8 创建SessionFactory对象,获取Session对象

这里写图片描述
9 通过session对象以面向对象形式操作关系型数据库
hibernate所需的类库
这里写图片描述

               **Hibernate核心api**

org.hibernate.cfg.Configuration类

顾名思义,Configuration负责管理Hibernate的配置信息,其中包括一些关键的属性如:
数据库连接URL- hibernate.connetion.url
数据库驱动程序类名- hibernate.connection.driver_class
数据库用户名- hibernate.connection.username
数据库用户口令- hibernate.connection.password
数据库方言- hibernate.dialect
使用Hibernate,必须提供以上基本的信息用于对特定数据库的支持,以完成初始化工作。

这里写图片描述

org.hibernate.SessionFactory

SessionFactory负责创建Session 实例,该对象被设计为线程安全的
Hibernate3.x中SessionFactory对象由Configuration对象的buildSessionFactory()方法直接构建,但是在Hibernate4.x以后该方式已被废弃。
这里写图片描述

org.hibernate.Session

Session表示应用程序与持久储存层之间交互操作的一个单线程对象。
Session是持久层操作的基础,相当于JDBC中的Connection
Session的生命周期是以事务的开始和结束来界定的
Session完成的主要功能就是提供对实体对象的CRUD操作
如将对应的实体对象保存至数据库 save(Object o)/persist(Object o)
如将数据从数据库中查询出来load ()和get()等
如将数据从数据库中删除的方法delete()等
如对数据进行更新调用update(Object o)/merge(Object o)
如获取集合数据 createQuery(String hql)

          **实体映射配置详解**

一般情况下,实体类,数据库,类属性与表字段的映射信息定义为xxx.hbm.xml映射文件中。整体的结构为:
这里写图片描述

为hibernate映射文件的根元素,该元素有如下元素:
package :指定映射文件所引用的类所在的包名。
元素为实体类和数据库之间的映射关系,有如下属性可供选择:
name:用于指定实体类完全类名;
table: 实体类对应的表名;
lazy: 用于指定当前实体是否延迟加载,默认是true;
dynamic-update:用于指定在执行更新操作是否动态生成更新的sql语句,只修改更新后的属性;
dynamic-insert: 用于指定在执行插入操作是否动态生成插入的SQL语句,只插入那些非null值;

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值