关闭

hibernate--2.基本流程

150人阅读 评论(0) 收藏 举报
分类:

 

1      搭建hibernate环境(xml方式)

1.1        第一步 导入hibernate的jar包

hibernate-release-5.2.8.Final\lib\required

hibernate-release-5.2.8.Final\lib\jpa-metamodel-generator

因为使用hibernate时候,有日志信息输出,hibernate本身没有日志输出的jar包,导入其他日志的jar包

不要忘记还有mysql驱动的jar包,加些数据库连接池,c3p0也不会错

 

 

1.2        第二步 创建实体类

Javabean

•       提供一个无参的构造器

•       提供一个标识属性

•       为类的持久化类字段声明访问方法(get/set)

•       使用非 final .

•       重写 eqauls hashCode 方法

 

       使用hibernate时候,不需要自己手动创建表,hibernate帮把表创建

 

1.3        第三步 配置实体类和数据库表一一对应关系(映射关系)

使用配置文件实现映射关系

(1)创建xml格式的配置文件

       映射配置文件名称和位置没有固定要求

       建议:在实体类所在包里面创建,实体类名称.hbm.xml

(2)配置是是xml格式,在配置文件中首先引入xml约束

       学过约束dtd、schema,在hibernate里面引入的约束dtd约束

(3)配置映射关系

 

<hibernate-mapping>
   <!-- 1.配置类和表的对应
      name属性:实体类全路径  table属性:数据库表名称
    -->
   <class name="hibernate.entity.User" table="t_user">
      <!-- 配置实体类id 和表 id 对应
            hibernate要求实体类有一个属性唯一值;表有字段作为唯一值
         name属性:实体类里面id属性名称
         column属性:生成的表字段名称
       -->
        <id name="uid"type="int">
            <column name="UID"/>
            <!-- 设置数据库表id增长策略
            native:生成表id值就是主键自动增长
         -->
            <generator class="native"/>
        </id>
       
        <!-- 配置其他属性和表字段对应
         name属性:实体类属性名称      column属性:生成表字段名称
      -->
        <property name="username"type="java.lang.String">
            <column name="username"/>
        </property>
       
        <property name="password"type="java.lang.String">
            <column name="password"/>
        </property>
        <property name="address"type="java.lang.String">
            <column name="address"/>
        </property>
   </class>
</hibernate-mapping> 

1.4        第四步 创建hibernate的核心配置文件

(1)核心配置文件格式xml,但是核心配置文件名称和位置固定的

       位置:必须src下面

       名称:必须hibernate.cfg.xml

(2)引入dtd约束

(3)hibernate操作过程中,只会加载核心配置文件,其他配置文件不会加载

第一部分: 配置数据库信息 必须的

<!-- 第一部分:配置数据库信息必须的 -->
      <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
      <property name="hibernate.connection.url">jdbc:mysql:///hibernate_1</property>
      <property name="hibernate.connection.username">root</property>
      <property name="hibernate.connection.password">root</property>

第二部分: 配置hibernate信息 可选的

<!-- 第二部分:配置hibernate信息可选的 -->
         <!-- 输出底层sql语句 -->
      <property name="hibernate.show_sql">true</property>
         <!-- 输出底层sql语句格式 -->
      <property name="hibernate.format_sql">true</property>
         <!-- hibernate帮创建表,需要配置之后 update: 如果已经有表,更新,如果没有,创建 -->
      <property name="hibernate.hbm2ddl.auto">update</property>
         <!-- 配置数据库方言在mysql里面实现分页关键字 limit,只能使用mysql里面
		在oracle数据库,实现分页rownum
		让hibernate框架识别不同数据库的自己特有的语句 -->
      <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> 

第三部分: 把映射文件放到核心配置文件中

<mapping resource="hibernate/entity/User.hbm.xml" />

2      实现添加操作

@Test
   public void testAdd() {
      //第一步加载hibernate核心配置文件
      /**
       * 在hibernate里面封装类,到src下面找到名称是hibernate.cfg.xml
       */
      Configurationcfg = newConfiguration().configure();
     
      //第二步创建SessionFactory对象
      /**
       * 读取hibernate核心配置文件内容,创建sessionFactory在过程中,
       * 根据映射关系,在配置数据库里面把表创建
       */
      SessionFactorysessionFactory = cfg.buildSessionFactory();
     
      //第三步使用SessionFactory创建session对象
      /**
       *  类似于连接
       */
      Sessionsession = sessionFactory.openSession();
 
      //第四步开启事务
      Transactiontx = session.beginTransaction();
     
      //第五步写具体逻辑 crud操作
      /**
       * 添加功能
       */
      Useruser = newUser();
      user.setUsername("老兰");
      user.setPassword("123");
      user.setAddress("北京");
      session.save(user);
     
      //第六步提交事务
      tx.commit();
 
      //七步关闭资源
      session.close();
      sessionFactory.close();
   }

看到效果:

(1)是否生成表

(2)看表是否有记录

 

3      基本流程

3.1        图解

 

3.2        代码演示

3.2.1      创建 Hibernate 配置文件

开始新建文件:

 

文件名:hibernate.cfg.xml

<session-factory>
        <!-- 用户名 -->   
        <property name="connection.username">root</property>   
         <!--  密码 -->
        <property name="connection.password">root</property>
       <!--数据库驱动 -->
       <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
       <!--数据库连接URL -->
       <property name="connection.url">jdbc:mysql:///myfirst?useUnicode=true&characterEncoding=UTF-8</property>
       <!-- 方言 -->
       <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
        <!-- 打印SQL语句 -->
        <property name="show_sql">true</property>
        <!-- 格式化sql语句 -->
        <property name="format_sql">true</property>
        <!-- 自动生成数据表 -->
        <property name="hbm2ddl.auto">create</property>
</session-factory>

方言:

org.hibernate.dialect.MySQLDialect  或者5.0 以上 org.hibernate.dialect.MySQL5InnoDBDialect

 

3.2.2      创建持久化 Java 类

 

Javabean

 

•       提供一个无参的构造器

•       提供一个标识属性

•       为类的持久化类字段声明访问方法(get/set)

•       使用非 final 类.

•       重写 eqauls 和 hashCode 方法

 

 

3.2.3      创建对象-关系映射文件

 

选中Javabean然后new,一直下一步,知道完成,会自动生成

 

还需修改一下:主键生成策略

<id name="id"type="java.lang.Integer">
            <column name="ID" />
            <!-- 指定主键的生成方式, native: 使用数据库本地方式 -->
            <generator class="native" />
        </id> 

通过 HibernateAPI 编写访问数据库的代码

在hibernate.cfg.xml关联实体类:

 

3.2.4      测试类    --创建表,并加入数据

使用 Hibernate 进行数据持久化操作的步骤:

(1)编写持久化类: POJO + 映射文件

(2)获取 Configuration 对象

(3)获取 SessionFactory 对象

(4)获取 Session,打开事务

(5)用面向对象的方式操作数据库

(6)关闭事务,关闭 Session

public class HibernateTest {
 
       @Test
       publicvoid test() {
             
              System.out.println("test...");
             
              //1.创建一个SessionFactory 对象
              SessionFactorysessionFactory = null;
             
                     //1).创建Configuration 对象: 对应 hibernate 的基本配置信息和 对象关系映射信息
              Configurationconfiguration = new Configuration().configure();
             
                     //2).创建一个ServiceRegistry 对象: hibernate4.x 新添加的对象
              //hibernate的任何配置和服务都需要在该对象中注册后才能有效.
              ServiceRegistryserviceRegistry =
                            newServiceRegistryBuilder().applySettings(configuration.getProperties())
                                                        .buildServiceRegistry();
             
                     //3).
              sessionFactory= configuration.buildSessionFactory(serviceRegistry);
             
              //2.创建一个 Session 对象
              Sessionsession = sessionFactory.openSession();
             
              //3.开启事务
              Transactiontransaction = session.beginTransaction();
             
              //4.执行保存操作
              Newsnews = new News("Java", "ATGUIGU", new Date(newjava.util.Date().getTime()));
              session.save(news);
              System.out.println("test4");
              //5.提交事务
              transaction.commit();
             
              //6.关闭 Session
              session.close();
             
              //7.关闭SessionFactory 对象
              sessionFactory.close();
       }
      
}

 

源码文件:http://download.csdn.net/detail/qq_26553781/9727124

 

 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:29315次
    • 积分:2407
    • 等级:
    • 排名:第16913名
    • 原创:222篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条