Object:对象,java对象,此处特指JavaBean
Relational:关系,二维表,数据库中的表。
Mapping :映射|映射元数据,对象中属性,与表的字段,存在对应关系。
ORM 对象和表的映射,就是通过将Java对象映射到数据库表,通过操作Java对象,就可以完成对数据表的操作
Hibernate是一个数据持久化层的ORM框架,Hibernate提供了对关系型数据库增删改成操作,大大简化了数据访问层繁琐的重复性代码
配置关联的dtd文件(安装插件的情况下这个步骤可以跳过)
注意:上面两个文件需要在同包下,映射文件为 : 类名.hbm.xml
关于*.hbm.xml的书写规范可以直接在hibernate-release-4.1.1.Final文件夹中搜索*.hbm.xml
public class User { private Integer uid; private String username; private String password; public Integer getUid() { return uid; } public void setUid(Integer uid) { this.uid = uid; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } } <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="com.chinasoft.entity.User" table="t_user"> <!-- 主键 access=field 直接读取字段值,不会调用setter和getter方法--> <id name="uid" type="java.lang.Integer"> <column name="id" /> <!-- 固定值:主键生成策略,使用数据库本地的方式(mysql自增,oracle序列) --> <generator class="native" /> </id> <!-- 普通属性 --> <property name="username" type="java.lang.String"> <column name="name" /> </property> <property name="password" type="java.lang.String"> <column name="pwd" /> </property> </class> </hibernate-mapping>注意点:实体类需要满足以下条件
提供一个无参数public访问控制符的构造器提供一个标识属性用于映射数据表主键字段所有属性提供public访问控制符的set get 方法(javaBean)标识属性应尽量使用基本数据类型的包装类型(包装类型可以表示null,基本数据类型不可以)不要用final修饰实体 (将无法生成代理对象进行优化) 关于类名.hbm.xml的打开方式
Ctrl+shift+t : 打开open Type窗口
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <!-- SessionFactory,相当于之前学习连接池配置 --> <session-factory> <!-- 基本4项 --> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <property name="hibernate.connection.url">jdbc:mysql:///contacts</property> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password">root</property> <!--数据库方言,会针对不同的数据库生成有差异的sql语句 --> <property name="hibernate.dialect"> org.hibernate.dialect.MySQL5Dialect</property> <!—-是否顯示sql語句 --> <property name="show_sql">true</property> <!—格式化sql語句 --> <property name="format_sql">true</property> <!-- 添加映射文件:注意是路径不是包名 --> <mapping resource="com/test/hibernate/User.hbm.xml"/> </session-factory> </hibernate-configuration>