java之hibernate之配置讲解
1.映射文件:User.hbm.xml
<!-- package 指向class中所有类的包名,可以直接在指定类名时同时指定包名 --> <hibernate-mapping package="cn.vincent.pojo"> <!-- class 表示类的映射 name表示类名,如果hibernate-mapping中没有指定包名,在这里必须指定。 table 指定类所对应的表名 如果不写 默认和类名一致 --> <class name="User" table="t_user"> <!-- id表示主键映射,在hibernate中,类所对应的表必须有主键 name表示 类中对应数据库表中主键属性名 column 表示字段名称 不写和属性名一致 type 表示属性的类型 如果不写 会自动根据类的属性信息查找 --> <id name="id" column="id" type="int"> <!-- generator表示主键生成策略-为保存数据时指定其id increment 用于为long, short或者int类型生成 唯一标识。 只有在没有其他进程往同一张表中插入数据时才能使用。 在集群下不要使用。 select max(id) from table; identity 对DB2,MySQL, MS SQL Server, Sybase和HypersonicSQL 的内置标识字段提供支持。 返回的标识符是long, short 或者int类型的。 sequence 在DB2,PostgreSQL, Oracle, SAP DB, McKoi中使用序列(sequence), 而在Interbase中使用生成器(generator)。返回的标识符是long, short或者 int类型的。 <generator class="sequence"> <param name="sequence">sequence_name</param> </generator> hilo 使用一个高/低位算法高效的生成long, short 或者 int类型的标识符。给定一个表和 字段(默认分别是 hibernate_unique_key 和next_hi)作为高位值的来源。 高/低位算法生成的标识符只在一个特定的数据库中是唯一的。 uuid-开发中使用最多 用一个128-bit的UUID算法生成字符串类型的标识符, 这在一个网络中是唯一的(使用 了IP地址)。UUID被编码为一个32位16进制数字的字符串。 native 根据底层数据库的能力选择identity, sequence 或者hilo中的一个。 assigned 手动指定id 让应用程序在save()之前为对象分配一个标示符。这是 <generator>元素 没有指定时的默认生成策略。 foreign 使用另外一个相关联的对象的标识符。通常和<one-to-one>联合起来使用。 --> <generator class="native"></generator> </id> <!-- property 表示属性的映射 name 属性名 区分大小写,属性提供get/set方法 column 字段名 不写时 默认和属性名一致 type 属性的类型 可以不写 --> <property name="name" column="name" type="java.lang.String"/> <property name="age" column="age" type="int"/> </class> </hibernate-mapping>
2.配置文件讲解:hibernate.cfg.xml
<hibernate-configuration> <session-factory> <!-- 数据库连接信息 --> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <!-- 默认 localhost:3306 --> <property name="connection.url">jdbc:mysql:///test</property> <property name="connection.username">root</property> <property name="connection.password">root</property> <!-- 通用配置 --> <!-- 方言:hibernate要支持多种数据库,根据不同数据库生成对应的sql语句 告诉hibernate使用的什么数据库,以便生成对应数据库的sql --> <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> <!-- 打印sql语句 --> <property name="show_sql">true</property> <!-- 格式化sql --> <property name="format_sql">true</property> <!-- 映射信息 注意映射文件存放的是文档路径 需要用/ --> <mapping resource="cn/vincent/pojo/User.hbm.xml"/> </session-factory> </hibernate-configuration>