Hibernate映射解析(一)—— 基本映射
- Hibernate 核心配置文件:Hibernate.cfg.xml文件,完成基本的配置
- 实体类(*.java):即映射类,描述对象名和属性,对应表中的表名和字段
- 映射文件(*.hbm.xml):指定映射类和数据库表的关系
基本映射
<!--声明Hibernate配置文件的开始--> <hibernate-configuration> <!--表明以下的配置是针对session-factory配置的,SessionFactory是Hibernate中的一个类,这个类主要负责保存HIbernate的配置信息,以及对Session的操作--> <session-factory> <!--配置数据库的驱动程序--> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <!-- 设置数据库的连接url;Localhost 表示mysql服务器名称,hibernate_basemapping表示数据库名 --> <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate_basemapping</property> <!--连接数据库的用户名--> <property name="hibernate.connection.username">root</property> <!--连接数据库的密码--> <property name="hibernate.connection.password">root</property> <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> <!-- 是否在后台显示Hibernate用到的sql语句 --> <property name="hibernate.show_sql">true</property> <!-- 根据映射文件和数据库中的表对应起来,如果不一致,就更新表的结构 --> <property name="hibernate.hbm2ddl.auto">update</property> <mapping resource="com/bjpowernode/hibernate/User.hbm.xml"/> </session-factory> </hibernate-configuration>
2.实体类
package com.blackfox.hibernate; import java.util.Date; public class User { private String id; private String name; private String password; public String getId() { return id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
- 实现无参的默认的构造函数
- 提供一个标识
- 建议不要使用fianl修饰实体类
- 建议为实体类生成getter和setter方法
<!-- 可在根元素声明包名 --> <hibernate-mapping package="com.bjpowernode.hibernate"> <!-- 使用class元素定义一个持久化类,name持久化类名,table对应数据库表名 --> <class name="User" table="t_user"> <!-- id 定义该属性到数据库表主键字段的映射 ,name 标识属性的名字,column表主键字段的名字,不写默认一样--> <id name="id" column="user_id" length="32" access="field"> <!-- <generator>:指定主键由什么生成,推荐使用uuid,assigned指用户手工填入 --> <generator class="uuid"/> </id> <!-- 为类定义一个持久化的javaBean风格的属性,name 属性的名字 --> <property name="name" length="30" unique="true" not-null="true"/> <property name="password"/> </class> </hibernate-mapping>
注意:如果实体类的名称或实体类中属性的名称和数据库关键字重复,将会出现问题可以考虑采用table属性和column对其进行重新命名。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。