配置文件中存放对象和表的对应关系,对象名对应着表名,对象的属性对应着表的列
就是这样的:
<!-- name:类名 table:对应的表名,如果不写,默认的表名就是类的简单名称 -->
<class name="User" table="t_user">
<id name="id" type="int" column="id">
<generator class="native"/>
</id>
<!-- 普通属性:数据库中基本类型:日期、字符串、数字 -->
<!-- name属性:对象中的属性必须要有
type属性:类型,如果不写,Hibernate属性会自动检测
column属性:对应表中的列名,如果不写,默认为属性名
length属性:长度,不是所有的类型都有长度属性,varchar有,int没有,如果不写,默认为255
not-null属性:非空约束,默认为false
-->
<property name="name" type="string" column="name" length="20" not-null="true"/>
<property name="birthday" type="date" column="birthday_"/>
<property name="age" type="int" column="age"/>
<!-- 当列表与关键字冲突时,可以通过column属性制定一个其他的列名
或是使用反引号包围起来
指定使用text类型时,最好再指定length,以确定生成的SQL类型是能够存放指定数量的数据 -->
<property name="desc" type="text" column="desc_"></property>
<!-- 头像,二进制类型,最好指定长度 -->
<property name="photo" type="binary" length="102400"></property>
</class>
所以配置文件中有表中的所有信息,可以由映射文件直接创建表。
在xml中加上语句:
<property name="hbm2ddl.auto">update</property>
(ddl 数据定义语言,只表结构的创建,表结构的删除)
注意:
create:先删除,再创建,如果已经存在这个表,会先把表删了重新创建表,旧的的数据都没有了
update:如果表不存在就创建,不一样就更新,一样就什么都不做,主要用于测试
create-drop:初始化时创建表,SessionFactory执行close()时删除表
validate:验证表结构是否一致,如果不一致就抛异常