Rhythmk 学习 Hibernate 07 - Hibernate annotation 实体注解

参考:

http://docs.jboss.org/hibernate/annotations/3.4/reference/zh_cn/html_single/

1、系统配置:

可以通过使用  mapping的 resource,于class
属性混合配置


<mapping resource="com/rhythmk/model/product.hbm.xml" />


<mapping class="com.rhythmk.model.User"></mapping>

在创建SessionFactory 也可以通过代码完成映射关联:

?





1

2

3

4

5

sessionFactory = new
AnnotationConfiguration()

                    .addPackage("test.animals") //the fully qualified package name

                    .addAnnotatedClass(Flight.class)

                    .addAnnotatedClass(Sky.class)

                   .buildSessionFactory();

  

2、实体:

》每一个持久化POJO类都是一个实体bean,这可以通过在类的定义中使用@Entity

》hibernate的访问类型分别为 fieldproperty.
EJ3规范要求在需要访问的元素上进行注解声明,例如,如果访问类型为 property就要在getter方法上进行注解声明, 如果访问类型为 field就要在字段上进行注解声明.应该尽量避免混合使用这两种访问类型

》实体bean中所有的非static非transient的属性都可以被持久化,
除非你将其注解为@Transient.

?





1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

@Entity

@Table(name = "t_user")

public class User {

    @Id

    @GeneratedValue

    public
Integer getUserID() {

        return
userID;

    }

    @Column(name = "create_time")

    public
Date getCreateTime() {

        return
createTime;

    }

    public
void setUserID(Integer userID) {

        this.userID = userID;

    }

.......<br><br>}

  

?





1

2

3

4

5

6

7

8

9

10

11

@Column(

    name="columnName";                                (1)  可选,列名(默认值是属性名)

    boolean
unique() default
false;                   (2)  可选,是否在该列上设置唯一约束(默认值false)

    boolean
nullable() default
true;                  (3)  可选,是否设置该列的值可以为空(默认值false)

    boolean
insertable() default
true;                (4)  可选,该列是否作为生成的insert语句中的一个列(默认值true)

    boolean
updatable() default
true;                 (5)  可选,该列是否作为生成的update语句中的一个列(默认值true)

    String columnDefinition() default
"";             (6)  可选: 为这个特定列覆盖SQL DDL片段 (这可能导致无法在不同数据库间移植)

    String table() default
"";                        (7)  可选,定义对应的表(默认为主表)

    int
length() default
255;                         (8)  可选,列长度(默认值255)

    int
precision() default
0; // decimal precision   (9)  可选,列十进制精度(decimal precision)(默认值0)

    int
scale() default
0; // decimal scale           (10) 可选,如果列十进制数值范围(decimal scale)可用,在此设置(默认值0)

3、映射继承关系:

  • 每个类一张表(Table per class)策略: 在Hibernate中对应<union-class>元素:

  • 每个类层次结构一张表(Single table per class
    hierarchy)策略:在Hibernate中对应<subclass>元素

  • ?





    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    @Entity

    @Inheritance(strategy=InheritanceType.SINGLE_TABLE)

    @DiscriminatorColumn(

        name="planetype",

        discriminatorType=DiscriminatorType.STRING

    )

    @DiscriminatorValue("Plane")

    public
    class Plane { ... }

    @Entity

    @DiscriminatorValue("A320")

    public
    class A320 extends
    Plane { ... }

      


  • 连接的子类(Joined subclasses)策略:在Hibernate中对应 <joined-subclass>元素 

?





1

2

3

4

5

6

7

8

9

10

@Entity

@Inheritance(strategy=InheritanceType.JOINED)

public class Boat implements
Serializable { ... }

@Entity

public class Ferry extends
Boat { ... }

@Entity

@PrimaryKeyJoinColumn(name="BOAT_ID")

public
class AmericaCupClass  extends
Boat { ... }

  

Rhythmk 学习 Hibernate 07 - Hibernate annotation 实体注解,布布扣,bubuko.com

时间: 2024-10-12 17:30:01

Rhythmk 学习 Hibernate 07 - Hibernate annotation 实体注解的相关文章

Rhythmk 学习 Hibernate 08 - Hibernate annotation 关联关系注解

1.一对一 (One to One)    共三种情况:     1.1 主键共享    1.2 外键共享 1.3 中间表关联 1.1  code: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 @Entity public class article {     @Id     @GeneratedValue    public Integer getArticleId() {         return articleId;     }     .....  

Rhythmk 学习 Hibernate 03 - Hibernate 之 延时加载 以及 ID 生成策略

Hibernate 加载数据 有get,跟Load 1.懒加载: 使用session.load(type,id)获取对象,并不读取数据库,只有在使用返回对象值才正真去查询数据库. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 @Test    public void  test1()    {        Session session = null;         try {             session = Hiber

Hibernate or JPA Annotation中BLOB、CLOB注解写法

BLOB和CLOB都是大字段类型,BLOB是按二进制字节码来存储的.而CLOB是能够直接存储字符串的. 在hibernate or JPA Annotation中.实体BLOB.CLOB类型的注解与普通的实体属性有些不同,详细操作例如以下: BLOB类型,类型声明为byte[]: private byte[] content; 注解: @Lob @Basic(fetch = FetchType.LAZY) @Column(name = "CONTENT", columnDefiniti

Hibernate中的Annotation注解与XML配置的使用

通过XML配置来实现持久化: 首先我们来建立一个实体类: package com.hibernate.model; public class Student {     private int id;     private String name;     private int age;          public int getId() {         return id;     }     public void setId(int id) {         this.id 

Hibernate学习一:Hibernate注解CascadeType

http://zy19982004.iteye.com/blog/1721846 ———————————————————————————————————————————————————————— Hibernate学习一:Hibernate注解CascadeType 博客分类: Hibernate hibernate 一.概念 现有一场景:一个管理员可以管理多个网吧,一个网吧可以被多个管理员管理.从中抽象出一个多对多的例子user-bar. 主控方user:多对多里面里面会有第三张表user_b

Rhythmk 学习 Hibernate 02 - Hibernate 之 瞬时状态 离线状态 持久化状态 三状态

by:rhythmk.cnblogs.com 1.Hibernate 三种状态: 1.1.三种定义(个人理解,不一定准确):  瞬时状态(transient):    不被session接管,且不存在数据库中的对象的状态,类似于新New一个对象  离线状态 (detached):    数据库中存在而不被session接管  持久化状态(persistent): 对象被session管理且数据库中存在此对象 1.2. 状态之间转换关系图 2 .状态转换以及Hibernate数据库执行过程详解:

Rhythmk 学习 Hibernate 04 - Hibernate 辅助工具 之 JBoos Tool

1.安装JBoos Tool Help -> Install new Software 然后添加: http://download.jboss.org/jbosstools/updates/development http://download.jboss.org/jbosstools/updates/stable/ 稍等一刻,选择 Hibernate tool 下一步 ,完成后重启Eclipse即可. 2.项目配置文件生成: 2.1 新建一项目,项目右键生成相关配置 然后如图: 2.2 此处需

Rhythmk 学习 Hibernate 05 - Hibernate 表间关系 [ManyToOne,OneToMany]

1.项目结构: 1.1.场景说明: 一个订单,包含多个产品 1.2.类文件: Order.java ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 package com.rhythmk.model; import java.util.Date; public

Rhythmk 学习 Hibernate 01 - maven 创建Hibernate 项目之 增删改查入门

1.环境: Maven :3.1.1 开发工具:Spring Tool Suite 数据库 : Mysql  5.6 2.项目文件结构 文件代码: 2.1 .pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.ap