Hibernate框架基础使用

一简介

  1  什么是Hibernatel框架?


  Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装.简单来说就是基于持久层的框架

  2 .那么什么又是对象的持久化呢?


 

3.ORM和Hibernate概念  

    ORM:Object Realation Mapping对象关系映射。
   ORM的思想:将关系数据库中表中的记录映射成为对象,以对象的形式展现,程序员可以把对数据库的操作转化为对对象的操作。 
   ORM解决什么问题? 
       存储:能否把对象的数据直接保存到数据库 
       获取:能够直接从数据库拿到一个对象  Hibernate与ORM的关系? Hibernate是ORM的实现!  
       Hibernate:  一个开源大代码的对象关系映射框架 对JDBC进行了非常轻量级的对象封装 对JavaBean对象和数据库的表建立对应关系

二Hibernate的第一个案例

1 .准备 Hibernate 环境

导入 Hibernate 必须的 jar 包:





2.写对象的实体类和映射


 

<?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">
   <hibernate-mapping package="com.eduask.chp.bean">
    <class name="User" table="userinfo">
        <!-- 主键 ,映射-->
        <id name="userID" column="userID">
            <!-- <generator class="native"/> -->
        </id>
        <!-- 非主键,映射 -->
        <property name="loginName" column="loginName"></property>
        <property name="loginPass" column="loginPass"></property>
    </class>



3.写hibernatel.cfg.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD//EN"
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <!--数据库连接配置-->
        <property name="connection.url">jdbc:mysql://localhost:3306/user</property>
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="connection.username">root</property>
        <property name="connection.password">root</property>
        <!--数据库方言-->
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
        <!-- DB schema will be updated if needed -->
         <property name="hibernate.show_sql">true </property> //显示sql语句
         <property name="hibernate.format_sql">true </property>//是否将 SQL 转化为格式良好的 SQL 
         <property name="hbm2ddl.auto">create</property> 
        <!--加载所有映射-->
        <mapping resource="user.hbm.xml"/>
    </session-factory>
</hibernate-configuration>

  <property name="hbm2ddl.auto">create</property> 
hbm2ddl.auto:该属性可帮助程序员实现正向工程, 即由 java 代码生成数据库脚本, 进而生成具体的表结构. 。取值 create | update | create-drop | validate
create : 会根据 .hbm.xml  文件来生成数据表, 但是每次运行都会删除上一次的表 ,重新生成表, 哪怕二次没有任何改变 
create-drop : 会根据 .hbm.xml 文件生成表,但是SessionFactory一关闭, 表就自动删除 
update : 最常用的属性值,也会根据 .hbm.xml 文件生成表, 但若 .hbm.xml  文件和数据库中对应的数据表的表结构不同, Hiberante  将更新数据表结构,但不会删除已有的行和列 
validate : 会和数据库中的表进行比较, 若 .hbm.xml 文件中的列在数据表中不存在,则抛出异常


4测试使用结果

public class Test {
public static void main(String[] args) {
Configuration cfg=new Configuration().configure("hibernatel.cfg.xml");
//SessionFactory factory=cfg.buildSessionFactory();//注意这个虽然能使用但是已经过时了,目前用的是这样

ServiceRegistry serviceRegistry=new ServiceRegistryBuilder().applySettings(cfg.getProperties()).buildServiceRegistry();

SessionFactory factory=cfg.buildSessionFactory(serviceRegistry);

Session session=factory.openSession();
User u=(User) session.get(User.class, 1);
       System.out.println(u);//获得第一个用户
      Transaction ts=session.beginTransaction();
      session.update(new User(1,"刘德华","ldh"));//修改
      User u=(User) session.get(User.class, 1);
      session.delete(u);//删除
      session.save(new User(1,"张学友","zxy"));//添加
       ts.commit();
      session.close();
      factory.close();//如果出现连接超时错误,请重启数据库
    
}
}

分析测试结果:

1.Configuration接口

Configuration接口负责配置并启动Hibernate,创建SessionFactory对象。在Hibernate的启动的过程中,Configuration类的实例首先定位映射文档位置、读取配置,然后创建SessionFactory对象。

2.Transaction(事务)

代表一次原子操作,它具有数据库事务的概念。所有持久层都应该在事务管理下进行,即使是只读操作。 
  Transaction tx = session.beginTransaction();
常用方法:
commit():提交相关联的session实例
rollback():撤销事务操作
wasCommitted():检查事务是否提交

3.Session 接口

持久化类与 Session 关联起来后就具有了持久化的能力。
Session 类的方法:
取得持久化对象的方法: get() load()
持久化对象都得保存,更新和删除:save(),update(),saveOrUpdate(),delete()
开启事务: beginTransaction().
管理 Session 的方法:isOpen(),flush(), clear(), evict(), close()等



1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值