02Hibernate入门

  1. 搭建环境
    1. 导入hibernate所需要的jar包
    2. 创建实体类:javabean
       1 package cn.kispine.entity;
       2 
       3 public class User {
       4     //hibernate中需要实体类中有一个属性值最为唯一值
       5     private int id;
       6     private String username;
       7     private String password;
       8     private String address;
       9     public int getId() {
      10         return id;
      11     }
      12     public void setId(int id) {
      13         this.id = id;
      14     }
      15     public String getUsername() {
      16         return username;
      17     }
      18     public void setUsername(String username) {
      19         this.username = username;
      20     }
      21     public String getPassword() {
      22         return password;
      23     }
      24     public void setPassword(String password) {
      25         this.password = password;
      26     }
      27     public String getAddress() {
      28         return address;
      29     }
      30     public void setAddress(String address) {
      31         this.address = address;
      32     }
      33 }
      View Code
    3. 创建数据库创建表【其实不需要手动创建表,hibernate可以根据配置文件中的对应关系自动创建表】
    4. 配置数据库与实体的类的一一对应关系(映射关系)
        • 使用配置文件实现映射关系
        • 创建xml格式的配置文件【配置文件的名称和位置没有特殊要求,建议:在实体类包下创建,名称为实体类名.hbm.xml】
        • 在xml文件中引入约束
          1 <!DOCTYPE hibernate-mapping PUBLIC 
          2     "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
          3     "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     <!-- 1、配置实体类与表对应 -->
           8         <!-- class标签、name属性:实体类的全路径、table属性:数据库表名称 -->
           9     <class name="cn.kispine.entity.User" table="tab_users">
          10         <!--2、配置实体类中的唯一字段id与数据库的id对应 -->
          11             <!-- name属性:实体类中字段名称、column:生产的表的字段名称 -->
          12         <id name="id" column="uid">
          13             <!-- 3、配置数据库表主键的增长策略 :native:自动增长,-->
          14             <generator class="native"></generator>
          15         </id>
          16         
          17         <!-- 4、配置其他属性和字段的对应关系 -->
          18         <property name="username" column="username"></property>
          19         <property name="password" column="password"></property>
          20         <property name="address" column="address"></property>
          21     </class>
          22 </hibernate-mapping>
    5. 创建hibernate核心配置文件【位置必须在src目录下,名称必须为hibernate.cfg.xml】
      • 引入约束
        <!DOCTYPE hibernate-configuration PUBLIC
            "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
            "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
      • 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 <!-- 可参考hibernate.propertities文件 -->
         6 <hibernate-configuration>
         7     <session-factory>
         8         <!-- 1、配置数据库信息 -->
         9         <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        10         <property name="hibernate.connection.url">jdbc:mysql:///hibernate</property>
        11         <property name="hibernate.connection.username">root</property>
        12         <property name="hibernate.connection.password">root</property>
        13         
        14         <!-- 2、配置hibernate信息 可有可无-->
        15         <!-- 是否输出底层sql -->
        16         <property name="hibernate.show_sql">true</property>
        17         <!-- sql语句是否格式化 -->
        18         <property name="hibernate.format_sql">true</property>
        19         <!-- 配置是否自动创建表:update:表如果存在则进行更新,不存在就创建表 -->
        20         <property name="hibernate.hbm2ddl.auto">update</property>
        21         <!-- 配置数据库方言 让hibernate能够识别不同数据库特有的语句 -->
        22         <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
        23         
        24         <!-- 3、将映射文件放到核心配置文件中 -->
        25         <mapping resource="cn/kispine/entity/User.hbm.xml"/>
        26     </session-factory>
        27 </hibernate-configuration>
  2. 添加操作实现 
    1. 第一步:加载hibernate核心配置文件
      1 Configuration cfg = new Configuration();
      2 cfg.configure();
    2. 第二步:创建sessionFactory对象
      1 SessionFactory sessionFactory = cfg.buildSessionFactory();
    3. 第三步:使用sessionFactory对象创建session对象
      Session session = sessionFactory.openSession();
    4. 第四步:开启事务
      Transaction tx= session.beginTransaction();
    5. 第五步:写具体逻辑CRUD操作
      1 User user = new User();
      2 user.setAddress("天津市东丽区东五道");
      3 user.setPassword("kispine");
      4 user.setUsername("Kispine");
      5         
      6 session.save(user);
    6. 第六步:提交事务
      1 tx.commit();
    7. 第七步:关闭释放资源
      1 session.close();
      2 sessionFactory.close();
       1 package cn.kispine.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 cn.kispine.entity.User;
      10 
      11 public class Demo {
      12     @Test
      13     public void testHibernateAdd() {
      14         //第一步:加载hibernate核心配置文件
      15         Configuration cfg = new Configuration();
      16         cfg.configure();
      17         //第二步:创建sessionFactory对象
      18         SessionFactory sessionFactory = cfg.buildSessionFactory();
      19         //第三步:使用sessionFactory对象创建session对象
      20         Session session = sessionFactory.openSession();
      21         //第四步:开启事务
      22         Transaction tx= session.beginTransaction();
      23         //第五步:写具体逻辑CRUD操作
      24         User user = new User();
      25         user.setAddress("天津市东丽区东五道");
      26         user.setPassword("kispine");
      27         user.setUsername("Kispine");
      28         
      29         session.save(user);
      30         //第六步:提交事务
      31         tx.commit();
      32         //第七步:关闭释放资源
      33         session.close();
      34         sessionFactory.close();
      35     }
      36 }
      View Code
原文地址:https://www.cnblogs.com/kispine/p/8734940.html