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 此系列前面已经更新了两篇博文了,都是微信开发的前期准备工作,现在切入正题,本篇讲解新手接入的步骤与方法,大神可 ...
随机推荐
- 1142. Maximal Clique (25)
A clique is a subset of vertices of an undirected graph such that every two distinct vertices in the ...
- Wireshark中的结果分析
Header checksum: 0x9899 [validation disabled] 因为,wireshark不自动做tcp校验和的检验.原因是因为:有时tcp校验和会由网卡计算,因此wires ...
- pycharm中能运行,但是往往py都要放到服务器上去跑,问题来了
py文件在linux上运行,导包错误: 在py文件中添加项目的根目录: import sys sys.path.append('项目路径') sys.path.append(os.path.dirna ...
- 在父组件中,直接获取子组件数据-vue
1.通过 $ref 获取 主父组件中: <x-test ref="ch"></x-test> import XTest from '@/components ...
- windows 使用 git 客户端
git客户端下载地址:https://www.git-scm.com/ tortoisegit下载地址:https://tortoisegit.org/ 双击下载的安装包,默认安装直到完成. 打开gi ...
- 对webpack的初步研究2
Entry Points 如“ 入门”中所述,有多种方法可以entry在webpack配置中定义属性.我们会告诉你,你的方法可以配置的entry属性,除了解释为什么它可能对你有用 Single Ent ...
- Linux学习-MySQL的高可用性集群Galera Cluste
一.Galera Cluste简介 1.Galera Cluster 集成了Galera插件的MySQL集群,是一种新型的,数据不共享的,高度冗余的高可用方案,目前Galera Cluster有两个版 ...
- OC中SEL,类别,继承,协议的使用
1.SEL SEL是selector的缩写,selector在OC中作用是定义一个方法变量,通过该方法变量来调用方法.我们在后面的UI中会经常用selector来调用事件方法.下面我将举两个例子来说明 ...
- Oracle分组函数之Grouping Sets
功能介绍: 自定义分组的字段 创建表: 插入测试数据: Grouping Sets(null,t.classid,(t.classid,t.studentname)),类似于ROLLUP Select ...
- 使用sys.dm_exec_cached_plans监控存储过程性能
讨论了如何使用sys.dm_exec_query_stats动态管理视图(dmv ).本文将以SQL Server 2005为例,讨论如何利用dmv信息来判断tsql的性能优劣.在这篇文章中将继续我有 ...