zoukankan      html  css  js  c++  java
  • Java_注解之一

    注解可以替换复杂的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.1
    22  */
    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     @Id
    31     //主键生成策略
    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.2
    19  */
    20 @Entity
    21 @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     @Column
    31    private String job;
    32     @Column
    33    private String mgr;
    34     @Column
    35    private Date hiredate;
    36     @Column
    37    private Integer sal;
    38     @Column
    39    private Integer comm;
    40    @ManyToOne(fetch=FetchType.LAZY)
    41    @JoinColumn(name="DEPTNO")
    42    private Dept dept;
    43 
    44 }
  • 相关阅读:
    关于c#中的委托和事件
    Unity3d中默认函数调用顺序(MonoBehaviour)
    u3d 摄像机详解
    u3d中的坐标系
    u3d中的向量 vector3 vector2
    u3d中的INput
    C#构造函数
    解析C#中[],List,Array,ArrayList的区别及应用
    Mybatis(七) mybatis的逆向工程的配置详解
    Mybatis(六) Spring整合mybatis
  • 原文地址:https://www.cnblogs.com/john69-/p/5799198.html
Copyright © 2011-2022 走看看