参考:

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

1、系统配置:

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

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

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

  1. sessionFactory = new AnnotationConfiguration()
  2. .addPackage("test.animals") //the fully qualified package name
  3. .addAnnotatedClass(Flight.class)
  4. .addAnnotatedClass(Sky.class)
  5. .buildSessionFactory();

  

2、实体:

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

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

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

  1. @Entity
  2. @Table(name = "t_user")
  3. public class User {
  4.  
  5. @Id
  6. @GeneratedValue
  7. public Integer getUserID() {
  8. return userID;
  9. }
  10.  
  11. @Column(name = "create_time")
  12. public Date getCreateTime() {
  13. return createTime;
  14. }
  15.  
  16. public void setUserID(Integer userID) {
  17. this.userID = userID;
  18. }
  19. .......
  20.  
  21. }

  

  1. @Column(
  2. name="columnName"; (1) 可选,列名(默认值是属性名)
  3. boolean unique() default false; (2) 可选,是否在该列上设置唯一约束(默认值false)
  4. boolean nullable() default true; (3) 可选,是否设置该列的值可以为空(默认值false)
  5. boolean insertable() default true; (4) 可选,该列是否作为生成的insert语句中的一个列(默认值true)
  6. boolean updatable() default true; (5) 可选,该列是否作为生成的update语句中的一个列(默认值true)
  7. String columnDefinition() default ""; (6) 可选: 为这个特定列覆盖SQL DDL片段 (这可能导致无法在不同数据库间移植)
  8. String table() default ""; (7) 可选,定义对应的表(默认为主表)
  9. int length() default 255; (8) 可选,列长度(默认值255)
  10. int precision() default 0; // decimal precision (9) 可选,列十进制精度(decimal precision)(默认值0)
  11. 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. @Entity
    2. @Inheritance(strategy=InheritanceType.SINGLE_TABLE)
    3. @DiscriminatorColumn(
    4. name="planetype",
    5. discriminatorType=DiscriminatorType.STRING
    6. )
    7. @DiscriminatorValue("Plane")
    8. public class Plane { ... }
    9.  
    10. @Entity
    11. @DiscriminatorValue("A320")
    12. public class A320 extends Plane { ... }

      

  • 连接的子类(Joined subclasses)策略:在Hibernate中对应 <joined-subclass>元素 
  1. @Entity
  2. @Inheritance(strategy=InheritanceType.JOINED)
  3. public class Boat implements Serializable { ... }
  4.  
  5. @Entity
  6. public class Ferry extends Boat { ... }
  7.  
  8. @Entity
  9. @PrimaryKeyJoinColumn(name="BOAT_ID")
  10. public class AmericaCupClass extends Boat { ... }

  

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

  1. hibernate学习三(使用Annotation,注解)

    一.新建一个工程hibernate_02_HelloWorld_Annotation(复制01工程并重命名); 二.新建一个实体类teacher.java,数据库中新建teacher表; import ...

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

    BLOB和CLOB都是大字段类型,BLOB是按二进制字节码来存储的,而CLOB是可以直接存储字符串的. 在hibernate or JPA Annotation中,实体BLOB.CLOB类型的注解与普 ...

  3. Hibernate学习一:Hibernate注解CascadeType

    http://zy19982004.iteye.com/blog/1721846 ———————————————————————————————————————————————————————— Hi ...

  4. Rhythmk 学习 Hibernate 06 - Hibernate 表间关系 [One To One]

    1.One To One 单相 背景: 古代一个老婆  只能关联一个老公 husband.java package com.rhythmk.model; public class husband { ...

  5. Spring + Spring MVC + Hibernate项目开发集成(注解)

    在自己从事的项目中都是使用xml配置的方式来进行的,随着项目的越来越大,会发现配置文件会相当的庞大,这个不利于项目的进行和后期的维护.于是考虑使用注解的方式来进行项目的开发,前些日子就抽空学习了一下. ...

  6. Spring 4 MVC+Hibernate 4+MySQL+Maven使用注解集成实例

    Spring 4 MVC+Hibernate 4+MySQL+Maven使用注解集成实例 转自:通过注解的方式集成Spring 4 MVC+Hibernate 4+MySQL+Maven,开发项目样例 ...

  7. 转:HIBERNATE一些_方法_@注解_代码示例---写的非常好

    HIBERNATE一些_方法_@注解_代码示例操作数据库7步骤 : 1 创建一个SessionFactory对象 2 创建Session对象 3 开启事务Transaction : hibernate ...

  8. 实训第二天早上--hibernate之配置文件映射和注解

    hibernate 逐步优化第一步 只按照步骤来提取的jre包导入错误第二步 继续封装,把增删改查提取出来,同时进行代码的封装HQL语句  be stranger in the code .be fo ...

  9. [原创]java WEB学习笔记77:Hibernate学习之路---Hibernate 版本 helloword 与 解析,.环境搭建,hibernate.cfg.xml文件及参数说明,持久化类,对象-关系映射文件.hbm.xml,Hibernate API (Configuration 类,SessionFactory 接口,Session 接口,Transaction(事务))

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

随机推荐

  1. recv,recvfrom,send,sendto

    一般情况下:send(),recv()用于TCP,sendto()及recvfrom()用于UDP 但是send(),recv()也可以用于UDP,sendto()及recvfrom()也可以用于TC ...

  2. git源代码管理工具

    git是一款源代码管理工具 是分布式版本管理工具 分布式管理必须先在本地提交然后才能提交到服务器: svn集中式版本管理工具 集中式版本管理工具离开服务器就做不了版本管理: 初始化仓库 1.用git初 ...

  3. Oracle Sourcing Implementation and Administration Guide(转)

    原文地址 Oracle Sourcing Implementation and Administration Guide

  4. prim和kruskal比较

    推荐:http://squirrelrao.iteye.com/blog/1044867  http://www.cnblogs.com/xwdreamer/archive/2011/06/16/22 ...

  5. POJ 3126 Prime Path 广度优先搜索 难度:0

    http://poj.org/problem?id=3126 搜索的时候注意 1:首位不能有0 2:可以暂时有没有出现在目标数中的数字 #include <cstdio> #include ...

  6. 通过Ftp put命令上传导致文件损坏的解决办法

    通过Linux命令行向在一台Windows FTP服务器上传文件.然后在另一台Windows客户机登录FTP服务器下载,但是下载后的文件大小变了,exe文件错误了不能正确执行.刻意打包的文件(.rar ...

  7. Ubuntu文本编辑(vi和nano)命令

    vi是Unix世界里极为普遍的全萤幕文书编辑器,几乎可以说任何一台Unix机器都会提供这套软体就像windows的记事本一样. 键入 vi /etc/hosts 进入vi界面,把光标移动到文件未尾.按 ...

  8. ios系统降级

    1.使用PP助手/iTunes备份好文件资料,以防重要信息丢失: 2.设备连接iTunes,按住Shift键之后点击“恢复iPhone”,选择已下载好的iOS8.4.1固件,等待更新完成即可. 注意要 ...

  9. Centos7 服务 service 设置命令 systemctl 用法 (替代service 和 chkconfig)

    在Centos 中 systemctl  是设置系统服务的命令,即 service  ,   它融合之前service和chkconfig的功能于一体. 可以使用它永久性或只在当前会话中启用/禁用服务 ...

  10. Buildroot MariaDB替代MySQL

    /********************************************************************************* * Buildroot Maria ...