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
原创粉丝点击