1. 普通字段类型

2. 主键映射

单列主键映射

多列作为主键映射

主键生成策略,查看api:   5.1.2.2.1. Various additional generators

数据库:

Q:一个表能否有多个主键?

  不能。

Q:为什么要设置主键?

   数据库存储的数据都是有效的,必须保持唯一。

Q:为什么把id作为主键?

因为表中通常找不到合适的列作为唯一列即主键,所以为了方法用id列,因为id是数据库系统维护可以保证唯一,所以就把这列作为主键!

Q: 联合/复合主键

如果找不到合适的列作为主键,出来用id列以外,我们一般用联合主键,即多列的值作为一个主键,从而确保记录的唯一性。


<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <!-- 映射文件: 映射一个实体类对象; 描述一个对象最终实现可以直接保存对象数据到数据库中。 -->
<!--
package: 要映射的对象所在的包(可选,如果不指定,此文件所有的类都要指定全路径)
auto-import 默认为true, 在写hql的时候自动导入包名
如果指定为false, 再写hql的时候必须要写上类的全名;
如:session.createQuery("from cn.loaderman.c_hbm_config.Employee").list();
-->
<hibernate-mapping package="loaderman.c_hbm_config" auto-import="true"> <!--
class 映射某一个对象的(一般情况,一个对象写一个映射文件,即一个class节点)
name 指定要映射的对象的类型
table 指定对象对应的表;
如果没有指定表名,默认与对象名称一样
-->
<class name="Employee" table="employee"> <!-- 主键 ,映射-->
<id name="empId" column="id">
<!--
主键的生成策略
identity 自增长(mysql,db2)
sequence 自增长(序列), oracle中自增长是以序列方法实现
native 自增长【会根据底层数据库自增长的方式选择identity或sequence】
如果是mysql数据库, 采用的自增长方式是identity
如果是oracle数据库, 使用sequence序列的方式实现自增长 increment 自增长(会有并发访问的问题,一般在服务器集群环境使用会存在问题。) assigned 指定主键生成策略为手动指定主键的值
uuid 指定uuid随机生成的唯一的值
foreign (外键的方式, one-to-one讲)
-->
<generator class="uuid"/>
</id> <!--
普通字段映射
property
name 指定对象的属性名称
column 指定对象属性对应的表的字段名称,如果不写默认与对象属性一致。
length 指定字符的长度, 默认为255
type 指定映射表的字段的类型,如果不指定会匹配属性的类型
java类型: 必须写全名
hibernate类型: 直接写类型,都是小写
-->
<property name="empName" column="empName" type="java.lang.String" length="20"></property>
<property name="workDate" type="java.util.Date"></property>
<!-- 如果列名称为数据库关键字,需要用反引号或改列名。 -->
<property name="desc" column="`desc`" type="java.lang.String"></property> </class> </hibernate-mapping>
package loaderman.c_hbm_config;

import java.util.Date;

//一、 对象
public class Employee { private String empId ;
private String empName;
private Date workDate;
// 描述
private String desc; public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
public String getEmpId() {
return empId;
}
public void setEmpId(String empId) {
this.empId = empId;
}
public String getEmpName() {
return empName;
}
public void setEmpName(String empName) {
this.empName = empName;
}
public Date getWorkDate() {
return workDate;
}
public void setWorkDate(Date workDate) {
this.workDate = workDate;
}
@Override
public String toString() {
return "Employee [empId=" + empId + ", empName=" + empName
+ ", workDate=" + workDate + "]";
} }
package loaderman.c_hbm_config;

import java.util.Date;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.Test; public class App2 { private static SessionFactory sf;
static {
// 创建sf对象
sf = new Configuration()
.configure()
.addClass(Employee.class) //(测试) 会自动加载映射文件:Employee.hbm.xml
.buildSessionFactory();
} //1. 保存对象
@Test
public void testSave() throws Exception {
// 对象
Employee emp = new Employee();
emp.setEmpName("张三");
emp.setWorkDate(new Date());
emp.setDesc("描述"); Session session = sf.openSession();
Transaction tx = session.beginTransaction();
session.save(emp); tx.commit();
session.close();
}
}

hibernate映射配置的更多相关文章

  1. Hibernate框架--配置,映射,主键

    SSH框架: Struts框架, 基于mvc模式的应用层框架技术! Hibernate,    基于持久层的框架(数据访问层使用)! Spring,   创建对象处理对象的依赖关系以及框架整合! Da ...

  2. Hibernate框架 主配置文件(Hibernate.cfg.xml) 映射配置 说明

    Hibernate.cfg.xml 主配置文件中主要配置:数据库连接信息.其他参数.映射信息! 常用配置查看源码: hibernate-distribution-3.6.0.Final\project ...

  3. Hibernate框架 主配置文件 Hibernate.cfg.xml 映射配置 说明

    1 主配置文件 Hibernate.cfg.xml 主配置文件中主要配置:数据库连接信息.其他参数.映射信息! 常用配置查看源码: hibernate-distribution-3.6.0.Final ...

  4. spring配置hibernate映射文件-------通配符

    <!-- 这里一定要注意是使用spring的mappingLocations属性进行通配的 -->      <property name="mappingLocation ...

  5. Hibernate学习---第八节:继承关系的映射配置

    1.单表继承 (1).实体类,代码如下: package learn.hibernate.bean; import java.util.Date; /** * 持久化类设计 * 注意: * 持久化类通 ...

  6. Hibernate学习---第六节:数组&list&map&set的映射配置

    1.实体类,代码如下: package learn.hibernate.bean; import java.util.Date; import java.util.HashMap; import ja ...

  7. Hibernate映射文件如何配置触发器

    Hibernate映射文件之触发器生成(generated属性.database-object元素) (2013-02-27 12:28:49) 转载▼ 标签: it 分类: JAVA学习笔记 这里分 ...

  8. hibernate映射文件

    Hibernate的持久化类和关系数据库之间的映射通常是用一个XML文档来定义的.该文档通过一系列XML元素的配置,来将持久化类与数据库表之间建立起一一映射.这意味着映射文档是按照持久化类的定义来创建 ...

  9. Spring集成Hibernate映射文件的4种方式

    概要: 在Spring的applicationContext.xml中集成Hibernate映射文件,通常是在<sessionFactory>这个Bean实例中进行的,若配置的映射文件较少 ...

随机推荐

  1. zabbix监控项截图整理

    general监控项

  2. linux工具之iostat

    iostat 是I/O  statistics(输入/输出统计)缩写iostat工具将对系统磁磁盘活动进行监视iostat属于sysstat软件包可以用yum   install   sysstat ...

  3. 复杂sql优化步骤与技巧

    数据管理型系统,由于用户的要求或者系统设计要求,会出现大量表进行join,还要进行大量统计性数据查询展示,甚至数据权限控制等操作.最后会导致sql异常复杂,随着数据量增加,或者只是应用到生产环境(正式 ...

  4. MariaDB(MySql)使用储存过程和随机函数插入10万条数据

    ))default charset =utf8; #定义一个随机切割字符串的函数 delimiter // create function randStr() ) begin ) default 'A ...

  5. 什么是JWT?Token与Session的区别?

    什么是JWT Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点 ...

  6. vue基本语法 JS补充

    目录 一.VUE框架入门 1. vue框架的优势 二.VUE框架的基本使用 1. vue的引用 2. vue的基本语法结构 2. 插值表达式 3. 文本指令 (1)v-text (2)v-html ( ...

  7. Acwing-166-数独(搜索)

    链接: https://www.acwing.com/problem/content/168/ 题意: 数独是一种传统益智游戏,你需要把一个9 × 9的数独补充完整,使得图中每行.每列.每个3 × 3 ...

  8. CTreeItem保存和获取数据

    保存数据: std::string val = "test data"; CString* pNodeData = new CString; *pNodeData = val.c_ ...

  9. Python入门-2编程基本概念:03引用的本质-栈内存和堆内存-内存示意图

    引用 在Python中,变量也称为:对象的引用.因为,变量存储的就是对象的地址. 变量通过地址引用了“对象”. 变量位于:栈内存(压栈出栈等细节,后续再介绍). 对象位于:堆内存. Python是动态 ...

  10. sql条件子查询

    https://www.cnblogs.com/wxw16/p/6105624.html select * from mst_crse where crse_cd in (SELECT crse_cd ...