单一主键

  • assigned:由Java应用程序负责生成(即手工的赋值)
  • native:由底层的数据库自动的生成标示符,如果是MySQL就是auto_increment,如果是Oracle就是sequence,等等

操作的时候还是需要结合hibernate.cfg.xml文件的,因为数据库中的hbm2ddl.auto属性如果是update的时候,设置为主键自增是可以的;但是如果是create的时候,第二次如果不手工的改变,恐怕就要出BUG了。

基本类型

一般来说,按照Java的数据类型进行操作就可以。

其中最容易出错的数据类型是date 和 timestamp两种。

- date类型既可以映射成java.util.Date,也可以映射成java.sql.Date类型。代表日期:yyyy-MM-dd

- time类型映射成java.util.Time 和java.sql.Time代表的时间:hh:mm:ss

- timesaamp可以映射成java.util.Date或者java.sql.TimeStamp类型,代表的时间和日期:yyyymmddhhmmss

如何更改其阿紫数据库中的数据库类型呢?

在XX.hbm.xml文件中对class对象的property的type属性进行更改即可。改成Hibernate自带的数据类型就可以了。

对象类型

下面是Hibernate支持的对象类型的总结:

操作的时候只需要按照相应的API即可。

需要注意的是MySQL不支持标准的CLOB类型,在MySQL中用TEXT,MEDIUMTEXT及LONGTEXT类型来表示长度超过255的长文本数据。

组件属性

实体类中某个属性属于用户自定义的类的对象

如:
<component name="address" class="Address">
    <property name="postcode" column="POSTCODE" />
    <property name="phone" column="PHONE" />
    <property name="address" column="ADDRESS" />
</component>

也就是说一旦是用户自定义的类型的话,在XX.hbm.xml文件中就要使用component标签,而不是单纯的property标签了。这一点应该有其的注意。

单表操作CRUD的实例

这里主要是使用到了session的几个常用的api。如save,update,delete,和get/load等等。

- save:直接调用session.save(对象的实例)

- get/load:session.get/load(XX.class,标示符);其中这个标示符可以是主键对应的值

- update:session.update(对象的实例)

- delete:session.delete(对象的实例)

get与load的区别:

- 一、不考虑缓存的情况下,get方法在调用之后立即的向数据库发送SQL语句,返回持久化的对象,而load方法会在调用后返回一个代理的对象,该代理对象只保存了实体对象的id,知道适用对象的非主键属性时才会发出sql语句。

- 二、查询数据库中不存在的数据时,get方法返回的是null,load方法则会抛出异常org.hibernate.ObjectNotFoundException

Hibernate单表操作的更多相关文章

  1. (三)hibernate单表操作

    0. 贴上节hbm文件 <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hib ...

  2. hibernate课程 初探单表映射3-1 hibernate单表操作简介

    本章简介: 1 单一主键 2 基本类型 3 对象类型 4 组件属性 5 单表操作CRUD实例

  3. Hibernate单表操作(一)——单一主键

    assigned由java应用程序负责生成.(手工赋值) native由底层数据库自己主动生成标识符,假设是MySQL就是increment,假设是oracle就是sequence.等等.

  4. hibernate学习笔记(6)组件属性以及单表操作

    组件属性:实体类中的某个属性属于用户自定义类的对象: 作用:将两个实体类合并在一起组建成一个表 在hbm.xml文件中配置: 格式: <component name="取的名字&quo ...

  5. Hibernate学习笔记(一)-->数据库单表操作

    Hibernate框架是一个全ORM映射框架,是一个非常流行的数据库操作框架之一,现在比较流行的还有MyBatis半ORM映射框架 在MyEclipse IDE开发工具中,可以很轻松的搭建Hibern ...

  6. 09-hibernate单表操作(1)

    1,单一主键 2,基本类型 3,对象类型 4,组件属性 5,单表操作 单一主键 常用生成策略: assigned 有程序员生成(手工) native 由数据库底层,如果是mysql是increment ...

  7. 学习MySQL之单表操作(二)

    ##单表操作 ##创建表 CREATE TABLE t_employee( empno ), ename ), job ), MGR ), Hiredate DATE DEFAULT '0000-00 ...

  8. c# 数据库编程(利用DataSet 和 DataAdaper对象操作数据库--单表操作)

    一.概述 前面2篇文章,介绍了使用SqlCommand对象利用sql命令来操作数据库. 这篇文章我们来介绍使用c#的DataSet 和 DataAdaper对象操作操作数据库. 先来介绍下这两个对象是 ...

  9. Django学习笔记(7)——单表操作和多表操作

    单表操作 1,创建模型 创建名为book的APP,在book下的models.py中创建模型: from django.db import models # Create your models he ...

随机推荐

  1. Uva 437 巴比伦塔 && UVA10003

    要求底面严格小于它下方立方体的长宽,求出最高情况,一块石头可以多次使用 用结构体记录一块石头的三种放置情况,按面积排序. dp[i] = max(dp[i],dp[j] + block[i].high ...

  2. bzoj 3751: [NOIP2014]解方程

    Description 已知多项式方程: a0+a1x+a2x^2+...+an*x^n=0 求这个方程在[1,m]内的整数解(n和m均为正整数). 解题报告: 这题比较诡,看到高精度做不了,就要想到 ...

  3. Codeforces #Round 785(Div.2)

    假的div2 C题没事写什么公式被卡精度了,掉分了gg --------------------------------------------------- A....几个每个字符串预先给好一个代表 ...

  4. bzoj2655calc 容斥+dp

    2655: calc Time Limit: 30 Sec  Memory Limit: 512 MBSubmit: 322  Solved: 197[Submit][Status][Discuss] ...

  5. 笔记8 AOP练习2

    场景描述: 一张唱片有好多磁道,假设每个磁道只有一首歌,现在需要记录每首歌的播放次数,然后输出. 主要业务:歌曲播放 辅助功能:记录播放次数(切面) 1.创建唱片接口,CompactDiscs.jav ...

  6. 《Java技术》第一次作业——Java语言基础

    学习总结 Scanner类实现基本数据输入的方法 Scanner 使用分隔符模式将其输入分解为标记,默认情况下该分隔符模式与空白匹配.然后可以使用不同的 next 方法将得到的标记转换为不同类型的值. ...

  7. Chrome的First Paint

    前言 First paint 直译过来的意思就是浏览器第一次渲染(paint),在First paint之前是白屏,在这个时间点之后用户就能看到(部分)页面内容. 所以研究这个First Paint的 ...

  8. TeamViewer 服务队列网页怎么打开?有什么用?

    熟悉一款软件,除了要熟悉它的界面,还应该熟悉它的网站.可能会有很多人说,网站我当然知道了.但是TeamViewer的服务队列页面你真的熟悉吗?所以,今天小编就带大家深入的了解一下TeamViewer服 ...

  9. numpy.random中的shuffle和permutation以及mini-batch调整数据集(X, Y)

    0. numpy.random中的shuffle和permutation numpy.random.shuffle(x) and numpy.random.permutation(x),这两个有什么不 ...

  10. python if判断语句&计算

    python对缩进要求严格,代码块里的缩进必须一样,可以常用 tab键  表示4个空格 if 条件: 代码块 else: if判断语句如下: 1 print("吃饭,喝水,回家") ...