【Hibernate学习笔记】hibernate入门

1.Hibernate是什么java

Hibernate是一个轻量级的ORMapping对象。主要用来实现Java和数据库表之间的映射,除此以外还提供数据查询和数据获取的方法,能够大幅度减小开发时人工使用SQL和JDBC处理数据的时间,解放编程人员95%的任务。mysql

如下是Hibernate的特征(对应规则):sql

(1).类和表的对应数据库

(2).类的属性和表的字段对应编程

(3).类的实例和表中的具体一条记录对应缓存

(4).一个类对应多个表,一个表也能够对应多个类安全

(5).DB中的表能够没有主键,可是Object中必须设置主键字段session

(6).DB中表与表之间的映射成Object之间的关系app

(7).Object中属性个数以及属性名称能够和DB中表的字段数目以及字段名称不一致ide

                                                Object和DB的工做原理:

                           

 

 

2.Hibernate有什么

Hibernate将应用层从底层的JDBC/JTA API中抽象出来,而让Hibernate去处理

                                                   Hibernate体系结构

                     

 

 ·SessionFactory:针对单个数据库映射关系通过编译后的内存镜像,是线程安全的的(不可变),它是生成Session的工厂。

 ·Session:表示应用程序层与持久存储层之间的交互操做的一个单线程对象,此对象声明周期很短,隐藏了JDBC的链接,也是Transaction工厂。

 ·Transaction:应用程序用来指定原子操做单元范围的对象,它是单线程的,生命周期很短。它经过抽象将应用程序从底层具体的JDBC,JTA,CORBA事物隔离开。

 ·ConnectionProvider:生成JDBC链接的工厂(有数据库链接池的做用),经过抽象将应用从底层的DataSource或者DriverManager隔离开,供开发者使用。

 ·TransactionFactory:生成Transaction的工厂,供开发者使用。

 

3.Hibernate入门:Hello World

咱们将完成如下的四个操做:Object,数据库表,两种配置文件,客户端程序调用Hibernate接口。

第一步:建立工程,将hibernate-release中lib下的required下面的包所有jar包以及slf4j-log4j12-1.5.8.jar,log4j-1.2.16.jar以及JDBC驱动包导入工程下的lib目录

 

第二步: Object类,有一下几个字段:uuid,userId,name,age

 1 package com.hb;
 2 
 3 public class UserModel {
 4     private String uuid;
 5     private String userId;
 6     private String name;
 7     private int age;
 8     public UserModel() {
 9         // TODO Auto-generated constructor stub
10     }
11     public String getUuid() {
12         return uuid;
13     }
14     public void setUuid(String uuid) {
15         this.uuid = uuid;
16     }
17     public String getUserId() {
18         return userId;
19     }
20     public void setUserId(String userId) {
21         this.userId = userId;
22     }
23     public String getName() {
24         return name;
25     }
26     public void setName(String name) {
27         this.name = name;
28     }
29     public int getAge() {
30         return age;
31     }
32     public void setAge(int age) {
33         this.age = age;
34     }
35 }

 

 

第三步:建立数据库的表(使用的是mysql数据库)

第四步:配置***.cfg.xml文件

(1).缺省的名字是hibernate.cfg.xml

(2).将文件存放到classe跟s目录下,开发中将其存放在src的根目录下便可。

(3).主要配置如下的四个部分:

     1.与DB的链接

     2.可选的配置

     3.资源文件配置

     4.二级缓存

(4).配置以下:

<!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="hibernate.show_sql">true</property>
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="connection.url">jdbc:mysql://localhost:3306/test</property>
        <property name="connection.username">root</property>
        <property name="connection.password">tangjie</property>
        <property name="connection.pool_size">2</property>
        <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
        <property name="show_sql">true</property>

        <!-- 添加影射文件 -->
        <mapping resource="com/hb/UserModel.hbm.xml" />
        
    </session-factory>
</hibernate-configuration>

 

第五步:配置***.hbm.xml

(1).与被描述的类同名,如:UserModel.hbm.xml

(2).存放位置与所描述类存放在同一文件夹下

(3).主要有以下四部分配置:

     1.类和表的映射

     2.主键的映射

     3.类的属性和DB字段的映射

     4.关系的映射

     5.配置以下:

<?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>
    <class name="cn.javass.h4.hello.UserModel" table="tbl_user">
        <id name="uuid">
            <generator class="assigned" />
        </id>
        <property name="userId"></property>
        <property name="name"></property>
        <property name="age"></property>
    </class>
</hibernate-mapping>

第六步:编写客户端类

 1 package com.hb;
 2 
 3 import org.hibernate.Session;
 4 import org.hibernate.SessionFactory;
 5 import org.hibernate.Transaction;
 6 import org.hibernate.cfg.Configuration;
 7 
 8 public class Client {
 9 
10     public static void main(String[] args) {
11         // 读取hibernate.cfg.xml文件,建立Session工厂
12         SessionFactory sf = new Configuration().configure()
13                 .buildSessionFactory();
14 
15         Session s = null;
16         Transaction t = null;
17 
18         try {
19             // 准备数据
20             UserModel um = new UserModel();
21             um.setUuid("1");
22             um.setUserId("id1");
23             um.setName("name1");
24             um.setAge(1);
25             // 得到session对象
26             s = sf.openSession();
27             t = s.beginTransaction();
28             s.save(um);
29             t.commit();
30         } catch (Exception err) {
31             t.rollback();
32             err.printStackTrace();
33         } finally {
34             s.close();
35         }
36     }
37 }

 

运行结果如图所示:

 

 

到这里,咱们完成了第一个Hibernate的案例,学会最基础的用法。后续学习笔记会持续更新...

 

 ·