Java注解之一
来源:互联网 发布:蔡康永的母亲 知乎 编辑:程序博客网 时间:2024/06/06 01:58
注解可以替换复杂的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
1 package cn.happy.entity_annotations; 2 3 import java.util.HashSet; 4 import java.util.Set; 5 6 import javax.annotation.Generated; 7 import javax.persistence.CascadeType; 8 import javax.persistence.Column; 9 import javax.persistence.Entity;10 import javax.persistence.GeneratedValue;11 import javax.persistence.GenerationType;12 import javax.persistence.Id;13 import javax.persistence.OneToMany;14 import javax.persistence.SequenceGenerator;15 import javax.persistence.Table;16 17 import org.hibernate.annotations.GenericGenerator;18 19 20 /**21 * 注解1.122 */23 @Entity 24 @Table(name="DEPT")25 public class Dept {26 27 /*@Id @GeneratedValue(strategy=GenerationType.SEQUENCE,generator="seq_gen")28 @SequenceGenerator(name="seq_gen",sequenceName="HIBERNATE_SEQUENCE",allocationSize=1,initialValue=4)*/29 30 @Id31 //主键生成策略32 @GeneratedValue(generator="my_gen")33 //自定义主键生成方式:uuid 34 @GenericGenerator(name="my_gen",strategy="uuid")35 private Integer deptNo;36 37 @Column(name="DNAME")38 private String deptName;39 40 @Column(name="LOC")41 private String loc;42 43 @OneToMany(mappedBy="dept",cascade={CascadeType.ALL})44 private Set<Emp> emps = new HashSet<Emp>();89 }
@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
1 package cn.happy.entity_annotations; 2 3 import java.util.Date; 4 5 import javax.persistence.Column; 6 import javax.persistence.Entity; 7 import javax.persistence.FetchType; 8 import javax.persistence.GeneratedValue; 9 import javax.persistence.GenerationType;10 import javax.persistence.Id;11 import javax.persistence.JoinColumn;12 import javax.persistence.ManyToOne;13 import javax.persistence.NamedQuery;14 import javax.persistence.SequenceGenerator;15 import javax.persistence.Table;16 17 /**18 * 注解1.219 */20 @Entity21 @Table (name="EMP")22 @NamedQuery(name="selectEmp",query="from Emp e where e.empId>:eno")23 public class Emp {24 @Id @GeneratedValue(strategy=GenerationType.SEQUENCE,generator="seq_gen")25 @SequenceGenerator(name="seq_gen",sequenceName="SEQ_Num",allocationSize=1,initialValue=4)26 @Column (name="EMPNO")27 private Integer empId;28 @Column (name="ENAME")29 private String empName; 30 @Column31 private String job;32 @Column33 private String mgr;34 @Column35 private Date hiredate;36 @Column37 private Integer sal;38 @Column39 private Integer comm;40 @ManyToOne(fetch=FetchType.LAZY)41 @JoinColumn(name="DEPTNO")42 private Dept dept;43 44 }
- Java注解之一
- Android公共技术点之一-Java注解
- 史上最全的java spring注解,没有之一
- Java基本注解(1.5新特性之一)
- java 定时任务之一 @Scheduled注解(第一种方法)
- spring注解学习之一
- spring2.5注解介绍之一
- spring2.5注解介绍之一
- 17.笔记JAVA Spring框架学习————基于注解配置Bean之一
- Java注解-自定义注解
- Java注解----自定义注解
- Java注解自定义注解
- Java注解--四种元注解
- Java注解-三种內建注解
- 【Java】【注解】自定义注解
- Java-之一
- java注解
- java注解
- Visual Studio:error MSB8020
- art 进入grub2 shell
- 关于无法访问HttpRequestBase 找不到org.apache.http.client.methods.HttpRequestBase
- Android Fragment 真正的完全解析(下) (转)
- Java内存回收算法
- Java注解之一
- 数据结构04串
- linux进程管理
- c接口导出到lua中使用
- scope的生命周期
- Java程序运行机制及cmd编译运行探究(一)准备工作
- 5-2 输出全排列 (20分)
- 说说 JavaScript Date 类型
- css将彩图置灰