Hibernate框架简述

Hibernate框架介绍以及入门 【一】Hibernate 快速入门 框架的概述 什么是 Hibernate Hibernate 持久层的ORM框架 下载Hibernate 官网 编写测试代码 在开头跟大家分享的时候我就说,面试我是没有做好准备的,全靠平时的积累,确实有点临时抱佛脚了,以至于我自己还是挺懊恼的。(准备好了或许可以拿个40k,没做准备只有30k+,你们懂那种感觉吗)如何准备面试?1、前期铺垫(技术沉积)程序员面试其实是对于技术的一次摸底考试,你的技术牛逼,那你就是大爷。大厂对于技术的要求主要体现在:基础,原理,深入研究源码,广度,实战五个方面,也只有将原理理论结合实战才能把技术点吃透。 阅读详情
 

Hibernate的核心组件
在基于MVC设计模式的JAVA WEB应用中,Hibernate可以作为模型层/数据访问层。它通过配置文件(hibernate.properties或hibernate.cfg.xml)和映射文件(***.hbm.xml)把JAVA对象或PO(Persistent Object,持久化对象)映射到数据库中的数据库,然后通过操作PO,对数据表中的数据进行增,删,改,查等操作。
除配置文件,映射文件和持久化类外,Hibernate的核心组件包括以下几部分:
a)Configuration类:用来读取Hibernate配置文件,并生成SessionFactory对象。
b)SessionFactory接口:产生Session实例工厂。
c)Session接口:用来操作PO。它有get(),load(),save(),update()和delete()等方法用来对PO进行加载,保存,更新及删除等操作。它是Hibernate的核心接口。
d)Query接口:用来对PO进行查询操。它可以从Session的createQuery()方法生成。
e)Transaction接口:用来管理Hibernate事务,它主要方法有commit()和rollback(),可以从Session的beginTrancation()方法生成。

Persistent Object
持久化对象可以是普通的Javabeans,惟一特殊的是它们与(仅一个)Session相关联。JavaBeans在Hibernate中存在三种状态:
1.临时状态(transient):当一个JavaBean对象在内存中孤立存在,不与数据库中的数据有任何关联关系时,那么这个JavaBeans对象就称为临时对象(Transient Object)。
2.持久化状态(persistent):当一个JavaBean对象与一个Session相关联时,就变成持久化对象(Persistent Object)
3.脱管状态(detached):在这个Session被关闭的同时,这个对象也会脱离持久化状态,就变成脱管状态(Detached Object),可以被应用程序的任何层自由使用,例如可以做与表示层打交道的数据舆对象(Data Transfer Object)。

Hibernate的运行过程
Hibernate的运行过程如下:
A:应用程序先调用Configration类,该类读取Hibernate的配置文件及映射文件中的信息,并用这些信息生成一个SessionFactpry对象。
B:然后从SessionFactory对象生成一个Session对象,并用Session对象生成Transaction对象;可通过Session对象的get(),load(),save(),update(),delete()和saveOrUpdate()等方法对PO进行加载,保存,更新,删除等操作;在查询的情况下,可通过Session对象生成一个Query对象,然后利用Query对象执行查询操作;如果没有异常,Transaction对象将 提交这些操作结果到数据库中。

Hibernate的运行过程如下图:

Hibernate简单示例:
数据:

create table T_register
(
    id    
int primary key,
    userName 
varchar(30),
    userPwd 
varchar(30),
    sex 
varchar(10),
    age 
int
)


视图层:注册页面register.jsp

<%@ page language="java" contentType="text/html; charset=GBK"
    pageEncoding
="GBK"
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK">
<title>Insert title here</title>
</head>
<body>

<form action="servlet/RegisterServlet" method="POST">
    用户名:
<input type="text" name="userName" /><BR>
    密  码:
<input type="text" name="userPwd" /><BR>
    性  别:
<input type="text" name="sex" /><BR>
    年  龄:
<input type="text" name="age" /><BR>
    
<input type="submit" value="save" />
</form>
</body>
</html>

设计持久化类TRegister.java
持久化类
设计Hibernate配置文件hibernate.cfg.xml
hibernate.cfg.xml
设计映射文件TRegister.hbm.xml
TRegister.hbm.xml
设计hibernate基础类HibernateUtil.java
package hibernate;
/**
 * hibernate 基础类
 * 
@author fengyan
 * date 2007-01-09 02:32
 
*/

import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class HibernateUtil {
    
    
private static final SessionFactory sessionFactory;
    
    
static
    
{
        
try
        
{
            Configuration config 
= new Configuration().configure("/hibernate/hibernate.cfg.xml");
            sessionFactory 
= config.buildSessionFactory();
        }

        
catch(Throwable e)
        
{
            
throw new ExceptionInInitializerError(e);
        }

    }

    
    
public static final ThreadLocal session = new ThreadLocal();
    
    
public static Session currentSession() throws HibernateException
    
{
        Session s 
= (Session)session.get();
        
//Open a new Session,if this Thread has none yet
        if(s == null || !s.isOpen())
        
{
            s 
= sessionFactory.openSession();
            session.set(s);
        }

        
return s;
    }

    
    
public static void closeSession() throws HibernateException
    
{
        Session s 
= (Session)session.get();
        session.set(
null);
        
if(s != null)
            s.close();
    }


}

设计控制类
package hibernate.servlet;
/**
 * 
@author fengyan
 * date  2007-01-09 02:44
 * 设计Hibernate控制类
 
*/

import hibernate.HibernateUtil;
import hibernate.PO.TRegister;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;

public class RegisterServlet extends HttpServlet {

    
private static final String CONTENT_TYPE = "text/html;charset=GBK";
    
public void init() throws ServletException {
        
// Put your code here
    }

    
public void destroy() {
        
super.destroy(); // Just puts "destroy" string in log
        
// Put your code here
    }


    
    
public void doGet(HttpServletRequest request, HttpServletResponse response)
            
throws ServletException, IOException {

        response.setContentType(CONTENT_TYPE);
        request.setCharacterEncoding(
"GBK");
        
        PrintWriter out 
= response.getWriter();
        
        String userName 
= request.getParameter("userName");
        String userPwd 
= request.getParameter("userPwd");
        String sex 
= request.getParameter("sex");
        
int age = Integer.parseInt(request.getParameter("age"));
        
        TRegister rg 
= new TRegister();
        rg.setAge(age);
        rg.setSex(sex);
        rg.setUserName(userName);
        rg.setUserPwd(userPwd);
        
        Session session 
= HibernateUtil.currentSession();//生成Session实例
        Transaction tx = session.beginTransaction();
        
        
try
        
{
            session.save(rg);    
//保存持久类对象
            tx.commit();        //提交到数据库
            session.close();
            response.sendRedirect(
"registerOK.jsp");
        }

        
catch(HibernateException e)
        
{
            e.printStackTrace();
            tx.rollback();
        }

        
    }


    
public void doPost(HttpServletRequest request, HttpServletResponse response)
            
throws ServletException, IOException {
        doGet(request,response);
        
    }




}


编译----->打包----->运行----->OK!
深入理解Hibernate:Java持久层框架的全面指南 Hibernate是一个强大的ORM(对象关系映射)框架,它通过将Java对象与数据库表进行映射,简化了数据库操作。无论是简单的CRUD操作,还是复杂的事务管理,Hibernate都提供了强大的支持。本文将深入探讨Hibernate的核心概念、配置、映射、查询、缓存以及高级特性,帮助你全面掌握Hibernate的使用方法。 阅读详情

相关推荐

java框架-hibernate

hibernate是一款orm(orm:object relationg mapping. 对象关系映射)框架其主要作用是在编程中,把面向对象的概念跟数据库中表的概念对应起来hibernate官网http://hibernate.org/hibernate文档http://hibernate.org/orm/documentation/5.4/操作数据库的时候,可以以面向对象的方式来完成.不需要书写SQL语句。

qq_24018193的博客 1354

Hibernate框架【一】——HIbernate框架介绍

Hibernate是一个开源的Java对象关系映射(ORM)框架,它提供了一种方便的方式将Java对象与关系型数据库进行映射和交互。通过Hibernate,开发人员可以使用面向对象的方式操作数据库,而不需要直接编写SQL查询语句。

理想主义的花最终会盛开在浪漫主义的土壤里,我的热情永远不会熄灭在现实的平凡之中,我们终将上岸,阳光万里。 1万+

费斯托SPAN压力传感器的调试

本体为压力传感器,检测气压大小,通过设置参数,在上电上气时对气压进行判断,进而通过自身逻辑的判断,控制传感器的通断,进而控制机械部位的工作与运行;通电之后为如下图所示的样子有三个按键ABEdit键(编辑键、确认键)两步即可轻松连接。

大小曲奇的博客 1万+

ORM框架Hibernate框架的使用以及搭建方式

持久层ORM框架Hibernate框架的使用以及搭建方式 前言 hibernate的概念: hibernate是一个ormapping框架(ORM框架,全自动ORM框架) hibernate是一个数据库的操作框架即持久层框架 Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库(SQL语句由Hibernate根据对象自动生成)。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户

zhx__的博客 6074

Hibernate框架学习

Hibernate是封装了JDBC的一种开放源代码的ORM(Object Relational Mapping,对象关系映射)框架,使程序员可以用面向对象的思想操作数据库。

YuanLuo0911的博客 2017

Hibernate入门第一讲——Hibernate框架的快速入门

Hibernate框架介绍什么是Hibernate我们可以从度娘上摘抄这样有关Hibernate的介绍: Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。Hibernate可以

李阿昀的博客 12万+

Hibernate 框架入门

一、Hibernate框架介绍 什么是Hibernate 我们可以从度娘上摘抄这样有关Hibernate的介绍: Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。Hi...

热心网友 5万+

Hibernate框架 简述

Hibernate 全自动全映射ORM框架,旨在消除sql,是一个持久层的ORM框架 1)、基础概念 DAO(Data Accessor Object):实现数据访问和业务逻辑分离 POIO(Plain Ordinary Java Object):不包含业务逻辑代码的值对象 PO:Persistent Object VO:Value Object DTO:Data Transfer Object ...

qq_41891805的博客 499

Hibernate框架

Hibernate框架 1、简介 Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用。 hibernate是一个ORM框架。 ORM的全拼是Object

weixin_45764675的博客 858

Java框架Hibernate框架

什么是框架? 答:可以完成一部分功能的半成品项目 JavaEE三层架构 Web Service Dao 5种框架: SSH: Spring + Struts2 + Hibernate SSM: Spring + SpringMVC + MyBatis

littleblog的博客 954

Hibernate框架搭建

1.什么是框架 框架就是一个半成品的项目,我们书写项目可以从半成品开始写, 这样能够大大提高开发效率。 不必纠结于框架本身的实现,只要学会如何使用这个框架即可。 2.什么是Hibernate框架 这个框架应用于DAO(数据化持久层)层 ORM:Object Relactional Mapping  关系对象映射 实体类和数据库表之间建立了联系,通过操作对象,直接对数据库进行修改。 ...

MOOD 1533

hibernate框架

一. 什么是hibernate ORM框架/持久层框架object reference mapping) ORM ORM(Object-Relationship-Mapping):是对象关系映射的意思,它是一种思想,是指将数据库中的每一行数据用对象的形式表现出来。 JPA JPA(Java-Persistence-API):是Java持久化接口的意思,它是JavaEE关于ORM思想的一套标准接口,仅仅是一套接口,不是具体的实现。 通过管理对象来改变数据库中的数据, 通过管理对象来操作数..

qq_61659383的博客 834

java hibernate框架搭建_Hibernate框架搭建

这是电虫第一次使用博客进行记录自己的学习历程,有不足之处希望大家多加指正,嘻嘻嘻…Pass:很多人都说hibernate已经不怎么用了,因为有了更多的框架让大家更加方便使用,但是电虫还是学习一下,因为这个框架毕竟经历过这么久的时间检验,在用于学习方面的话还是有可取之处的,电虫认为学习一下hibernate应该会让自己对于框架的认知有更全面的认知,而且能学会hibernate难道还学不会其他的框架(...

weixin_29582919的博客 280
上一篇: Hibernate框架核心组件
下一篇: Hibernate 表关系描述之ManyToMany
jefferykk
博客等级 码龄19年 3粉丝 48原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值