Hibernate入门和基本操作

2019-08-16  本文已影响0人  理以周

1、整体知识体系:

image.png

1.1 web回顾:

1.2 MVC思想:分层操作,不是java中独有的

1.3 Hibernate概述:

jdbc代码
//加载驱动
class.forName("com.mysql.jdbc.Driver");
//创建连接
Connection conn= DriverManager.getConnection(url,username.password);
//对sql进行预编译操作
String sql="select * from user";
PreparedStatement psmt=conn.preparedStatement(sql);
//执行sql 查询sql
ResultSet re=psmt.executeQuery();
//遍历结果集
......
//释放资源

1.4 Hibernate入门:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><!-- 引入公共的dtd约束 -->
        
<hibernate-mapping>      <!-- 配置 -->
    <!-- 1配置类和表对应
        class标签
        name属性:实体类全路径
        table属性:数据表名称
         -->
    
    <class name="cn.itcast.entity.User" table="t_user" >
    <!-- 2配置实体类id和表id对应
        hibernate要求实体类有一个属性唯一值
        hibernate要求表有字段作为唯一值
         -->
         <!-- id标签
            name属性:实体类里面id属性名称
            column属性:生成的表字段名称
             -->
         <id name="uid" column="uid">       <!--一般两者一样  -->
         <!-- 设置数据表id的增长策略
                native:生成表id值就是主键自动增长
                 -->
         <generator class="native"></generator>
         </id>
         <!-- 配置其他属性和表字段的对应
                name属性:实体类名称
                column属性:生成表字段名称
                 -->
         <property name="username" column="username"></property>
         <property name="password" column="password"></property>
         <property name="address" column="address"></property>
    
    </class>

</hibernate-mapping>
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
    <!--第一部分:配置数据库信息必须要有的  -->
    <property name="hibernate.connection.driver_class">com.sql.jdbc.Driver</property>
    <property name="hibernate.connection.url">jdbc:sql:///hibernateday_01</property>
    <property name="hibernate.connection.username">root</property>
    <property name="hibernate.connection.password">root</property>
    
    <!--  第二部分:配置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.SQLDialect</property>
        
    
    <!-- 第三部分:把映射文件放到核心配置文件中这个部分是必须的,非常重要 -->
    <mapping resource="cn/itcast/entity/User.hbm.xml"/>
    </session-factory>
</hibernate-configuration>

实现添加操作:
第一步:加载hibernate核心配置文件;
第二步:创建SessionFactory对象;
第三步:使用SessionFactory创建session对象;
第四步:开启事务;
第五步:写具体逻辑crud操作;
第六步:提交事务;
第七部:关闭资源;
最终需要看到两个效果:(1)是否会帮我们生成那个表;(2)看表是否有记录;

package cn.itcast.hibernatetest;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.Test;

import cn.itcast.entity.User;

public class HibernateDemo {
    
    @Test
    public void testAdd() {
//          第一步:加载hibernate核心配置文件;
            //到src下面找到名称是hibernate.cfg.xml
            //在hibernate里面封装对象
            Configuration cfg = new Configuration();
            cfg.configure();
    
//          第二步:创建SessionFactory对象;
            //读取hibernate核心配置文件内容,创建sessionFactory
            //在这个过程中,根据映射关系,在配置数据库里面把表创建出来
             SessionFactory sessionFactory = cfg.buildSessionFactory();
        
//          第三步:使用SessionFactory创建session对象;
             //类似于连接
            Session session = sessionFactory.openSession();
                    
//          第四步:开启事务;
            Transaction tx = session.beginTransaction();
        
//          第五步:写具体逻辑crud操作;
            //添加功能
            User user = new User();
            user.setUsername("小王");
            user.setPassword("250");
            user.setAddress("日本");
            //调用session的方法实现添加
            session.save(user);
        
//          第六步:提交事务;
            tx.commit();
        
//          第七部:关闭资源;
            session.close();
            sessionFactory.close();
    }

}
上一篇 下一篇

猜你喜欢

热点阅读