hibertnate首次使用

目标

创建一个名为test的数据库,表名是category,里面有id 和name 列名。 表的用途是记录商品分类。(category的中文意思是类别)

所需jar包,以及版本号

新建一个javaBean

配置Category.hbm.xml (hbm既hibertnate mapping的意思,这样容易记住)

在包zsc.czy.pojo下 新建一个配置文件Category.hbm.xml, 用于映射Category类对应数据库中的category表(即使现在数据库表那边还没建表也无所谓,它会使用这个表名)
注: 文件名 Category.hbm.xml C一定要大写,要和类保持一致

<class name="Category" table="category">

表示类Category对应表category

<id name="id" column="id">
  <generator class="native">
  </generator>
</id>

表示属性id,映射表里的字段id

意味着id的自增长方式采用数据库的本地方式

====================================

<property name="name" />

这里配置的时候,只写了属性name,没有通过column="name" 显式的指定字段,那么字段的名字也是name.(即是说Category里的name成员属性,默认指定数据库category表里的名为name的那列)

=====================================
如果上面那个声明没加,会报Caused by: org.xml.sax.SAXParseException; lineNumber: 4; columnNumber: 43; cvc-elt.1: 找不到元素 'hibernate-mapping' 的声明。

配置 hibernate.cfg.xml

在src目录下创建 hibernate.cfg.xml
配置访问数据库要用到的驱动,url,账号密码等等
其他配置及含义:

<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
这表示使用MYSQL方言。 什么方言呢? 因为在代码层面,开发人员不用关心底层到底用Oracle还是Mysql,写的代码都是一样的。 可是Oracle和Mysql所用的sql语句的语法是有所区别的,那么这件事就交给Hibernate来做了。这个时候就需要告诉Hibernate底层用的是什么数据库,它才知道应该用什么样的“方言” 去对话。

<property name="current_session_context_class">thread</property>
这是Hibernate事务管理方式,即每个线程一个事务

<property name="show_sql">true</property>
这表示是否在控制台显示执行的sql语句

==============================================

<property name="hbm2ddl.auto">update</property>
这表示是否会自动更新数据库的表结构,有这句话,其实是不需要创建表的,因为Hibernate会自动去创建表结构

===================================================

<mapping resource="zsc/czy/pojo/Category.hbm.xml" />

这表示Hibernate会去识别Category这个实体类

=================================================

测试类 TestHibernate

创建一个Product对象,并通过hibernate把这个对象,插入到数据库中

运行TestHibernate.java,数据库成功插入了一个新表

观察下建文件的结构

总结

应用程序通过Hibernate把 一个 Category对象插入到数据库的category表中

hibernate.cfg.xml 配置文件提供链接数据库的基本信息
账号 密码 驱动 数据库ip 端口 以及 配置映射资源XXXX.hbm.xml

Category.hbm.xml 提供对象与表的映射关系
对应哪个表? 什么属性,对应什么字段

hibernate和mybatis 的文件映射关系是非常相近的。

posted @ 2018-04-17 16:47  Pororo  阅读(316)  评论(0编辑  收藏  举报