Hibernate主键生成策略的验证之Increment
来源:互联网 发布:网络发彩信 编辑:程序博客网 时间:2024/06/04 00:41
Hibernate主键生成策略的验证之Increment
1. 完成配置,准备好环境。
hibernate.cfg.xml<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN""http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"><hibernate-configuration>
<!-- Hibernate中数据库的连接是通过Session来实现的 --><session-factory>
<!-- 数据库连接配置 --><property name="connection.driver_class">com.mysql.jdbc.Driver</property><property name="hibernate.connection.url"> jdbc:mysql:///hbm3</property><property name="connection.username">liwei</property><property name="connection.password">liwei</property>
<!-- 配置数据库方言 --><property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property><!-- 常用属性 --><!-- 控制台显示sql --><property name="hibernate.show_sql">true</property><!-- 格式化sql --><property name="hibernate.format_sql">true</property>
<!-- 自动根据类生成DDL 表 完成自动建表 --><!--create 会删掉原有表和数据 然后新建一张表并且把数据做进去create-drop 会在程序运行结束时候把表删了update 如何类的映射发生了变化,不会改变原有的列,在数据表中增添新的列validate 只负责校验当前的表结构和映射是否一致,如果不一致就抛出异样。不会更新表结构.
--><property name="hibernate.hbm2ddl.auto">update</property><!-- 事务是否自动提交 --><property name="hibernate.connection.autocommit">false</property><!-- 在核心配置文件中加载模型映射文件 --><mapping file="src/com/Customer.hbm.xml"/>
</session-factory>
</hibernate-configuration>-----------------------------------------------------------------------------------------------------------------------------Customer.hbm.xml<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-mapping PUBLIC"-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><hibernate-mapping>
<!-- 实体映射文件 -->
<class name="com.Customer" table="Customer" catalog="hbm3">
<id name="id" column="id" type="int"><generator class="increment" /></id><property name="name" column="name" type="java.lang.String" /><property name="age"><column name="age" sql-type="int"></column></property><property name="city" column="city" type="string" />
</class>
</hibernate-mapping>----------------------------------------------------------------------------------------------------------------------测试类 这里只写方法就可以了// 测试主键生成策略@Testpublic void demo2(){
Session session = HibernateUtils.openSession();Transaction transaction = session.beginTransaction();Customer customer = new Customer();customer.setAge(23);customer.setCity("山东");customer.setName("黑宋江");session.save(customer);transaction.commit();session.close();
}DB状态下断点,启动测试。当前只有一个线程运行,看下图蓝线出
接下来F6到下一行,在看图 蓝线出已经变了此时不往下运行,退出debgu模式,再开一个debug线程第二个线程出现
F6往下一行此时两个线程都拿到相同的id=2准备往数据库中插入数据了选择一个继续往下运行,结束线程
查看DB数据 黑宋江已经插入数据了
结束还没有结束的线程出错了 数据没插进去 主键重复DB还是刚刚的状态
这里可以查看一下DB中的建表语句,证实一件事情,就是id字段是由hibernate自己维护的,并不是DB生成的。看
id字段没有自增设置吧。
OK,完毕!
0 0
- Hibernate主键生成策略的验证之Increment
- hibernate主键生成策略increment和identify的区别
- Hibernate increment主键生成策略带来的问题(转)
- ”伪集群“导致的Hibernate主键increment生成策略异常
- Hibernate--Increment和Hilo主键生成策略原理
- hibernate主键生成策略注意native和increment
- Hibernate主键策略increment和identify的区别
- Hibernate之主键生成策略
- Hibernate之主键生成策略
- Hibernate之主键生成策略
- Hibernate的increment主键生成机制带来的问题(转)
- Hibernate的increment主键生成机制带来的问题(转) .
- hibernate的increment主键生成机制带来的问题
- Hibernate-主键映射之主键生成策略
- hibernate主键的生成策略
- Hibernate的主键生成策略
- hibernate的主键生成策略
- Hibernate的主键生成策略
- restrict
- struts2上传文件
- 用編程方式證明Hibernate中一級緩存的存在
- Hibernate入门 CRUD
- android基础——对Java中注释/**@hide*/的初步认识
- Hibernate主键生成策略的验证之Increment
- 递归字符串查找
- codeforces #221(div2)B. I.O.U.
- sicily 1200stick
- Spring - Bean生命周期
- !!!Obj-c on Mac --- Chapter 9 Memory Management
- Spring - Bean作用域
- 如何利用Python和win32编程避免重复性体力劳动(二)——菜单操作:GetMenu,GetSubMenu,GetMenuItemID以及wParam的HIWORD&LOWORD
- 黑马程序员---Java基础学习之算术运算符、赋值运算符、比较运算符、逻辑运算符