Hibernate学习笔记hibernate入门

Posted tangjiean

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hibernate学习笔记hibernate入门相关的知识,希望对你有一定的参考价值。

1.Hibernate是什么

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

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

(1).类和表的对应

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

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

(4).一个类对应多个表,一个表也可以对应多个类

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

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

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

                                                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的案例,学会最基础的用法。后续学习笔记会持续更新...

 

 ·

 

 

 

                                         

以上是关于Hibernate学习笔记hibernate入门的主要内容,如果未能解决你的问题,请参考以下文章

Hibernate入门笔记_01_hibernate配置

5Hibernate入门----青软S2SH(笔记)

Hibernate 学习笔记

hibernate学习笔记基础配置与jar包

Hibernate学习笔记 — Hibernate的查询

Hibernate学习笔记 — Hibernate的查询