Hibernate4教程二:基本配置(2)
- <hibernate-mapping
- schema="schemaName" (1)
- catalog="catalogName" (2)
- default-cascade="cascade_style" (3)
- default-access="field|property|ClassName" (4)
- default-lazy="true|false" (5)
- auto-import="true|false" (6)
- package="package.name" (7) />


- <class>元素
- 使用class元素来定义一个持久化类:
- <class
- name="ClassName" (1)
- table="tableName" (2)
- discriminator-value="discriminator_value" (3)
- mutable="true|false" (4)
- schema="owner" (5)
- catalog="catalog" (6)
- proxy="ProxyInterface" (7)
- dynamic-update="true|false" (8)
- dynamic-insert="true|false" (9)
- select-before-update="true|false" (10)
- polymorphism="implicit|explicit" (11)
- where="arbitrary sql where condition" (12)
- persister="PersisterClass" (13)
- batch-size="N" (14)
- optimistic-lock="none|version|dirty|all" (15)
- lazy="true|false" (16)
- entity-name="EntityName" (17)
- check="arbitrary sql check condition" (18)
- rowid="rowid" (19)
- subselect="SQL expression" (20)
- abstract="true|false" (21) />
- <version
- column="version_column"(1)
- name="propertyName"(2)
- type="typename"(3)
- access="field|property|ClassName"(4)
- unsaved-value="null|negative|undefined"(5)
- generated="never|always"(6)
- insert="true|false"(7)
- />
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE hibernate-mapping PUBLIC
- '-//Hibernate/Hibernate Mapping DTD 3.0//EN'
- 'http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd'>
- <hibernate-mapping>
- <class name="cn.javass.h3.hello.UserModel" table="tbl_user" optimistic-lock="version">
- <id name="uuid">
- <generator class="assigned"/>
- </id>
- <version name="version"/>
- <property name="userId"></property>
- <property name="name"></property>
- <property name="age"></property>
- </class>
- </hibernate-mapping>
- import org.hibernate.Session;
- import org.hibernate.SessionFactory;
- import org.hibernate.Transaction;
- import org.hibernate.cfg.Configuration;
- public class Client {
- public static void main(String[] args) {
- SessionFactory sf = new Configuration().configure().buildSessionFactory();
- Session session1 = null;
- Session session2 = null;
- try{
- // 有使用者1开启了一个session1
- session1 = sf.openSession();
- // 在这之后,马上有另一个使用者2开启了session2
- session2 = sf.openSession();
- // 使用者1查询数据
- UserModel userV1 = (UserModel) session1.load(UserModel.class, "1");
- // 使用者2查询同一条数据
- UserModel userV2 = (UserModel) session2.load(UserModel.class, "1");
- // 此时两个版本号是相同的
- System.out.println("v1="+ userV1.getVersion() + ",v2="+ userV2.getVersion());
- Transaction tx1 = session1.beginTransaction();
- Transaction tx2 = session2.beginTransaction();
- // 使用者1更新数据
- userV1.setAge(111);
- tx1.commit();
- // 此时由于数据更新,数据库中的版本号递增了
- // 两笔数据版本号不一样了System.out.println("v1="+userV1.getVersion()+",v2="+ userV2.getVersion());
- // userV2 的 age 数据还是旧的
- // 数据更新
- userV2.setName("version test");
- // 因版本号比数据库中的旧
- // 修改会失败,抛出StableObjectStateException例外
- tx2.commit();
- }catch(Exception err){
- err.printStackTrace();
- }finally{
- session1.close();
- session2.close();
- }
- }
- }
Hibernate4教程二:基本配置(2)的更多相关文章
- Hibernate4教程二:基本配置
可编程的配置方式一: 如果在配置cfg.xml的时候,不想在里面配置hbm.xml怎么办呢?可在程序里使用可编程的配置方式,也就是使用程序来指定在cfg.xml里面的配置信息,不推荐这种方式.如下: ...
- Hibernate4教程二:基本配置(3)
被映射的类必须定义对应数据库表主键字段.大多数类有一个JavaBeans风格的属性, 为每一个实例包含唯一的标识.<id> 元素定义了该属性到数据库表主键字段的映射. java代码: &l ...
- Spring+SpringMvc+Mybatis框架集成搭建教程二(依赖配置及框架整合)
依赖导入以及框架整合 (1).打开项目的pom.xml文件,声明依赖 <project xmlns="http://maven.apache.org/POM/4.0.0" x ...
- Nginx教程(二) Nginx虚拟主机配置
Nginx教程(二) Nginx虚拟主机配置 1 虚拟主机管理 1.1 Nginx管理虚拟主机 虚拟主机使用的是特殊的软硬件技术,它把一台运行在因特网上的服务器主机分成一台台“虚拟”的主机,每台虚拟主 ...
- Nginx教程(二) Nginx虚拟主机配置 (转)
Nginx教程(二) Nginx虚拟主机配置 1 虚拟主机管理 1.1 Nginx管理虚拟主机 虚拟主机使用的是特殊的软硬件技术,它把一台运行在因特网上的服务器主机分成一台台“虚拟”的主机,每台虚拟主 ...
- Django笔记&教程 1-2 二 常用配置
Django 自学笔记兼学习教程第1章第2节--二 常用配置 点击查看教程总目录 新手建议简单浏览本文,不理解的建议跳过,不要强行理解. Django的设置涉及多个模块,需要了解Django的一些相关 ...
- struts2.1.6教程二、struts.xml配置及例程
1.配置文件的优先级 在struts2中一些配置(比如常量)可以同时在struts-default.xml(只读性),strtus-plguin.xml(只读性),struts.xml,struts. ...
- 手把手教从零开始在GitHub上使用Hexo搭建博客教程(二)-Hexo参数设置
前言 前文手把手教从零开始在GitHub上使用Hexo搭建博客教程(一)-附GitHub注册及配置介绍了github注册.git相关设置以及hexo基本操作. 本文主要介绍一下hexo的常用参数设置. ...
- C#微信公众号开发系列教程二(新手接入指南)
http://www.cnblogs.com/zskbll/p/4093954.html 此系列前面已经更新了两篇博文了,都是微信开发的前期准备工作,现在切入正题,本篇讲解新手接入的步骤与方法,大神可 ...
随机推荐
- 解决pycharm运行py文件时只有unittest选项的方法
有时候在编完脚本开始运行时,发现某个py脚本右键运行的选项不是run,二是run in unittest,试过很多方法都不能很好的去除,主要是因为脚本中含有test字符串,一种解决方法是将脚本中所有的 ...
- Redis复制实现原理
摘要 我的前一篇文章<Redis 复制原理及特性>已经介绍了Redis复制相关特性,这篇文章主要在理解Redis复制相关源码的基础之上介绍Redis复制的实现原理. Redis复制实现原理 ...
- Ubuntu NFS搭建过程
先简单介绍一下NFS服务器是什么? NFS server可以看作是一个FILE SERVER,它可以让你的PC通过网络将远端的NFS SERVER共享出来的档案MOUNT到自己的系统中,在CLIENT ...
- sqlmap 基本使用步骤(二)
post------------------------------------------------------------------1.使用 -rpython sqlmap.py -r pos ...
- cmd获取管理员权限等
鼠标点点点的略过 可输入命令 runas /user:Administrator cmd 或 runas /noprofile /user:Administrator cmd Administrato ...
- 多组件共享-vuex
1.解决多个组件共享同一状态数据问题1)多个视图共享同一状态2)来自不同视图的触发事件需要变更同一状态文档API:https://vuex.vuejs.org/zh/api/ 2.组件与store连接 ...
- django之模型类在视图中的应用
一:模型类直接从把前端表单传入的值,进行存储. @csrf_exempt def regist(request): if request.method == 'POST': form = UserFo ...
- python编程中的一个经典错误之list引用
请看下面代码 class User: def __init__(self, name, hobby=[]): self.name = name self.hobby = hobby def add_h ...
- ECS主动运维事件--让你HOLD住全场 (二)
背景 数月前,我们推出了新的功能:ECS主动运维事件--让你HOLD住全场 https://yq.aliyun.com/articles/573782?spm=a2c4e.11155435.0.0.7 ...
- 如何在微信小程序中使用iconfont
开篇废话 开发过小程序的童鞋肯定都会遇到这样的问题,当我们在小程序中使用iconfont官方推荐的方法插入字体时,我们总会得到一个打印机(滑稽).那么如何在小程序中正确的使用iconfont呢? 一. ...