Hibernate-----基本映射(映射文件方式)

关联映射:将关联关系(在对象模型中就是一个或多个引用)映射到数据库中

关系属性:在内存中建立两个对象之间的关系

双向关系:在关系对象中都能找到对方

单项关系:只在关系的一方能找到另一方

 

实体类设计原则:

1、实现无参构造函数(Hibernate要调用)

2、提供一个标识(用于唯一标识该对象,映射数据库主键)

3、建议不用final修饰实体类(Hibernate实现延迟加载使用CGLIB代理时会继承实体类)

4、建议为实体类属性生成gettersetter方法(Hibernate默认属性访问器)

 

若实体类名或实体类中属性名与数据库关键字重复,将会出现问题;可考虑采用table属性和column属性对其进行重命名

 

<?xml version="1.0"encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="org.app.model"
         auto-import="true">
         <!-- 实体类映射成表 -->
         <class name="User" table="t_user"dynamic-insert="false"
                   dynamic-update="false">
                   <!-- 映射主键id -->
                   <idname="id" column="user_id"access="" length=""type="">
                            <!-- <generatorclass="increment" /> -->
                            <generatorclass="sequence">
                                     <paramname="sequence">user_seq</param>
                            </generator>
                   </id>
 
                   <!-- 映射普通属性 -->
                   <!-- 普通属性(非集合、自定义类、数据等)映射成表字段 -->
                   <propertyname="name" column="user_name"length="30" type="string"
                            unique="false" not-null="true"access="field" insert="true"update="true" />
                   <propertyname="password" />
                   <propertyname="createTime" />
                   <propertyname="expireTime" type="date" />
 
                   <!-- 映射关系属性 -->
         </class>
</hibernate-mapping>

public class Company {
    private Integer id;
    private String name;
    private Address address;
 
    // setter、getter方法
 
    // 在内存中建立对象关系
    public void addRelation(Address address) {
       this.address = address;
       address.setCompany(this);
    }
 
    // 在内存中解除对象的关系
    public void deleteRelation(Address address) {
       this.address = null;
       address.setCompany(null);
    }
}


 

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。