注解可以替换复杂的hbm.xml文件,使得程序的开发大大简化

@Override    :子类重写父类方法

@Test  :junit测试

@Before  :测试之前执行

@SuppressWarnings     :防止代码报黄

@Entity  :标识实体类(被持久化)

@Table  :DB层表的名称

@Transient :不持久化某个属性

@Column:数据表中的字段名

@GenerateValue :主键生成策略

Hibernate提供了Hibernate Annotations扩展包,使用注解完成映射。

在Hibernate3.3之前,需单独下载注解开发包。

配置持久化类方式:

  @GeneratedValue指定了标识符的生成策略。JPA提供了4种标准用法。

  (1)AUTO:根据不同的数据库选择不同的策略。

  (2)TABLE:使用表保存id值。

  (3)INDENITY:使用数据库自动生成主键(主要是自动增长类型,如MySql、SQL Server)。

  (4)SEQUENCE:使用序列创建主键(如Oracle)。

配置持久化类的关联关系的方式:

1.实体类中注解的配置:

此案例中除  @GenericGenerator  的引用是org.hibernate.*外,  其他几个注解的引用皆为javax.persistence.*

  001.Dept

 package cn.happy.entity_annotations;

 import java.util.HashSet;
import java.util.Set; import javax.annotation.Generated;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table; import org.hibernate.annotations.GenericGenerator; /**
* 注解1.1
*/
@Entity
@Table(name="DEPT")
public class Dept { /*@Id @GeneratedValue(strategy=GenerationType.SEQUENCE,generator="seq_gen")
@SequenceGenerator(name="seq_gen",sequenceName="HIBERNATE_SEQUENCE",allocationSize=1,initialValue=4)*/ @Id
//主键生成策略
@GeneratedValue(generator="my_gen")
//自定义主键生成方式:uuid
@GenericGenerator(name="my_gen",strategy="uuid")
private Integer deptNo; @Column(name="DNAME")
private String deptName; @Column(name="LOC")
private String loc; @OneToMany(mappedBy="dept",cascade={CascadeType.ALL})
private Set<Emp> emps = new HashSet<Emp>();
}

@Id @GeneratedValue(strategy=GenerationType.SEQUENCE,generator="seq_gen")
@SequenceGenerator(name="seq_gen",sequenceName="SEQ_Num",allocationSize=1,initialValue=4)

  (1)使用@GeneratedValue设置主键生成策略。strategy=GenerationType.SEQUENCE描述了主键生成策略为Sequence,

  generator="seq_emp"指定了生成器为 seq_emp。

  (2)使用@SequenceGenerator设置了序列生成器,name="seq_name" 定义了序列生成器的名称为seq_emp;

  seqenceName="seq_emp_id" 指定了序列Sequence的名称为seq_emp_id,数据库中需创建序列Sequence,名称为seq_emp_id;

  initialValue=1  设置了主键初始值,默认为0;   allocationSize=1 表示预分配多少个主键值,如设置为1,表示不预分配主键值,默认为50.

  002.Emp

 package cn.happy.entity_annotations;

 import java.util.Date;

 import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQuery;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table; /**
* 注解1.2
*/
@Entity
@Table (name="EMP")
@NamedQuery(name="selectEmp",query="from Emp e where e.empId>:eno")
public class Emp {
@Id @GeneratedValue(strategy=GenerationType.SEQUENCE,generator="seq_gen")
@SequenceGenerator(name="seq_gen",sequenceName="SEQ_Num",allocationSize=1,initialValue=4)
@Column (name="EMPNO")
private Integer empId;
@Column (name="ENAME")
private String empName;
@Column
private String job;
@Column
private String mgr;
@Column
private Date hiredate;
@Column
private Integer sal;
@Column
private Integer comm;
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="DEPTNO")
private Dept dept; }

Java_注解之一的更多相关文章

  1. Java_注解_01_注解(Annotation)详解

    一.注解的概念 Annotation(注解)是插入代码中的元数据(元数据从metadata一词译来,就是“描述数据的数据”的意思),在JDK5.0及以后版本引入.它可以在编译期使用预编译工具进行处理, ...

  2. java_注解

    注解1    注解的概念    jdk自带的注解    声明与使用注解的基本语法        注解的概念        在javaEE与开源框架中广泛使用,泛型在集合框架中广泛使用        注 ...

  3. Java_注解_异常_01_ElementType cannot be resolved to a variable

    一.异常现象: 自定义注解时, @Retention和@Target都能导入进来,但是却报下列错误: RetentionPolicy cannot be resolved to a variable ...

  4. Java_注解_00_资源贴

    1.Java注解教程:自定义注解示例,利用反射进行解析 2. (1)深入理解Java:注解(Annotation)基本概念 (2)深入理解Java:注解(Annotation)自定义注解入门 (3)深 ...

  5. Java_注解之二

    在上一次的注解案例里面配置注解的同时,也添加了一对多(@OneToMany)的关系在里面. 本次将补充上次的缺失:其他三种关联方式的配置. 为了简化配置的复杂度   在此案例中Emp和Dept并不是唯 ...

  6. java_基础_注解

    注解(annotation),不是注释(comment) 注解可以对程序做说明,这一点和注释一样但是,注解还可以被其他程序读取,这是注释所不具备的 内置注解:@Override(表示重写父类方法)—— ...

  7. Java_框架面试题

    Java_框架面试题 欢迎来我Git上分享您的优秀建议 1.Spring框架分为哪七大模块,各模块的主要功能作用是什么? 七大模块,如下: 1. Spring Core: Core封装包是框架的最基础 ...

  8. 基于spring注解AOP的异常处理

    一.前言 项目刚刚开发的时候,并没有做好充足的准备.开发到一定程度的时候才会想到还有一些问题没有解决.就比如今天我要说的一个问题:异常的处理.写程序的时候一般都会通过try...catch...fin ...

  9. [Spring]IoC容器之进击的注解

    先啰嗦两句: 第一次在博客园使用markdown编辑,感觉渲染样式差强人意,还是github的样式比较顺眼. 概述 Spring2.5 引入了注解. 于是,一个问题产生了:使用注解方式注入 JavaB ...

随机推荐

  1. linux常用命令大全(linux基础命令+命令备忘录+面试复习)

    linux常用命令大全(linux基础命令+命令备忘录+面试复习)-----https://www.cnblogs.com/caozy/p/9261224.html

  2. vue 添加axios解决post传参数为null问题

    本文主要参考: https://www.npmjs.com/package/axios http://jingyan.baidu.com/article/29697b916d6a7bab20de3cf ...

  3. UVA 12686 Trending Topic

    Trending Topic Time limit: 1.000 seconds Imagine you are in the hiring process for a company whose p ...

  4. cookie & cookies

    cookie & cookies "use strict"; /** * * @author xgqfrms * @license MIT * @copyright xgq ...

  5. FZU 2105 (线段树)

     Problem 2105 Digits Count  Problem Description Given N integers A={A[0],A[1],...,A[N-1]}. Here we h ...

  6. sdibt 1244类似于拓扑排序

    博客:http://blog.csdn.net/mypsq/article/details/39005991 #include<stdio.h> #include<string.h& ...

  7. objective-c 通告

    1. 通告和委托的区别 通告也能传递与事件相关的数据.通告不同于委托的地方在于,通告是在对象执行完成动作之后产生,而不是之前.受到通告的对象没有机会建议是否要执行动作,而且对象的通告可以有多个监听者( ...

  8. nyoj_518_取球游戏_201404161738

    取球游戏 时间限制:1000 ms  |  内存限制:65535 KB 难度:2   描述 今盒子里有n个小球,A.B两人轮流从盒中取球,每个人都可以看到另一个人取了多少个,也可以看到盒中还剩下多少个 ...

  9. -- > define的用法与学习(1)

    在不久之前,我一直不理解为神马大家在做题时经常用define来代替某些函数,或者用来直接定义某些极大的变量.It is not until today that I understand why it ...

  10. Oracle Multitenant Environment (二) Purpose

    Purpose of a Multitenant Environment A multitenant environment enables the central management of mul ...