zoukankan      html  css  js  c++  java
  • 03hibernate_basemapping_uuid_native_assigned

    hibernate基本映射:主键生成策略:uuid、native和assigned

    实体类---表
    实体类中的普通属性---表字段

    采用<class>标签映射成数据库表,通过<property>标签将普通属性映射成表字段
    所谓普通属性指不包括自定义类、集合和数组等

    注意:如果实体类和实体类中的属性和sql中的关键字重复,必须采用table或column重新命名

    实体类的设计原则:
        * 实现一个默认的(即无参数的)构造方法(constructor)
        * 提供一个标识属性(identifier property)(可选)
        * 使用非final的类 (可选)
        * 为持久化字段声明访问器(accessors)    

    主键生成策略:uuid、native和assigned

    a)ExportDB    
    create table t_user1 (user_id varchar(32) not null, name varchar(20) not null unique, password varchar(10) not null, create_time datetime, expire_time datetime, primary key (user_id))

    create table t_user2 (user_id integer not null auto_increment, name varchar(20) not null unique, password varchar(10) not null, createtime datetime, expiretime datetime, primary key (user_id))

    create table t_user3 (user_id varchar(32) not null, name varchar(20) not null unique, password varchar(10) not null, create_time datetime, expire_time datetime, primary key (user_id))

    b)BaseMappingTest:testSave
    Hibernate: insert into t_user1 (name, password, create_time, expire_time, user_id) values (?, ?, ?, ?, ?)
    Hibernate: insert into t_user2 (name, password, createtime, expiretime) values (?, ?, ?, ?)
    Hibernate: insert into t_user3 (name, password, create_time, expire_time, user_id) values (?, ?, ?, ?, ?)

    c)、uuid、native和assigned分别对应以下三张表:
    public class User1 {
        
        private String id;
        
        private String name;
        
        private String password;
        
        private Date createTime;
        
        private Date expireTime;
    <hibernate-mapping package="com.bjsxt.hibernate">
        <class name="User1" table="t_user1">
            <id name="id" column="user_id" length="32">
                <generator class="uuid"/>
            </id>
            <property name="name" unique="true" not-null="true" length="20"/>
            <property name="password" not-null="true" length="10"/>
            <property name="createTime" column="create_time"/>
            <property name="expireTime" column="expire_time"/>
        </class>
    </hibernate-mapping>
    mysql> select *  from t_user1;
    +----------------------------------+--------+----------+---------------------+---------------------+
    | user_id                          | name   | password | create_time         | expire_time         |
    +----------------------------------+--------+----------+---------------------+---------------------+
    | 402881e538dd22d20138dd22d4c50001 | 白龙马 | 123      | 2012-07-31 21:04:03 | 2012-07-31 21:04:03 |
    +----------------------------------+--------+----------+---------------------+---------------------+
    1 row in set (0.00 sec)


    public class User2 {
        
        private int id;
        
        private String name;
        
        private String password;
        
        private Date createTime;
        
        private Date expireTime;
        
        <hibernate-mapping package="com.bjsxt.hibernate">
        <class name="User2" table="t_user2">
            <id name="id" column="user_id">
                <generator class="native"/>
            </id>
            <property name="name" unique="true" not-null="true" length="20"/>
            <property name="password" not-null="true" length="10"/>
            <property name="createTime" column="createtime"/>
            <property name="expireTime" column="expiretime"/>
        </class>
    </hibernate-mapping>


    ------------------------------------------------------------------------------------
    mysql> select *  from t_user2;
    +---------+--------+----------+---------------------+---------------------+
    | user_id | name   | password | createtime          | expiretime          |
    +---------+--------+----------+---------------------+---------------------+
    |       1 | 孙悟空 | 123      | 2012-07-31 21:04:04 | 2012-07-31 21:04:04 |
    +---------+--------+----------+---------------------+---------------------+
    1 row in set (0.00 sec)

    public class User3 {
        
        private String id;
        
        private String name;
        
        private String password;
        
        private Date createTime;
        
        private Date expireTime;
    <hibernate-mapping package="com.bjsxt.hibernate">
        <class name="User3" table="t_user3">
            <id name="id" column="user_id" length="32">
                <generator class="assigned"/>
            </id>
            <property name="name" unique="true" not-null="true" length="20"/>
            <property name="password" not-null="true" length="10"/>
            <property name="createTime" column="create_time"/>
            <property name="expireTime" column="expire_time"/>
        </class>
    </hibernate-mapping>

    ------------------------------------------------------------------------------------
    mysql> select *  from t_user3;
    +---------+--------+----------+---------------------+---------------------+
    | user_id | name   | password | create_time         | expire_time         |
    +---------+--------+----------+---------------------+---------------------+
    | 001     | 猪八戒 | 123      | 2012-07-31 21:04:04 | 2012-07-31 21:04:04 |
    +---------+--------+----------+---------------------+---------------------+
    1 row in set (0.00 sec)
  • 相关阅读:
    python 并发编程 多线程 event
    python 并发编程 多线程 定时器
    python 并发编程 多线程 信号量
    linux top 查看CPU命令
    python 并发编程 多线程 GIL与多线程
    python 并发编程 多线程 死锁现象与递归锁
    python 并发编程 多线程 GIL与Lock
    python GIL全局解释器锁与互斥锁 目录
    python 并发编程 多线程 GIL全局解释器锁基本概念
    执行python程序 出现三部曲
  • 原文地址:https://www.cnblogs.com/alamps/p/2617402.html
Copyright © 2011-2022 走看看