Hibernate框架(一)

(一:)Hibernate是一个持久层开源的,轻量级的,对象关系映射的框架,让程序员养成面向对象编程的思想,它是对JDBC的封装

(二:)关于它工作的流程如下所示:

           (1)加载核心配置文件和ORM映射文件

           (2)获取sessionfactory的工厂对象

           (3)获取操作数据的session对象

           (4)开启事务

           (5)操作数据

           (6)提交事务

           (7)关闭资源

(三)首先我们需要利用Maven工具去创建项目,然后导入依赖(需要注意一个坐标问题)

(四)创建Hibernate的核心配置文件

<?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">org.gjt.mm.mysql.Driver</property>
        <property name="hibernate.connection.password">root</property>
        <property name="hibernate.connection.url">jdbc:mysql:///day2</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>      
        <!-- 核心配置的修改,要想在工具类中使用本地线程,需要在配置文件中添加此项配置 -->
        <property name="hibernate.current_session_context_class">thread</property>
        <!-- 此处是打印SQL语句的命令,但是你想要去打印,容易丢的东西true -->
         <property name="hibernate.show_sql">true</property>
         <property name="hibernate.format_sql">true</property>
        <!--  格式化的方式打印SQL -->
         <mapping resource="com/qf/pojo/Car.hbm.xml"/>
    </session-factory>
</hibernate-configuration>

(五)创建实体类(包含属性及set和get方法),且创建ORM思想的配置文件(**.hbm.xml)

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<!-- Generated 2017-8-30 8:23:25 by Hibernate Tools 5.2.1.Final -->
<hibernate-mapping>
<!-- name为实体类的路径     table为数据库表的表名 -->
    <class name="com.qf.pojo.Tch" table="tch" catalog="hibernate" optimistic-lock="version">
        <!-- 主键 -->
        <id name="tid" type="java.lang.Integer">
            <column name="tid" />
            <!-- 关于主键的生成方式,请看下边的内容 -->
            <generator class="identity" />
        </id>
        <!-- 对应的实体类的属性名和在数据库中字段的字段名 -->
        <property name="tchName" type="string">
            <column name="tch_name" length="100" />
        </property>
        <property name="tchSex" type="string">
            <column name="tch_sex" length="100" />
        </property>
    </class>
</hibernate-mapping>

(六)将核心的配置文件加载到Hibernate.cfg.xml中,利用的是mapping这一个节点

(七)可以进行一次测试(关于实体类以及实体类的配置文件可以利用反向工程区自动生成)

在数据库中没有表的情况下,可以利用节点

<property name="hibernate.hbm2ddl.auto">update</property>

关于UPDATE建议使用这个,还有其他的几种类型的参数

关于测试的代码如下

public static void main(String[] args) {
		//加载配置
		Configuration configure = new Configuration().configure("hibernate.cfg.xml");
		//得到
		SessionFactory sessionFactory = configure.buildSessionFactory();
		//初始化表

	}
此处如果有兴趣可以写一个工具类,一个数据库只需要一个工厂就可以了,即sessionfactory是线程安全的

(八)现在已经完成了配置,现在就可以进行基本的CRUD操作了(这些操作是利用工具类写的)

想要利用Threadlocal,就需要在配置文件中添加一个节点

<!-- 核心配置的修改,要想在工具类中使用本地线程,需要在配置文件中添加此项配置 -->
        <property name="hibernate.current_session_context_class">thread</property>

//添加数据
      public void addBookIf(BookInfo bookinfo){
    	  Session session = Hibernate.getSession();
    	  Transaction transaction = session.beginTransaction();
    	  Serializable save = session.save(bookinfo);
    	  transaction.commit();
    	  session.close();
      }   
  public void findById(long id){
    	  //查找数据
    	  Session session = Hibernate.getSession();
    	  BookInfo info = session.load(BookInfo.class, id);  
    	  System.out.println(info.getBookType().getTypeName());
      }
 public void upBookIf(BookInfo bookinfo){
    	  //更新数据
    	  Session session = Hibernate.getSession();
    	  Transaction beginTransaction = session.beginTransaction();
    	  session.update(bookinfo);
    	  beginTransaction.commit();
    	  session.close();
      }
 public void delBookIf(BookInfo bookinfo){
    	  //删除数据
    	  Session session = Hibernate.getSession();
    	  Transaction transaction = session.beginTransaction();
    	  session.delete(bookinfo);
    	  transaction.commit();
    	  session.close();
      }







           

         

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值