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"> <!-- 以上规约内容是 hibernate-core-5.x.Final.jar包中 org.hibernate => hibernate-mapping-3.0.dtd(或hibernate-mapping-5.0.dtd) --> <hibernate-mapping> <!-- 建立类与表的映射 --> <class name="com.marw.util.Customer" table="cst_customer"> <!-- 建立类中的属性与表中的主键对应 --> <id name="cust_id" column="cust_id"> <generator class="native"></generator> </id> <!-- 建立类中的普通属性与表中的字段对应 --> <property name="cust_name" column="cust_name"></property> <property name="cust_source" column="cust_source"></property> <property name="cust_industry" column="cust_industry"></property> <property name="cust_level" column="cust_level"></property> <property name="cust_phone" column="cust_phone"></property> <property name="cust_mobile" column="cust_mobile"></property> </class> </hibernate-mapping>
1、class标签的配置:标签用来建立类与表的映射关系
属性:
name :类的全路径
table :表名(类名与表名一致,table可以省略)
catalog :数据库名
2、id标签的配置:标签用来建立类中的属性与表中的主键的对应关系
属性:
name :类中的属性名
column :表中的字段名(类中的属性名和表中的字段名如果一致,column可以省略)
length :长度
type :类型
2.1、<generator class="native"></generator> Hibernate主键策略
incrament:hibernate中提供的自增长机制,主键类型:short、int、long,单线程程序中使用
其原理:先发送一条sql语句:select max(主键) form 表;最大主键+1作为下一条记录的主键
identity:使用数据库自增长机制,主键类型:short、int、long,只有MSSQL、MySQL数据库可以使用Oracle没有自增长机制
sequence:序列方式,主键类型:short、int、long,Oracle支持序列,MySQL不支持sequence
uuid:hiberna中随机生成字符串,主键类型:字符串
native:本地策略,可以在identity和sequence之间自动切换
assigned:hibernate放弃主键的管理,需要通过手动设置
foreign:外部的,一对一的一种关联映射的情况下使用
3、property标签的配置:标签用来建立类中的普通属性与表的字段的对应关系
属性:
name :类中的属性名
column :表中的字段名
length :长度
type :类型
not-null :设置非空
unique :设置唯一
二、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-core-5.x.Final.jar包中 org.hibernate => hibernate-configuration-3.0.dtd --> <hibernate-configuration> <session-factory> <!-- 连接数据库基本参数 --> <property name="hibernate.connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property> <property name="hibernate.connection.url">jdbc:sqlserver://localhost:1433;databaseName=HibernateDB;</property> <property name="hibernate.connection.username">sa</property> <property name="hibernate.connection.password">AAA@111</property> <!-- 配置Hibernate的方言 --> <property name="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</property> <!-- 可选配置start --> <!-- 控制台打印sql语句 --> <property name="hibernate.show_sql">true</property> <!-- 控制台打印sql语句 格式化--> <property name="hibernate.format_sql">true</property> <!-- 可选配置end --> <!-- 配置映射 --> <mapping resource="com/marw/util/Customer.hbm.xml"/> </session-factory> </hibernate-configuration>
1、必须配置
①、数据库连接基本参数
驱动类
url路径
用户名
密码
②、方言
③、映射文件的引入
2、可选配置
控制台显示SQL :hibernate.show_sql
格式化显示SQL :hibernate.format_sql
自动建表 :hibernate.hbm2ddl.auto
<property name="hibernate.hbm2ddl.auto">update</property>
none :不使用hibernate的自动建表
create :如果数据库中已经有表,删除原有表,重新创建,如果没有表,新建表。(测试)
create-drop :如果数据库中已经有表,删除原有表,执行操作,删除这个表。如果没有表,新建一个,使用完了删除该表。(测试)
update :如果数据库中有表,使用原有表,如果没有表,创建新表(更新表结构)
validate :如果没有表,不会创建表。只会使用数据库中原有的表。(校验映射和表结构)