Hibernate映射主键属性
来源:互联网 发布:windows查看内存类型 编辑:程序博客网 时间:2024/05/16 17:59
主键:如果是数字,建议使用包装类型identity:使用数据库的自动增长策略,不是所有数据库都支持,比如oracle就不支持sequence:在 DB2,PostgreSQL,Oracle,SAP DB,McKoi 中使用序列(sequence)自动增长策略hilo:使用高低位算法来生成主键值,只需要一张额外的表,所有数据库都支持native:根据底层数据库的能力选择 identity、sequence 或者 hilo 中的一个。increment:由Hibernate维护的自动增长。先查询最大的id值,再加1使用,不推荐使用,因为在多线程下会有问题assigned:手工指定主键id值 uuid:由Hibernate自动生成UUID并指定为主键值。
<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><!-- 导入包 --><hibernate-mapping package="cn.itcast.d_hbm_id"><!-- 类名 --><class name="User" table="d_user"><!-- id元素用于映射主键 子元素generator是用于指定主键生成策略的(以某种方式来生成主键值)。 --><id name="id" type="string" column="id"><!-- identity:使用数据库的自动增长策略,不是所有数据库都支持,比如oracle就不支持<generator class="identity"/> --> <!-- sequence:在 DB2,PostgreSQL,Oracle,SAP DB,McKoi 中使用序列(sequence)自动增长策略<generator class="sequence"/> --> <!-- hilo:使用高低位算法来生成主键值,只需要一张额外的表,所有数据库都支持 <generator class="hilo"> <param name="table">hi_value</param> <param name="column">next_value</param> <param name="max_lo">100</param> </generator>--> <!-- native:根据底层数据库的能力选择 identity、sequence 或者 hilo 中的一个。 <generator class=""/> --> <!-- increment:由Hibernate维护的自动增长。先查询最大的id值,再加1使用,不推荐使用,因为在多线程下会有问题 <generator class="increment"/> --> <!-- assigned:手工指定主键id值 <generator class="assigned"/> --> <!-- uuid:由Hibernate自动生成UUID并指定为主键值。 <generator class="uuid"/> --> <!-- foreign:当前值是外键 --></id><property name="name" type="string" column="name" /></class></hibernate-mapping>
package cn.itcast.d_hbm_id;/** * 实体 * * @author 风清杨 * @version V1.0 */public class User {// private Integer id;// 编号private String id;private String name;// 姓名public String getId() {return id;}public void setId(String id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic String toString() {return "User [id=" + id + ", name=" + name + "]";}}
package cn.itcast.d_hbm_id;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.hibernate.cfg.Configuration;import org.junit.Test;/** * 操作类 * * @author 风清杨 * @version V1.0 */public class App {private static SessionFactory sessionFactory;// 创建会话工厂// 初始化配置static {// 会话工厂生成sessionFactory = new Configuration()//.configure()//.addClass(User.class)// 添加hibernate实体类(加载对应的映射文件).buildSessionFactory();}/** * 保存 */@Testpublic void testSave() throws Exception {Session session = sessionFactory.openSession();// 打开SessionTransaction tx = null;try {tx = session.beginTransaction();// 开始事务// --------------------------------User user = new User();// user.setId(99);// user.setId("itcast_002");user.setName("林天");session.save(user);// session.save(new User());// --------------------------------tx.commit();// 提交事务} catch (Exception e) {tx.rollback();// 回滚事务throw e;} finally {session.close();// 释放资源}}/** * 保存 */@Testpublic void testSave_100() throws Exception {Session session = sessionFactory.openSession();// 打开SessionTransaction tx = null;try {tx = session.beginTransaction();// 开始事务// --------------------------------for (int x = 1; x < 101; x++) {User user = new User();// user.setId(99);user.setName("林天" + x);session.save(user);}for (int x = 1; x < 101; x++) {User user = new User();// user.setId(99);user.setName("林天" + x);session.save(user);}// --------------------------------tx.commit();// 提交事务} catch (Exception e) {tx.rollback();// 回滚事务throw e;} finally {session.close();// 释放资源}}@Testpublic void testGet() throws Exception {Session session = sessionFactory.openSession();Transaction tx = null;try {tx = session.beginTransaction();// --------------------------------User user = (User) session.get(User.class, 99);System.out.println(user.getId());System.out.println(user.getName());// --------------------------------tx.commit();} catch (RuntimeException e) {tx.rollback();throw e;} finally {session.close();}}}
0 0
- Hibernate映射主键属性
- hibernate注解--映射主键属性
- 2 Hibernate映射 属性 主键 集合 组件 联合主键
- Hibernate入门(3):属性映射 & 主键映射
- Hibernate中多属性构成复合主键映射
- Hibernate中多属性构成复合主键映射
- hibernate使用注解时映射主键属性的细节
- Hibernate框架基础——映射主键属性
- hibernate无主键映射
- hibernate映射主键 id
- hibernate复合主键映射
- Hibernate复合主键映射
- Hibernate复合主键映射
- Hibernate映射联合主键
- Hibernate联合主键映射
- hibernate映射联合主键
- Hibernate复合主键映射
- hibernate主键映射
- python连接oracel数据库,提取数据后制图并通过邮件发送
- jQ基础 类样式的几种
- CornerStone的使用
- TIOBE Index for April 2017(2017年04月编程语言排行榜)
- 【MySQL】MySQL关键字作为列名表名的处理方式
- Hibernate映射主键属性
- first
- Swift Invalid bitcode version (Producer: '802.0.41.0_0' Reader: '800.0.42.1_0')
- Arduino对舵机的控制
- Mapreduce实例---流量汇总(自定义类)
- Spring Boot与Thymeleaf集成
- 线程问题
- eclipse异常:in project 'xxx' cannot be read or is not a valid ZIP file
- android 内存泄漏小结