hibernate工作使用必备。一起学习

引言

hibernate虽然现在使用范围不是很广,但依然很多历史企业在使用,甚至有些功能不能不替代。本篇文章从工作原理、优势讲解、下载安装、程序示例进行展示。欢迎大家学习探讨!

一、hibernate概念

1.1、了解概念前先知道ORM(hibernate是ORM框架的一种)ORM全程是(object relation maping)即对象关系映射。

对象关系映射:如今流行的数据库如oracle、mysql确是关系型数据库。我们使用编程语言访问数据库数据时必然需要做一些转换。而ORM框架能够自动地帮我们完成这一步。ORM是通过使用描述对象和数据库之间映射的元数据,将java程序中的对象自动持久化到关系数据库中。

1.2、 什么是hibernate

ORM框架hibernate帮我们做的就是将映射为数据表,我们的最终目的是对数据库的操作,可我们利用hibernate框架的话,只要实例化类的对象,对对象进行操作,框架能帮我们映射后对数据库的记录进行增删改查的操作。

二、使用与不使用hibernate有何区别

例如:实现对数据库 User表的增删改查工作。

1.1、不使用hibernate情况

第一步需要创建在数据库里面创建一个用户表。

第二部需要在代码里面创建用户表创建一个持久实体类。

第三部需要在代码里面持久类编写一个DAO底层数据访问类。

第四步写业务逻辑层代码。

可以想到以上的工作量主要是在数据访问层 UserDAO类的编写,但是我们如果使用了hibernate框架的一切就变得简单起来了。

1.2、使用hibernate情况

前提配置好hibernate框架。

package com.hibernate.DAO;

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

import com.hibernate.entity.User;

public class UserDAO {
	public User user;
	public UserDAO(User user){
		this.user=user;
	}
    //增
	public void save(){
		 // 下面方法默认加载hibernate.cfg.xml文件  
		 Configuration conf = new Configuration().configure();// 以Configuration创建SessionFactory   
		 SessionFactory sf = conf.buildSessionFactory(); 	  // 创建Session 
		 Session sess = sf.openSession();  			 		  // 开始事务  
		 Transaction tx = sess.beginTransaction();            // 创建消息实例  
		 sess.save(user);  									  // 保存用户到数据库
		 tx.commit();  		                                  // 提交事务  
		 sess.close();  		                              // 关闭Session 
		 sf.close();  
	}
    //改
	public void update(){
		 // 下面方法默认加载hibernate.cfg.xml文件  
		 Configuration conf = new Configuration().configure();// 以Configuration创建SessionFactory   
		 SessionFactory sf = conf.buildSessionFactory(); 	  // 创建Session 
		 Session sess = sf.openSession();  			 		  // 开始事务  
		 Transaction tx = sess.beginTransaction();            // 创建消息实例  
		 sess.update(user); 								  // 更新用户到数据库
		 tx.commit();  		                                  // 提交事务  
		 sess.close();  		                              // 关闭Session 
		 sf.close();  
	}
    //删
	public void delete(){
		 // 下面方法默认加载hibernate.cfg.xml文件  
		 Configuration conf = new Configuration().configure();// 以Configuration创建SessionFactory   
		 SessionFactory sf = conf.buildSessionFactory(); 	  // 创建Session 
		 Session sess = sf.openSession();  			 		  // 开始事务  
		 Transaction tx = sess.beginTransaction();            // 创建消息实例  
		 sess.delete(user);  								  // 删除用户到数据库
		 tx.commit();  		                                  // 提交事务  
		 sess.close();  		                              // 关闭Session 
		 sf.close();  
	}
    //查
    public User find(){
		 // 下面方法默认加载hibernate.cfg.xml文件  
		 Configuration conf = new Configuration().configure();// 以Configuration创建SessionFactory   
		 SessionFactory sf = conf.buildSessionFactory(); 	  // 创建Session 
		 Session sess = sf.openSession();  			 		  // 开始事务  
		 Transaction tx = sess.beginTransaction();            // 创建消息实例  
		 User u =(User)sess.get(User.class,user.getId());	  //通过id 查找用户							  
		 tx.commit();  		                                  // 提交事务  
		 sess.close();  		                              // 关闭Session 
		 sf.close();  
		 return u;
	}
}

三、hibernate使用流程

3.1、hibernate 开发包的下载

Hibernate. Everything data.这个链接是下载官网。

  

3.2安装hibernate开发包

解压下载好的开发包,将开发包lib文件夹里的,requied、jpa子文件夹中的jar包复制到WEB-INF\lib目录下。

选择Build Path|Configure Biuld Path... 选项。

选择ADD external Jars,在对话框中依次指定requied、jpa文件夹的位置,点击打开按钮。

至此hibernate开发包安装完成。

 

 

 将数据库的驱动也要安装在工程中。步骤和上述hibernate开发包类似

3.3、编写使用

第一步创建数据库 user表、编写User类。步骤和上述类似

第二步编写映射文件 User.hbm.xml(hibernate 要做的就是将实体类的对象映射为数据库表的记录。我们先要用XML文件告诉hibernate这种映射关系).

该XML文件一般和实体类放在一个目录下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">   
<hibernate-mapping>  
	<!-- com.hibernate.entity.User类映射为 数据库的User表-->
	<!--name指定实体类类名	table指定数据库表名-->
    <class name="com.hibernate.entity.User" table="User">  
    	<!--user类的id属性映射为user表的u_id字段  类型为整型-->
    	<!--因为“id”属性对应的“u_id”字段是表的主键所以 XML文件中用id元素描述-->
        <id name="id" column="u_id" type="java.lang.Integer">  
            <generator class="increment"></generator>  
        </id> 
         <!-- 其他属性对应表的普通字段 XML文件中用 property 元素描述-->
         <!-- name指定实体类的属性,column指定数据库 表的字段-->
        <property name="name" column="u_name" type="java.lang.String" >
        </property>  
        <property name="phone" column="u_phone" type="java.lang.String" >
        </property> 
        <property name="password" column="u_password" type="java.lang.String" >
        </property>
        <property name="type" column="u_type" type="java.lang.String" >
        </property> 
    </class>  
</hibernate-mapping> 

第三步编写映射文件 Hibernate.cfg.xml(Hibernate.cfg.xml用来告诉hibernate框架和数据库的链接和运行时各个属性的值。)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC  
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"  
    "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">   
<hibernate-configuration>  
    <session-factory>  
        <!-- 指定连接数据库所用的驱动 -->  
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>  
        <!-- 指定连接数据库的url,hibernate连接的数据库名 -->  
        <property name="connection.url">jdbc:mysql://localhost:3306/SSH</property>   
        <!-- 指定连接数据库的用户名 -->  
        <property name="connection.username">root</property>  
        <!-- 指定连接数据库的密码 -->  
        <property name="connection.password">wstz5461.</property>   
        <!-- 指定数据库方言 -->  
        <!--<property name="dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>-->  
        <property name="dialect">org.hibernate.dialect.MySQLDialect</property>  
          
        <!-- 根据需要自动创建数据表 -->  
        <property name="hbm2ddl.auto">update</property>  
        <!-- 显示Hibernate持久化操作所生成的SQL -->  
        <property name="show_sql">true</property>  
        <!-- 将SQL脚本进行格式化后再输出 -->  
        <property name="hibernate.format_sql">true</property>  
        <!-- 罗列所有的映射文件 -->  
        <mapping resource="com/hibernate/entity/User.hbm.xml"/>  
    </session-factory>  
</hibernate-configuration> 

第四步编写数据访问层UserDAO类和业务逻辑层UserService类

写个测试自己试一试吧。此框架技术比较历史性,本人也是工作需要涉及学习。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值