Hibernate的注解开发

学了一段时间的三大框架,最近再做练手项目时发现,Hibernate注解可以帮助我们大大简化hbm映射文件的配置,但是好多书和教学视频都没有教这一点,感觉很尴尬,自己又找资料好好学习了一下,记录之。

先看示例:

 1 package com.webShop.domain;
 2 import java.io.Serializable;
 3 import java.util.Set;
 4 import javax.persistence.;
 5 //定义实体类
 6 @Entity
 7 public class User implements Serializable {
 8     /*定义ID*/
 9     @Id
10     @GeneratedValue
11     private int id;
12     /*定义用户名*/
13     @Column(length=20)
14     private String username;
15     /*定义密码*/
16     @Column(length=20)
17     private String password;
18     /*定义身份证号*/
19     @Column(length=20)
20     private String cardId;
21     /*定义变量进行级联操作,并不进行延迟加载,使用list是不能设定多个FetchType.EAGER的,使用set可以*/
22     @OneToMany(cascade={CascadeType.ALL},fetch=FetchType.EAGER,mappedBy="user")
23     private Set<Address> address;
24     @OneToMany(cascade={CascadeType.ALL},fetch=FetchType.EAGER,mappedBy="user")
25     private Set<Depatement> department;
26     @OneToMany(cascade={CascadeType.ALL},fetch=FetchType.EAGER,mappedBy="user")
27     private Set<Phone> phone;
28     @OneToMany(fetch=FetchType.EAGER,mappedBy="user")
29     @OrderBy("id ASC")
30     private Set<ShoppingLog> shoppingLog;
31 //    不持久化该变量
32     @Transient
33     private String password1;
34 //    构造函数
35     
36     public User(String username,String password,String cardId){
37         this.username = username;
38         this.password = password;
39         this.cardId = cardId;
40         
41     }
42 //默认构造方法
43     public User(){
44    }
45 //省略getter和setter方法    
46 }

1:@Entity说明这个class是实体类,并且使用默认的orm规则,即class名即数据库表中表名,class字段名即表中的字段名
      如果想改变这种默认的orm规则,就要使用@Table(name="BigUser")来改变class名与数据库中表名的映射规则,@Column来改变class中字段名与db中表的字段名的映射规则

2:   @Id:声明一个主键

3:@GeneratedValue:用它来声明一个主键生成策略,默认情况是native主键生成策咯。可以选择的主键生成策略有:AUTO,IDENTITY,SEQUENCE

4:@Column:定义列

注意:就算在实体类内没有注解的字段也会在数据库表里生成响应的列

5:@Temporal:声明日期类型

6:@Transient   :忽略这些字段属性和属性,不用持久化到数据库

7:Hibernate关联映射:

一对一:@OneToOne

一对多:@OneToMany

多对一:@ManyToOne

多对多:@ManyToMany

使用方法很简单,看一遍上边示例就可以!

猜你喜欢

转载自www.cnblogs.com/nullering/p/8868286.html