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 此系列前面已经更新了两篇博文了,都是微信开发的前期准备工作,现在切入正题,本篇讲解新手接入的步骤与方法,大神可 ...
随机推荐
- Linux学习之旅(一)Linux常用命令
pwd命令 显示当前所在的目录 ls命令 显示目录下的子目录和文件 ls 显示当前目录下的子目录和文件 ls -a 显示当前目录下的所以子目录和文件(包括隐藏文件和文件夹) ls -al 显 ...
- 关于windows服务器配置
#我是用的window service2008系统,在配置服务器时由于是用php进行搭建 #首先我安装好phpstudy,通过服务器ip访问,显示了个helloworld,我查看了phpstudy里的 ...
- [python 学习] sax
#!/usr/bin/python # -*- coding: UTF-8 -*- import xml.sax class MovieHandler( xml.sax.ContentHandler ...
- Intent.java分析
代码位于frameworks/base/core/java/anroid/Content/Intent.java Intent是对要进行操作的一种抽象描述.用action抽象操作,用data(andr ...
- 51nod1600 Simple KMP
题目描述 对于一个字符串|S|,我们定义fail[i],表示最大的x使得S[1..x]=S[i-x+1..i],满足(x<i) 显然对于一个字符串,如果我们将每个0<=i<=|S|看 ...
- 5 个免费的受欢迎的 SQLite 管理工具
SQLite Expert – Personal Edition SQLite Expert 提供两个版本,分别是个人版和专业版.其中个人版是免费的,提供了大多数基本的管理功能. SQLite Exp ...
- python+selenium 滑动滚动条的操作
工作中碰到一种情况就是,要定位的元素需要滚动条滑到下方后才可以显示出来. 这种情况下,就要先滑动滚动条,再定位元素. 那么滑动滚动条我以前记录了appium中的操作,那么,selenium中该如何操作 ...
- Java连接MySql数据库之JDBC
1.首先创建一个java Project项目 2.起一个英文的项目名 3.此窗口点击NO 4.此时项目状态如下 5.创建一个文件夹,并将mysql-connector-java-5.1.8-bin.j ...
- EZOJ #362历史
分析 就是保存前pi-1个数每个ai出现多少次 然后维护这些数当前剩余的最大值 每次和新加进来的比较即可 如果新的大直接取 否则新的最大值一定不大于原来的最大值 因此o(n) 代码 #include& ...
- docker 配置sonatype/nexus3
docker search nexusdocker pull sonatype/nexus3mkdir -p /dockermaven/nexus-datachmod -R 777 /dockerma ...