Hibernate框架的讲解

2018-06-18 02:54:32来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

一、ORM技术

ORM:Obejict Relation Mapping,对象关系映射。ORM技术可以建立对象与数据库之间的关系。它可以通过对象来访问数据库。目前市场有:Hibernate、MyBateis、TopLink、EJB等等

二、Hibernate框架

 Hibernate是目前市场上最流行的ORM框架之一。

它的优点

 1)Hibernate使用面向对象的方式来访问数据库;

 2)Hibernate的查询性能更好;

 3)Hibernate可以在不同的数据库之间进行切换,因此可移植性更强;

在实际使用中,Hibernate是属于Dao层技术。

  2.1Hibernate的下载和安装

Hibernate的官网:http://www.sourceforge.net

下载完成后直接压缩。它的目录结果:

documention:保存Hibernate的API文档;

lib:保存Hibernate相关的jar包

project:保存Hibernate项目的源文件

 2.2第一个Hibernate例子

 第一步:导入jar包

把lib/required目录下所有jar包复制到工程中。除此以外,还要把数据库的驱动包复制到工程中。

第二步:创建表

 1 CREATE TABLE `cst_customer` (
 2   `cust_id` BIGINT(32) NOT NULL AUTO_INCREMENT COMMENT '客户编号(主键)',
 3   `cust_name` VARCHAR(32) NOT NULL COMMENT '客户名称(公司名称)',
 4   `cust_source` VARCHAR(32) DEFAULT NULL COMMENT '客户信息来源',
 5   `cust_industry` VARCHAR(32) DEFAULT NULL COMMENT '客户所属行业',
 6   `cust_level` VARCHAR(32) DEFAULT NULL COMMENT '客户级别',
 7   `cust_address` VARCHAR(128) DEFAULT NULL COMMENT '客户联系地址',
 8   `cust_phone` VARCHAR(64) DEFAULT NULL COMMENT '客户联系电话',
 9   PRIMARY KEY (`cust_id`)
10 ) ENGINE=INNODB DEFAULT CHARSET=utf8;

第三步:创建实体类

实体类就是符合JavaBeen的规范的类

 编写JavaBeen的规范

1)把成员属性私有化;

2)为每个成员属性提供setter和getter方法

3)提供无参的构造函数;

4)建议实现Serializable接口;

public class Customer implements Serializable {
    
    private Integer custId;//客户编号
    private String custName;//客户名称
    private String source;//客户信息的来源
    private String industry;//客户所在的行业;
    private String level;//客户的等级
    private String address;//联系地址
    private String phone;//联系电话
    public Integer getCustId() {
        return custId;
    }
    public void setCustId(Integer custId) {
        this.custId = custId;
    }
    public String getCustName() {
        return custName;
    }
    public void setCustName(String custName) {
        this.custName = custName;
    }
    public String getSource() {
        return source;
    }
    public void setSource(String source) {
        this.source = source;
    }
    public String getIndustry() {
        return industry;
    }
    public void setIndustry(String industry) {
        this.industry = industry;
    }
    public String getLevel() {
        return level;
    }
    public void setLevel(String level) {
        this.level = level;
    }
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
    public String getPhone() {
        return phone;
    }
    public void setPhone(String phone) {
        this.phone = phone;
    }
}

第四步:配置实体类与数据库表的映射关系

在实体类所在包下新建一个Customer.hbm.xml的映射文件

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE hibernate-mapping PUBLIC
 3     "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
 4     "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
 5 <!-- package属性:指定实体类的包名 -->
 6 <hibernate-mapping package="com.enter.dome">
 7   <!-- class用来配置实体类与数据库表的映射关系 
 8      name:类名
 9      table:实体类所对应的表
10   -->
11   <class name="Customer" table="cst_customer">
12     <!-- 配置实体类的ID与主键的映射关系
13         name:实体类的属性名
14         column:表的子段名
15      -->
16      <id name="custId" column="cust_id">
17        <!-- 主键的自增方式 -->
18        <generator class="identity"/>
19      </id>
20      <!-- 配置实体类成员属性与字段的关系 -->
21      <property name="custName" column="cust_name"/>
22      <property name="source" column="cust_source"/>
23      <property name="industry" column="cust_industry"/>
24      <property name="level" column="cust_level"/>
25      <property name="address" column="cust_address"/>
26      <property name="phone" column="cust_phone"/>
27   </class>
28 
29 </hibernate-mapping>

第五步:创建Hibernate核心配置文件

把hibernate/project/etc目录下的hibernate.cfg.xml拷贝项目的src目录下。

然后修改文件,设置hibernate的配置信息。详细的配置信息可以参考hibernate.properties文件中的配置。

 1 <!--
 2   ~ Hibernate, Relational Persistence for Idiomatic Java
 3   ~
 4   ~ License: GNU Lesser General Public License (LGPL), version 2.1 or later.
 5   ~ See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
 6   -->
 7 <!DOCTYPE hibernate-configuration PUBLIC
 8     "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
 9     "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
10 
11 <hibernate-configuration>
12     <session-factory>
13          <!-- 配置数据库的方言 -->
14          <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
15          <!-- 配置数据库的驱动 -->
16          <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
17          <!-- 数据库驱动 -->
18          <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/jun1</property>
19          <!-- 用户名 -->
20          <property name="hibernate.connection.username">root</property>
21          <!-- 密码 -->
22          <property name="hibernate.connection.password">entor</property>
23          <!-- 是否显示SQL语句 -->
24         <property name="show_sql">true</property>
25         <!-- 指定映射文件的位置 
26         <mapping resource="com/entor/doction/Customer.hbm.xml"/>-->
27         <mapping class="com.enter.dome.Customer"/>
28     </session-factory>
29 </hibernate-configuration>

 

第六步:使用Hibernate提供的API访问数据库

Session:提供了一些访问数据库的方法。例如:save()、update()、delete() 、get()等等。每次访问数据库都应该创建一个Session。

SessionFactory:Session的工厂类,它负责产生Session对象。当服务器启动的时候创建该对象即可。也就是说,该只需要创建一次。

Configuration:代表Hibernate的配置。它的作用:1)加载配置文件;2)创建SessionFactory对象

 1 public class HelloWorld {
 2     public static void main(String[] args) {
 3         Configuration configuration=new Configuration();
 4         configuration.configure();
 5         SessionFactory factory=configuration.buildSessionFactory();
 6         Session session=factory.openSession();
 7         Customer customer=new Customer();
 8         //Transaction tx=session.beginTransaction();
 9         
10         customer.setCustName("陈骏金111");
11         session.save(customer);
12         //tx.commit();
13         session.close();
14         /*Transaction tx=session.beginTransaction();
15         customer.setCustId(1);
16         customer.setCustName("陈骏金11");
17         session.update(customer);
18         tx.commit();
19         session.close();*/
20     }
21 
22 }

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:js日常笔记

下一篇:spring MVC 后台token防重复提交解决方案