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

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

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

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

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

实体类设计原则:

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

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

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

4、建议为实体类属性生成getter、setter方法(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);
    }
}
时间: 2024-11-03 00:56:48

Hibernate-----基本映射(映射文件方式)的相关文章

hibernate 对象关系映射文件详解

POJO 类和数据库的映射文件*.hbm.xml POJO类和关系数据库之间的映射可以用一个XML文档来定义. 映射文件的扩展名为.hbm.xml 在运行时Hibernate将根据这个映射文件来生成各种SQL语句 通过POJO类的数据库映射文件,Hibernate可以理解持久化类和数据表之间的对应关系,也可以理解持久化类属性与数据库表列之间的对应关系 映射文件说明 hibernate-mapping 类层次:class 主键:id 基本类型:property 实体引用类: many-to-one

hibernate笔记--使用注解(annotation)方式配置单(双)向多对一的映射关系

前面几篇都是介绍的用配置文件来实现实体类到数据库表的映射,这种方式是比较麻烦的,每一个pojo类都需要写一个相应的*.hbm.xml,无疑增加了很多代码量,不过也有优点就是利于维护,为了方便开发,Hibernate还提供了注解方式配置映射文件,非常灵活,减少了配置文件的冗余,虽然维护起来相对比较麻烦,但是的确很方便开发.现在开发中(据说)也越来越流行使用注解,这里贴一个使用注解开发的小例子. 假设有两张表,一张书籍表Book,一张书籍分类表Category,很明显Book和Category是多对

Hibernate配置文件与映射文件详解

Hibernate是一个彻底的ORM(Object Relational Mapping,对象关系映射)开源框架. 我们先看一下官方文档所给出的,Hibernate 体系结构的高层视图: 其中PO=POJO+映射文件 根据体系结构视图可以了解到整个利用Hibernate框架实现的项目包括整个重要的配置文件: Hibernate配置文件:实现Hibernate基础配置,是Hibernate能够友好的与DB进行交互基础: 开发时放置src目录下,取名为:hibernate.cfg.xml(hiber

内存映射文件方式(MappedByteBuffer)处理文件的实例

package org.phoenix.cases.kafka;import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.io.RandomAccessFile; import java.nio.MappedByteBuffer; import java.nio.channels.FileChannel;

springboot整合mybatis(映射文件方式和注解方式)

springboot作为一个微服务框架,给我们开发人员提供极大的便利,秉着约定大于配置的原则,通过starter包的形式为我们做了许多默认的配置,在进行数据持久化到关系型数据库时,我们一般都会首选spring data jpa,springboot为我们提供了starter包,只需配置很少的参数,就能满足我们的需求,非常方便.但是当我们遇到一些比较复杂的查询.多表关联查询及动态sql时,mybatis则在这方面更出色,并且在使用mybatis时我们可以通过sql优化来提高查询效率,springb

hibernate的实体映射(一对一)

Hibernate的实体映射的主要任务就是实现数据库关系表与持久化类之间的映射,其关系如图: 双向映射一对一关联关系,通过唯一外键方式进行一对一关联映射,就是一个表的外键和另一个表的唯一主键对应形成一对一映射关系. 例如,以下例子,社团与社团负责人(社长),两者之间是一对一的关联关系: 持久化类association.java: public class Association implements java.io.Serializable{     private Integer id;   

ORM进阶之Hibernate中关系映射

ORM进阶之 ORM简介 ORM进阶之Hibernate简介及框架搭 ORM进阶之Hibernate的三大对象 ORM进阶之Hibernate中对象的三大状态解析 ORM进阶之Hibernate中一对一的关系映射 映射可以说是在hibernate中非常重要的一个内容,通过映射可以让程序员不再思考复杂的sql语句,而是更加的专注于业务逻辑的实现.映射通过一个xml配置文件完成并且我们可以对他进行修改!下边我们来看一下如何完成映射的! 单表映射 每个实体对应一张表,跟其他的实体没有关联关系,这是最简

Hibernate配置文件和映射元素解释

象关系的映射是用一个XML文档来说明的.映射文档可以使用工具来生成,如XDoclet,Middlegen和AndroMDA等.下面从一个映射的例子开始讲解映射元素. AD:干货来了,不要等!WOT2015 北京站演讲PPT开放下载! <!--标准的XML文件的起始行,version='1.0'表明XML的版本,encoding='gb2312'表明XML文件的编码方式--> <?xml version='1.0' encoding='gb2312'?> <!--表明解析本XM

Hibernate一对一关系映射

Hibernate提供了两种一对一映射关联关系的方式: 1)按照外键映射 2)按照主键映射 下面以员工账号表和员工档案表(员工账号和档案表之间是一对一的关系)为例,介绍这两种映射关系,并使用这两种 映射方式分别完成以下持久化操作 (1)保存员工档案的同时分配给员工一个账号 (2)加载员工档案的同时加载账号信息 一:按照外键映射 HibernateUtil工具类(用于获取session和关闭session) package cn.util; import org.hibernate.Session

Hibernate的关联映射之1-1关联映射

二.1-1 无论是单向1-1映射关联,还是双休1-1映射关联,都有三种映射策略:基于主键.基于外键.采用连接表. 1.单向1-1映射关联 1.1.基于主键的单向1-1映射关联 对于基于主键的单向1-1关联,基于主键关联的持久化类不能拥有自己的主键生成器策略,它的主键由关联实体来负责生成. 是根据他自己的person属性来获得的.即他通过自身的一个getPerson()方法来获得Person对象.然后通过Person对象中的getID()方法获得id,然后赋值给自身id.这样就可以不需要自己来生成