先贴上类文件Students.hbm.xml

 <?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2017-5-23 0:24:09 by Hibernate Tools 3.5.0.Final -->
<hibernate-mapping>
<class name="com.imooc.hibernate.Students" table="STUDENTS">
<id name="sid" type="int">
<column name="SID" />
<generator class="assigned" />
</id>
<property name="sname" type="java.lang.String">
<column name="SNAME" />
</property>
<property name="gender" type="java.lang.String">
<column name="GENDER" />
</property>
<property name="birthday" type="java.util.Date">
<column name="BIRTHDAY" />
</property>
<property name="address" type="java.lang.String">
<column name="ADDRESS" />
</property>
</class>
</hibernate-mapping>

其中<generator class="assigned" />:适用于自然主键,由java代码设置标识符。

  <generator class="assigned" />:适用于代理主键,hibernate自动生成标识符。

自然主键和代理主键请参考:http://blog.csdn.net/haiross/article/details/21388997

举个栗子:

students类:

 package com.imooc.hibernate;

 import java.util.Date;

 public class Students {

     private int sid;
private String sname;
private String gender;
private Date birthday;
private String address; public Students() {} public Students(int sid, String sname, String gender, Date birthday, String address) {
super();
this.sid = sid;
this.sname = sname;
this.gender = gender;
this.birthday = birthday;
this.address = address;
} @Override
public String toString() {
return "Students [sid=" + sid + ", sname=" + sname + ", gender=" + gender + ", birthday=" + birthday
+ ", address=" + address + "]";
} public int getSid() {
return sid;
} public void setSid(int sid) {
this.sid = sid;
} public String getSname() {
return sname;
} public void setSname(String sname) {
this.sname = sname;
} public String getGender() {
return gender;
} public void setGender(String gender) {
this.gender = gender;
} public Date getBirthday() {
return birthday;
} public void setBirthday(Date birthday) {
this.birthday = birthday;
} public String getAddress() {
return address;
} public void setAddress(String address) {
this.address = address;
}
}

hibernate.cfg.xml文件:

 <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="connection.username">root</property>
<property name="connection.password">root</property>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost:3306/hibernate?useUnicode=true&amp;characterEncoding=UTF-8</property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="show_sql">true</property>
<property name="format_sql">true</property>
<property name="hbm2ddl.auto">create</property> <mapping resource="com/imooc/hibernate/Students.hbm.xml"/>
</session-factory>
</hibernate-configuration>

测试类Students.java

 package com.icoom.test;
import static org.junit.Assert.fail; import java.util.Date; import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;
import org.junit.After;
import org.junit.Before;
import org.junit.Test; import com.imooc.hibernate.Students; public class StudentsTest { private SessionFactory sessionFactory;
private Session session;
private Transaction transaction; @Before
public void init() {
// 1.创建配置对象
Configuration config = new Configuration().configure();
// 2.创建服务注册对象
ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry();
// 3.创建会话工厂对象
sessionFactory = config.buildSessionFactory(serviceRegistry);
// 会话对象
session = sessionFactory.openSession();
// 开启事务
transaction = session.beginTransaction();
}
@After
public void destory() {
transaction.commit(); //提交事务
session.close(); //关闭session
sessionFactory.close();//关闭会话工厂
}
@Test
public void testSaveStudents() {
// 生成学生对象
// Students s = new Students(1, "老张", "男", new Date(), "山东");
Students s = new Students();
s.setSid(1);
s.setSname("老张");
s.setGender("男");
s.setBirthday(new Date());
s.setAddress("山东");
session.save(s);//保存对象进入数据库
}
}

数据库产生一条数据:

将hibernate.cfg.xml文件中的<property name="hbm2ddl.auto">create</property>改为<property name="hbm2ddl.auto">update</property>,然后再执行一次,就会报错。因为主键重复。

----------------------------------

将数据表删除,将Students.hbm.xml文件中的<generator class="assigned" />改成<generator class="native" />,然后再执行一次testSaveStudents()方法,会生成一条数据;再执行一次,Junit不会报错,而是插入了一条新数据:

以上就是assigned和native的区别。

hibernate_04_hbm.xml介绍的更多相关文章

  1. Maven_pom.xml介绍

    Maven的pom.xml介绍 6.1     简介 pom.xml文件是Maven进行工作的主要配置文件.在这个文件中我们可以配置Maven项目的groupId.artifactId和version ...

  2. Maven第三篇【Maven术语、pom.xml介绍】

    maven术语 在我们上一篇中已经知道了在Intellij idea下是如何使用Maven的了,创建出来的目录结构是这样子的: 上面的目录结构就是Maven所谓的"约定",我们使用 ...

  3. xml介绍+xml创建+xml读取

    1.xml介绍:(URL:https://blog.csdn.net/weixin_37861326/article/details/81082144) xml是用来传输内容的,是w3c推荐的 2.使 ...

  4. XML 介绍

    XML eXtensible Markup language:可扩展的标记语言 解决HTML不可扩展的问题, 作用:保存或传输数据,不是用来显示数据的. XML介绍 1.  基于文本格式的 2.  标 ...

  5. solrconfig.xml介绍

    说明:请务必先了解如下知识,否则阅读本文会晕. Solr术语介绍:SolrCloud,单机Solr,Collection,Shard,Replica,Core之间的关系 Solr通过三个主要文件来作配 ...

  6. AndroidManifest.xml介绍一

    下面是AndroidManifest.xml的简单介绍,直接上图! 一.manifest结点的属性介绍 二.application结点属性介绍 三.activity.intent-filter.use ...

  7. Maven的pom.xml介绍

    6.1 简介 pom.xml文件是Maven进行工作的主要配置文件.在这个文件中我们可以配置Maven项目的groupId.artifactId和version等Maven项目必须的元素:可以配置Ma ...

  8. java web工程web.xml介绍

    转载自:http://blog.csdn.net/believejava/article/details/43229361 Web.xml详解: 1.web.xml加载过程(步骤) 首先简单讲一下,w ...

  9. 安卓AndroidManifest.xml介绍

    先说一下,我的开发环境为Eclipse 3.7.1 + Android SDK + Android 1.5(API level3) Android最大的一个特点,就是用xml文件来配置,这个演习了Ja ...

随机推荐

  1. 熟悉RHEL7登录界面使用

    Linux操作系统提供了图像界面和字符界面两种操作环境. 图像界面: 1.开启RHEL7后进入到该界面,图中用户是我们创建的本地用户,如果我们要以管理员身份登录则点击Not listed(未列出). ...

  2. linux - redis基础

    目录 linux - redis基础 redis 源码编译安装 redis 数据结构 1. strings类型 2. list 类型 3. sets集合类型 有序集合 5. 哈希数据结构 centos ...

  3. 【5】Django项目配置settings.py详解

    夫唯不争,故天下莫能与之争 --老子<道德经> 本节内容 1.项目配置文件settings.py介绍 2.数据库配置[MySQL] 3.创建模型对象并和数据库同步 4.python官方提供 ...

  4. DSP28035的编程初步--GPIO操作

    明白DSP编程的基本流程,熟悉DSP28035的GPIO的使用.代码执行流程:首先是系统时钟的选择.其次是PIE中断向量表的初始化.一些外设的初始化操作While(){}根据EXPERIMENTER’ ...

  5. Vue 中Bus使用

    使用:兄弟组件之间传值: 安装: npm install vue-bus 在main.js 中引入vuebus: import Vue from 'vue'; import VueBus from ' ...

  6. 基于Python3.7和opencv的人脸识别(含数据收集,模型训练)

    前言 第一次写博客,有点紧张和兴奋.废话不多说,直接进入正题.如果你渴望使你的电脑能够进行人脸识别:如果你不想了解什么c++.底层算法:如果你也不想买什么树莓派,安装什么几个G的opencv:如果你和 ...

  7. rpm包下载地址

    https://dl.fedoraproject.org/pub/epel/6/x86_64/

  8. Java重载和覆盖

    重写 Overriding 如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding) 1.参数列表必须完全与被重写的方法相同,否则不能称其为重写而是重载. 2.返 ...

  9. 启动spring boot项目

    启动spring boot项目 pom.xml如下: <?xml version="1.0" encoding="UTF-8"?> <proj ...

  10. MSP430WARE++的使用2:RSP1 driver的调用方法

        MSP430WARE是一套基于C++语言的开源的MSP430层次化软件架构,支持多种外设.本文将介绍雷达測速芯片RSP1驱动程序的调用方法.     1.硬件原理图      採用下图所看到的 ...