Hibernate入门

Posted DeepSleeping丶

tags:

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

1.导包

导入Hibernate最基本的包(不要忘记导入数据库驱动包了!)

下载文件名为黄色框框中的名称的压缩包在对应路径下,有个required包下的所有包就是必备的基本包

 

2.建表

1 USE TEST;
2 DROP TABLE IF EXISTS customer;
3 
4 CREATE TABLE customer(
5     cust_id INT AUTO_INCREMENT PRIMARY KEY,
6     cust_name VARCHAR(30),
7     cust_gender VARCHAR(5),
8     cust_phone VARCHAR(20)
9 );

 

3.建实体类

 1 package deep.entity;
 2 
 3 import java.io.Serializable;
 4 
 5 /**
 6  * 用户实体类
 7  * @author DeepSleeping
 8  *
 9  */
10 public class Customer implements Serializable{
11     
12     private static final long serialVersionUID = 1L;
13     
14     private int cust_id;
15     private String cust_name;
16     private String cust_gender;
17     private String cust_phone;
18     
19     public int getCust_id() {
20         return cust_id;
21     }
22     public void setCust_id(int cust_id) {
23         this.cust_id = cust_id;
24     }
25     public String getCust_name() {
26         return cust_name;
27     }
28     public void setCust_name(String cust_name) {
29         this.cust_name = cust_name;
30     }
31     public String getCust_gender() {
32         return cust_gender;
33     }
34     public void setCust_gender(String cust_gender) {
35         this.cust_gender = cust_gender;
36     }
37     public String getCust_phone() {
38         return cust_phone;
39     }
40     public void setCust_phone(String cust_phone) {
41         this.cust_phone = cust_phone;
42     }
43 }

 

4.创建映射文件(Customer.hbm.xml)

  ①导入dtd文件约束

1 <!DOCTYPE hibernate-mapping PUBLIC
2     "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
3     "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

  ②导入本地dtd文件(这样就会有提示)

    1:window --> preferencrs --> xml --> xml catalog --> add
    2:location 选择 file system,然后选择你的本地dtd文件。(在下载的压缩包中搜索dtd也能找到)

    

 

 


    3:key type 选择uri。
    4:key 填入上述步骤中的"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"

  ③配置

    

 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     
 6 <hibernate-mapping>
 7     <!-- 建立类和表的一个映射关系 -->
 8     <!-- 
 9         class标签:用来建立类和表的映射
10             *name属性:类中的全路径
11             *table属性:表名(如果类名和表名是一致的,那么table属性可以省略)
12             *catalog属性:数据库名称,可以省略
13      -->
14      <class name="deep.entity.Customer" table = "customer">
15          <!-- 建立类中的属性与表中的主键的映射 -->
16          <!-- 
17              id标签:用来建立类中的属性与表中的主键字段对应
18                  *name属性:类中的属性名
19                  *column属性:表中字段名(如果类中的属性名和表中的一致,可以省略)
20                  *length属性:字段的长度
21                  *type属性:类型 Java数据类型,Hibernate数据类型(默认),SQL类型
22           -->
23          <id name = "cust_id" column = "cust_id">
24              <!-- 主键生成策略 -->
25              <generator class="native"></generator>
26          </id>
27          
28          
29          <!-- 建立类中的普通属性与表中的字段的映射 -->
30          <property name="cust_name" column="cust_name"/>
31          <property name="cust_gender" column="cust_gender"/>
32          <property name="cust_phone" column="cust_phone"/>
33          
34      </class>
35 </hibernate-mapping>

 

 

 

    

5.创建Hibernate的核心配置文件(hibernate.cfg.xml)

  在src目录下创建hibernate.cfg.xml文件

  与上述步骤一致,导入约束,导入本地

  

1 <!DOCTYPE hibernate-configuration PUBLIC
2     "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
3     "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

  

 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     <session-factory>
 8         <!-- 必要的配置信息:连接数据库的基本参数 -->
 9         <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
10         <property name="hibernate.connection.url">jdbc:mysql:///test</property>
11         <property name="hibernate.connection.username">root</property>
12         <property name="hibernate.connection.password">123456</property>
13         
14         <!-- Hibernate的属性 -->
15         <!-- Hibernate的方言:作用,根据配置的方言生成相应的SQL语句 -->
16         <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
17         <!-- Hibernate显示SQL语句: -->
18         <property name="hibernate.show_sql">true</property>
19         <!-- Hibernate格式化SQL语句(不然显示的就是一行,不方便阅读) -->
20         <property name="hibernate.format_sql">true</property>
21         <!-- Hibernate的hbm2ddl(数据定义语言:create drop alter ...) 属性 -->
22         <!-- 
23             hbm2ddl.auto的取值
24                 *none: 不用Hibernate自动生成表
25                 *create:每次都会创建一个新的表(测试)
26                 *create-drop:每次都会创建一个新的表,执行程序结束后删除这个表(测试)
27                 *update:如果数据库中有表,使用原来的表,如果没有表,创建一个新表,可以更新表结构
28                 *validate:只会使用原有的表,对映射关系进行校验
29          -->
30         <property name="hibernate.hbm2ddl.auto">update</property>
31         
32         
33         <!-- Hibernate加载映射 -->
34         <mapping resource="deep/entity/Customer.hbm.xml"/>
35     </session-factory>
36 </hibernate-configuration>

 

6.测试

  

 1 package deep.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 deep.entity.Customer;
10 
11 /**
12  * 使用Hibernate保存数据
13  * @author DeepSleeping
14  *
15  */
16 public class demo {
17 
18     @Test
19     public void save(){
20         
21         //1.加载配置文件
22         Configuration cfg = new Configuration().configure();
23         //2.创建一个SessionFactory
24         SessionFactory sessionFactory = cfg.buildSessionFactory();
25         //3.创建Session对象,Session对象类似Connection
26         Session session = sessionFactory.openSession();
27         
28         //4.开启事务
29         Transaction tx = session.beginTransaction();
30         
31         //5.执行相关操作
32         Customer customer = new Customer();
33         customer.setCust_name("Hibernate测试");
34         session.save(customer);
35         
36         //6.事务提交
37         tx.commit();
38         //7.释放资源
39         session.close();
40     }
41     
42     
43     
44     
45 }

 

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

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

hibernate框架的简单入门

Hibernate简述及入门实例

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

Hibernate入门

Hibernate入门