Hibernate学习资料整理-1

在进入Hibernate学习之前我们先来回顾一下JDBC的开发。
JDBC是SUN公司为统一对数据库的操作,定义的一套java操作数据库的规范。
基本的JDBC应用步骤
1)注册一个 Driver
2)建立一个到数据库的连接
3)创建一个statement / PreparedStatement(这个更好)
3)执行SQL语句
4)处理结果
5)关闭JDBC对象
public void insert(){
		try {
			//1.连接数据库
			Class.forName("com.mysql.jdbc.Driver");
			String url = "jdbc:mysql://127.0.0.1:3306/j1206";
			Connection con = DriverManager.getConnection(url,"root","root");
			//准备sql语句
			String sql = " insert into tb_user(name,password) values('谢霆锋','123') ";
			//2. 获取Statment
			Statement stm = con.createStatement();
			//3. 发送sql
			int result = stm.executeUpdate(sql);
			stm.close();
			con.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
只记得初学JDBC的时候这样的步骤就是复制粘贴复制粘贴.....好了,还是接着继续整理整理Hibernate的笔记吧。
关系型数据库与面向对象的冲突
面向对象是从软件工程基本原则(如耦合,聚合,封装)的基础上发展起来的,而关系数据库则是从数学理论发展而来的,两套理论存在显著的区别。而java语言是完全面向对象语言,这种冲突就越发的明显了。
对目前的J2EE信息化系统而言,通常采用面向对象分析和面向对象设计的过程。系统从需求设计到系统设计都是按面向对象方式进行。但到了详细设计阶段,由于数据持久化需要保存到关系数据库,不得不自底向上修改设计方案,又回到了按照过程进行编程的老路上来了,这是非常令人沮丧的。
ORM介绍:
ORM的全称是Object/Relation Mapping,即对象/关系映射。
ORM也可以理解是一种规范,具体的ORM框架可作为应用程序和数据库的桥梁。
面向对象程序设计语言与关系数据库发展同步时,需要一种中间解决方案,ORM框架就是这样的解决方案。
ORM不是一种具体的产品,而是一类框架的总称,它概述了这类框架的基本特征:
1)完成面向对象的程序设计语言到关系数据库的映射。
2)基于ORM框架完成映射后,既可利用面向对象程序语言的简单易用性,又可利用关系数据库的技术优势。
Hibernate介绍:(Hibernate-4.1.9)
Hibernate是目前最流行的ORM框架之一,它是一个面向Java环境的对象/关系数据库映射工具。
Hibernate采用低浸入式的设计,即完全采用普通的Java对象,而不必继承Hibernate的某个超类或实现Hibernate的某个接口。Hibernate是面向对象的程序设计语言和关系数据库之间的桥梁,真正实现了开发者采用面向对象的方式来操作关系数据库。
Hibernate的目录结构:

开发环境搭建:
1.导入jar包

2.创建一个需要持久化的类,并对应配置 *.hbm.xml 文件。(下面以Person类为例)
import java.util.Date;
/**
 * 普通的javabean ,需要进行持久化的类
 * 需要注意:
 *  1:通常这个类需要有一个 id ,一般建议使用封装类型
 *  2:这个类不能是final修饰的
 *  3:需要给这个类提供一个无参的构造器
 *  4:需要给所有的属性提供getting/setting方法
 */
public class Person {


  private Integer id;


  private String name;
  private int password;
  private Date birthday;
  
  public Person(){
   
  }
  /** getter  setter method*/
}
  △持久化配置文件--Person.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping SYSTEM "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd" >
<!-- 本文件就是一个java对象到关系数据库的映射配置文件 -->
<hibernate-mapping package="org.jay.bean">
  <!-- class配置类对应数据库表的映射配置 
       name 表示要进行持久化类的类名
       table 表示类持久化后在数据库中的表名
  --> 
  <class name="Person" table="t_person">
     <!-- id指定Person类中那个属性是id -->
     <id name="id">
        <!-- id的生成策略 -->
        <generator class="identity"/>
     </id>
     <!-- Person 类的其他属性配置
          name 对应类的属性
          column 在数据库表中所取的字段名(如果没有设置column将使用name的值创建对应的列名)
      -->
     <property name="name" column="t_name"/>
     <property name="password" column="t_password"/>
     <property name="birthday"/>
  </class>
</hibernate-mapping>
3.配置hibernate.cfg.xml文件
<!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>
    <!--是否显示执行的SQL语句>
    <property name="show_sql">true</property>
    <!-- 驱动 -->
    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>    
    <!-- 数据库url /// 可以表示本机 -->
    <property name="hibernate.connection.url">jdbc:mysql:///hibernate_db</property>
    <!-- 访问数据库用户名 -->
    <property name="hibernate.connection.username">root</property>
    <!-- 密码当然要啦 -->
    <property name="hibernate.connection.password">root</property>
    <!--  方言(为了更好的操作具体的数据库)-->
    <property name="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>
    <!-- 
        自动创建表结构配置
        create-drop 在程序启动的时候创建对应数据库表结构,当SessionFactory关闭的时候会将创建的表结构删除
        create 在每次程序启动的时候先删除上次创建的数据库表结构,然后再创建对应新数据库表结构。
        update 在每次启动的时候会追加修改的表结构,但是不会影响原来的数据(通常用这个)
        validate 在每次启动的时候会验证并修改的表结构
    -->
    <property name="hibernate.hbm2ddl.auto">update</property>
    <!-- 嘿嘿!千万不要忘了这一步。引入对应的需要进行持久化类的配置文件(可以引入多个要进行持久化操作的配置文件) -->
    <mapping resource="org/jay/bean/Person.hbm.xml">
  </session-factory>
</hibernate-configuration>
4.好了,基本上就是这样子了。下面上个测试类 (⊙o⊙)
package org.jay.fuck;
import org.jay.bean.Person;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;


/**
 * hibernate入门实例
 */
public class fuck{


  public static void main(String[] args) {
   //创建Configuration 实例并加载配置文件(hibernate.cfg.xml)
   Configuration config = new Configuration().configure();
   //通过Configuration 获得 SessionFactory(获得对应的需要操作的数据库的配置信息)
   //SessionFactory 是与应用程序生命周期一致的是在多个线程之间共享的
   //config.buildSessionFactory(); 是hibernate 4 之前的写法
   SessionFactory sf = config.buildSessionFactory();
   //通过sessionfactory获得session(一次数据库的交互)
   Session session = sf.openSession();
   //在使用Hibernate进行增删改操作的时候涉及到了事务
   Transaction t = session.beginTransaction();
   //创建需要进行持久化的java对象
   Person p = new Person();
   p.setName("尼玛");
   p.setPassword(1278);
   p.setBirthday(new Date();
   
   //使用hibernate面向对象的方式进行持久化
   //session.save(p);
   session.persist(p);
  
   //提交事务
   t.commit();
   //关闭session
   session.close();
   sf.close();
  }
}                                                                                                                                                         
OK
就这样了,第一次发表文章,是对之前求学期间一些资料,笔记的整理,如有什么错漏,还望大家海涵,也希望大家不吝赐教!感激不尽!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值