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 此系列前面已经更新了两篇博文了,都是微信开发的前期准备工作,现在切入正题,本篇讲解新手接入的步骤与方法,大神可 ...
随机推荐
- 使用python3搭建Linux-mariadb主从架构
环境准备两台: 192.168.193.90 master 192.168.193.91 slave 需要Linux装python环境: https://www.cnblogs.com/kingzhe ...
- git如何上传大文件,突破大小限制
Github中单个文件的大小限制是100MB,为了能突破这个限制,我们需要使用Git Large File Storage这个工具, git lfs install git lfs track &qu ...
- django之mysql数据库的配置和orm交互
一:django默认数据库的配置 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path. ...
- Mac新手入门:mac操作技巧
面对全新的mac电脑,你是不是一脸的迷茫,一些原来windows上的基本操作在mac上都不知道从何入手了,下面小编就为大家整理了一些基本的操作.相信一定会方便你的学习和工作的. 如何压缩与解压缩 在M ...
- 对props的研究
Vue.component('my-component', { props: { // 基础的类型检查 (`null` 匹配任何类型) propA: Number, // 多个可能的类型 propB: ...
- ConversionService HttpMessageConverter
ConversionService是属于spring core部分 所有spring管理的bean等等 都使用它进行类型转换,而它又需要注册一些converter 来完成类型转换. 这个可以看我博客 ...
- python+selenium+pytest+html报告
背景:python+selenium+pytest+html报告 环境:我的是本机的Jenkins配置本机的代码 前提:要下载好HTML Publisher plugin插件[系统管理>管理插件 ...
- 饿了么CTO张雪峰:允许90后的技术人员“浮躁“一点
编者按:今年4月,饿了么正式加入了阿里新零售战队,进一步加速其在本地生活市场的扩张速度.在创业9年的时间中,饿了么在外卖领域经历了真正的“从0到1”,尤其是在外卖平台的技术升级方面,越过了一个又一个的 ...
- B/S选择文件夹上传
1 背景 用户本地有一份txt或者csv文件,无论是从业务数据库导出.还是其他途径获取,当需要使用蚂蚁的大数据分析工具进行数据加工.挖掘和共创应用的时候,首先要将本地文件上传至ODPS,普通的小文件通 ...
- 超大文件上传方案(B/S)
javaweb上传文件 上传文件的jsp中的部分 上传文件同样可以使用form表单向后端发请求,也可以使用 ajax向后端发请求 1.通过form表单向后端发送请求 <form id=" ...