Hibernate入门

Posted AlphaJunS

tags:

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

1、Hibernate概述

Hibernate是一个开放源代码的对象关系映射(ORM, Object Relation Mapping)框架,是一个轻量级的JavaEE应用的持久层解决方案,它对JDBC进行了非常轻量级的封装,使得Java程序员可以使用面向对象编程的思维来操作数据库。

2、Hibernate开发步骤

  1. 下载Hibernate所需的运行环境
  2. 创建数据库表结构
  3. 搭建Hibernate开发环境,包括导入mysql驱动包、Hibernate相关包(注解包、hibernate核心包、xml解析包等)、日志包等
  4. 编写JavaBean实体类
  5. 创建类与表的映射
  6. 编写Hibernate核心配置文件
  7. 测试配置

3、简单测试案例

创建数据库表结构

 1 Create database hibernate_day01;
 2         Use hibernate_day01;
 3         CREATE TABLE `cst_customer` (
 4           `cust_id` bigint(32) NOT NULL AUTO_INCREMENT COMMENT 客户编号(主键),
 5           `cust_name` varchar(32) NOT NULL COMMENT 客户名称(公司名称),
 6           `cust_user_id` bigint(32) DEFAULT NULL COMMENT 负责人id,
 7           `cust_create_id` bigint(32) DEFAULT NULL COMMENT 创建人id,
 8           `cust_source` varchar(32) DEFAULT NULL COMMENT 客户信息来源,
 9           `cust_industry` varchar(32) DEFAULT NULL COMMENT 客户所属行业,
10           `cust_level` varchar(32) DEFAULT NULL COMMENT 客户级别,
11           `cust_linkman` varchar(64) DEFAULT NULL COMMENT 联系人,
12           `cust_phone` varchar(64) DEFAULT NULL COMMENT 固定电话,
13           `cust_mobile` varchar(16) DEFAULT NULL COMMENT 移动电话,
14           PRIMARY KEY (`cust_id`)
15         ) ENGINE=InnoDB AUTO_INCREMENT=94 DEFAULT CHARSET=utf8;

编写JavaBean实体类

 1 package com.alphajuns.domain;
 2 
 3 public class Customer {
 4     /*`cust_id` bigint(32) NOT NULL AUTO_INCREMENT COMMENT ‘客户编号(主键)‘,
 5       `cust_name` varchar(32) NOT NULL COMMENT ‘客户名称(公司名称)‘,
 6       `cust_user_id` bigint(32) DEFAULT NULL COMMENT ‘负责人id‘,
 7       `cust_create_id` bigint(32) DEFAULT NULL COMMENT ‘创建人id‘,
 8       `cust_source` varchar(32) DEFAULT NULL COMMENT ‘客户信息来源‘,
 9       `cust_industry` varchar(32) DEFAULT NULL COMMENT ‘客户所属行业‘,
10       `cust_level` varchar(32) DEFAULT NULL COMMENT ‘客户级别‘,
11       `cust_linkman` varchar(64) DEFAULT NULL COMMENT ‘联系人‘,
12       `cust_phone` varchar(64) DEFAULT NULL COMMENT ‘固定电话‘,
13       `cust_mobile` varchar(16) DEFAULT NULL COMMENT ‘移动电话‘,*/
14     
15     private Long cust_id;
16     private String cust_name;
17     private Long cust_user_id;
18     private Long cust_create_id;
19     private String cust_source;
20     private String cust_industry;
21     private String cust_level;
22     private String cust_linkman;
23     private String cust_phone;
24     private String cust_mobile;
25     
26     public Long getCust_id() {
27         return cust_id;
28     }
29     public void setCust_id(Long cust_id) {
30         this.cust_id = cust_id;
31     }
32     public String getCust_name() {
33         return cust_name;
34     }
35     public void setCust_name(String cust_name) {
36         this.cust_name = cust_name;
37     }
38     public Long getCust_user_id() {
39         return cust_user_id;
40     }
41     public void setCust_user_id(Long cust_user_id) {
42         this.cust_user_id = cust_user_id;
43     }
44     public Long getCust_create_id() {
45         return cust_create_id;
46     }
47     public void setCust_create_id(Long cust_create_id) {
48         this.cust_create_id = cust_create_id;
49     }
50     public String getCust_source() {
51         return cust_source;
52     }
53     public void setCust_source(String cust_source) {
54         this.cust_source = cust_source;
55     }
56     public String getCust_industry() {
57         return cust_industry;
58     }
59     public void setCust_industry(String cust_industry) {
60         this.cust_industry = cust_industry;
61     }
62     public String getCust_level() {
63         return cust_level;
64     }
65     public void setCust_level(String cust_level) {
66         this.cust_level = cust_level;
67     }
68     public String getCust_linkman() {
69         return cust_linkman;
70     }
71     public void setCust_linkman(String cust_linkman) {
72         this.cust_linkman = cust_linkman;
73     }
74     public String getCust_phone() {
75         return cust_phone;
76     }
77     public void setCust_phone(String cust_phone) {
78         this.cust_phone = cust_phone;
79     }
80     public String getCust_mobile() {
81         return cust_mobile;
82     }
83     public void setCust_mobile(String cust_mobile) {
84         this.cust_mobile = cust_mobile;
85     }
86     
87     @Override
88     public String toString() {
89         return "Customer [cust_id=" + cust_id + ", cust_name=" + cust_name + ", cust_user_id=" + cust_user_id
90                 + ", cust_create_id=" + cust_create_id + ", cust_source=" + cust_source + ", cust_industry="
91                 + cust_industry + ", cust_level=" + cust_level + ", cust_linkman=" + cust_linkman + ", cust_phone="
92                 + cust_phone + ", cust_mobile=" + cust_mobile + "]";
93     }
94     
95 }

编写映射配置文件

 1 1 <?xml version="1.0" encoding="UTF-8"?>
 2  2 <!DOCTYPE hibernate-mapping PUBLIC 
 3  3     "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
 4  4     "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
 5  5 <hibernate-mapping>
 6  6     
 7  7     <!-- 配置类和表结构的映射 name:JavaBean类的全路径名 table:表名 -->
 8  8     <class name="com.alphajuns.domain.Customer" table="cst_customer">
 9  9         <!-- 配置id name:JavaBean成员属性 column:表主键字段 -->
10 10         <id name="cust_id" column="cust_id">
11 11             <!-- 主键生成策略 native表示采用本地策略 -->
12 12             <generator class="native" />
13 13         </id>
14 14         
15 15         <!-- 配置其它属性 -->
16 16         <property name="cust_name" column="cust_name" />
17 17         <property name="cust_user_id" column="cust_user_id" />
18 18         <property name="cust_create_id" column="cust_create_id" />
19 19         <property name="cust_source" column="cust_source" />
20 20         <property name="cust_industry" column="cust_industry" />
21 21         <property name="cust_level" column="cust_level" />
22 22         <property name="cust_linkman" column="cust_linkman" />
23 23         <property name="cust_phone" column="cust_phone" />
24 24         <property name="cust_mobile" column="cust_mobile" />
25 25     </class>
26 26 </hibernate-mapping>

 

编写Hibernate核心配置文件

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE hibernate-configuration PUBLIC
 3     "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
 4     "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
 5     
 6 <hibernate-configuration>
 7     <!-- 先配置SessionFactory 一个数据库对应一个SessionFactory -->
 8     <session-factory>
 9     
10         <!-- 必须配置项5个,数据库驱动、url、用户名、密码、数据库的方言 -->
11         <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
12         <property name="hibernate.connection.url">jdbc:mysql:///hibernate_day01</property>
13         <property name="hibernate.connection.username">root</property>
14         <property name="hibernate.connection.password">root</property>
15         
16         <!-- 数据库的方言 指明为某种数据库特有 -->
17         <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
18         
19         <!-- 可选配置项 -->
20         <!-- 在控制台显示SQL语句 -->
21         <property name="hibernate.show_sql">true</property>
22         <!-- 格式化sql语句 -->
23         <property name="hibernate.format_sql">true</property>
24         <!-- 生成数据库的表结构 update:没有表时创建表,表存在时,直接对表进行更新 -->
25         <property name="hibernate.hbm2ddl.auto">update</property>
26         
27         <!-- 引入映射配置文件 分隔符为/ -->
28         <mapping resource="com/alphajuns/domain/Customer.hbm.xml" />
29         
30     </session-factory>
31 </hibernate-configuration>

测试配置

 1 package com.alphajuns.test;
 2 
 3 import org.hibernate.Session;
 4 import org.hibernate.SessionFactory;
 5 import org.hibernate.Transaction;
 6 import org.hibernate.cfg.Configuration;
 7 import org.junit.Test;
 8 
 9 import com.alphajuns.domain.Customer;
10 
11 /*
12  * 测试hibernate框架
13  */
14 public class Demo {
15 
16     @Test
17     public void test1() {
18         /*
19          * 1、加载配置文件
20          * 2、创建SessionFactory对象,生成Session对象
21          * 3、创建Session对象
22          * 4、开启事务
23          * 5、编写保存的代码
24          * 6、提交事务
25          * 7、释放资源
26          */
27         // 1、加载配置文件
28         Configuration config = new Configuration();
29         // 默认加载src目录下的hibernate.cfg.xml
30         config.configure();
31         // 2、创建SessionFactory对象
32         SessionFactory factory = config.buildSessionFactory();
33         // 3、创建Session对象
34         Session session = factory.openSession();
35         // 4、开启事务
36         Transaction tr = session.beginTransaction();
37         // 5、编写保存的代码
38         Customer c = new Customer();
39         c.setCust_name("中国移动");
40         c.setCust_level("2");
41         c.setCust_mobile("10086");
42         // 保存对象,操作对象就相当于在操作表
43         session.save(c);
44         // 6、提交事务
45         tr.commit();
46         // 7、释放资源
47         session.close();
48         factory.close();
49     }
50     
51 }

 

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

hibernate多对多 一对多 及简单入门

hibernate框架的简单入门

Hibernate简述及入门实例

推荐net开发cad入门阅读代码片段

Hibernate入门

Hibernate入门