Hibernate使用快速入门介绍

本文介绍了Hibernate框架的基本概念及其在Java EE项目中的应用。通过实例演示了如何配置环境、创建实体类及映射文件,并实现了基本的添加操作。

本文对Hibernate进行了一个快速入门,介绍如何使用,之后会对Hibernate进行进一步解析
##1.Hiberate 概述
###什么是框架
1.写程序,使用框架以后,帮我们实现一部分功能,使用框架好处:少写一部分
代码实现功能

###什么是Hibernate框架(重点)?

  1. hibernate框架是应用在javaee三层架构中dao层架构
  2. 在dao层里面作对数据库的crud操作,使用hibernate实现crud操作,hibernate 底层代码就是jdbc,hibernate对jdbc进行封装.
    使用hibernate好处:不需要写复杂的jdbc代码,不需要写sql语句实现
  3. hibernate是开源(免费的,源码随便看的)的轻量级(不需要很多jar包,不要其他什么东西)框架
  4. hibernate版本(3.x 4.x 5.x)

什么是orm思想

  1. hibernate使用orm思想对数据库进行crud操作

  2. 在web阶段用javabean,更正确的叫法 实体类

  3. orm(object relational mapping): 对象关系映射
    文字描述
    (1)让实体类和数据库表进行一一对应
    让实体类首先和数据库表对应
    让实体类属性 和 表里面字段对应
    (2)不需要直接操作数据库表,而操作表对应的实体类对象

               public class User{         ----------create table t_user(
                 private int uid;          ----------uid int,
                 private String username;  ---------username varchar(100),
                 private String password;  ---------password varchar(100)
                 //set and get...                 );
               }          
    

###Hibernate入门
####搭建ibernate环境
#####第一步 导入hibernate的jar包 lib\required lib\jpa
因为使用hibernate时,有日志信息输出,hibernate本身没有日志输出的jar包,导入其他日志的jar包 以及mysql驱动的jar包
#####第二步 创建一个实体类

  public class User {
                  	/* hibernate要求实体类有一个属性唯一的 */
                  	private int uid;
                  	private String username;
                  	private String password;
                  	private String address;
                  	public int getUid() {
                  		return uid; ...
                  	}   

ps:使用hibernate时,不需要自己手动创建表,hibernate会帮你创建
#####第三步 配置实体类和数据库表一一对应关系(映射关系)
使用配置文件实现映射关系
######(1)创建xml格式的配置文件
映射配置文件名称和位置没有固定要求建议,在实体类所在的包中创建:实体类名称.hbm.xml
这里写图片描述
######(2)配置是xml格式,在配置文件中首先映入xml约束
学过约束dtd,schema,在hibernate里面引入的约束:dtd约束
在hibernate-mapping-3.0.dtd文件中找到

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

######(3)配置映射关系

                   <hibernate-mapping>                     
                   	<!-- 1.配置类和表对应 
                   		class标签 :  name属性:实体类全路径   table属性:数据库表的名称
                   	-->
                     	<class name="cn.itcast.entity.User" 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-mapping>   
                        <class name="cn.itcast.entity.User" table="t_user">
                             	<id name="uid" column="uid">
                                    <generator class="native"></generator>
                              </id>
                              <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约束
在hibernate-configuration-3.0.dtd中
(3)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="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
                  		<property name="hibernate.connection.url">jdbc:mysql:///day12</property>
                  		<property name="hibernate.connection.username">root</property>
                  		<property name="hibernate.connection.password">124816qwert</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>

###实现添加操作
第一步 加载hibernate核心配置文件

      第二步 创建SessionFacrory对象
      
      第三步 使用SessionFactory创建 session对象
      
      第四步 开启事务
      
      第五步 写具体逻辑 crud操作
      
      第六步 提交事务
      
      第七步 关闭资源
            @Test
        	public void testAdd() {
        		// 第一步 加载hibernate核心配置文件
        		// 到src下面找到名称是hibernate.cfg.xml
        		// 在hibernate中封装对象
        		Configuration cfg = new Configuration();
        		cfg.configure();

        		// 第二步 创建SessionFacrory对象
        		// 读取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("123");
        		user.setAddress("成都");
        		// 调用session中的方法实现添加
        		session.save(user);
        
        		// 第六步 提交事务
        		tx.commit();
        		// 第七步 关闭资源
        		session.close();
        		sessionFactory.close();
        	}
      看到效果.
        (1)是否生成表
        (2)看表是否有记录

###Hibernate配置文件详解
hibernate映射配置文件

  1. 映射配置文件名称和位置没有固定要求
  2. 映射配置文件中,标签name属性值写实体类相关内容
  • (1) class标签的name属性值:属性值实体类全路径
  • (2) id标签和property标签name属性值:实体类属性名称
  1. id标签和property标签,column属性是可以省略的
  • (1) 不写值就和name属性值一样
  1. property标签的type属性,设置生成表字段的类型,自动对应类型

####hibernate核心配置文件
1.配置写位置要求


2.配置三部分要求
(1)数据库部分必须的
(2)hibernate部分可选的
(3)映射文件必须的
3.核心配置文件名称位置应是固定的
名称:src下面
位置:hibernate.cfg.xml

   Hibernate核心api
           configuration configuration cfg=new Configuration();
           cfg.configure();
            (1)到src下面找到名称为hibernate.cfg.xml配置文件,创建对象,把配置文件
             放到对象里面去(加载核心配置文件)         

####SessionFactory(重点)
#####1.使用configuration对象创建sessionFactory对象
(1)创建sessionFactory对象过程中做事情
根据核心配置文件中,有数据库配置,有映射文件部分,到数据库里面根据
映射关系把表创建
update
(有表更新,没表创建)

#####2.创建sessionFactory过程中,这个过程特别耗资源
(1)在hibernate操作中,建议一个项目一般创建一个sessionFactory对象

#####3.具体实现
(1)写工具类,写静态代码块实现
静态代码块在类加载时候执行,执行一次

                   public class HibernateUtils {
                  	static Configuration cfg = null;
                  	static SessionFactory sessionFactory = null;
                  	// 静态代码块实现
                  	//类中静态代码块只执行一次
                  	static {
                  		// 加载核心配置文件
                  		cfg = new Configuration();
                  		cfg.configure();
                  		sessionFactory = cfg.buildSessionFactory();
                  	}
                  
                  	// 提供方法返回sessionFactory
                  	public static SessionFactory getSessionFactory() {
                  		return sessionFactory;
                  
                  	}
                  }

####Session(重点)

  1. session类似于jdbc中的connection
  2. 调用session里面不同的方法实现crud操作
    (1)添加:save方法
    (2)修改:update方法
    (3)删除:delete方法
    (4)根据id查询:get方法
  3. session对象单线程对象
    (1)session 只能自己用,不能共用
    ####Transaction对象
  4. 开启事务
    Transaction tx=session.beginTransaction();
  5. 事务提交和回滚方法
    tx.commit();
    tx.rollback();
  6. 事务概念
    (1)事务四个特性
    原子性,一致性,隔离性,持久性

补充:解决配置文件没有提示的问题
1.可以上网就应该木问题
2.把约束文件引入到myeclipse中
Window---->preferences---->输入 xml calalog---->add—>
Location:
key type:URI
Key:http://www.hibernate.org/dtd/hibernate-mapping-3.0.dt

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值