Hibernate(十二)注解开发
来源:互联网 发布:linux编译android源码 编辑:程序博客网 时间:2024/06/05 03:10
关于类:
每个实体类对应数据库一个表
1、@Entity 映射实体类
2、@Table 映射数句库表
属性:
name - 可选,表示表的名称,默认地,表名和实体名称一致,只有在不一致的情况下才需要指定表名
catalog - 可选,表示Catalog名称,默认为 Catalog(“”).
schema - 可选 , 表示 Schema 名称 , 默认为Schema(“”).
关于属性
@Id 映射生成主键
@Column(name=”id”) 指定列名
@Version 定义乐观锁
@Column 映射表的列
@Transient 定义暂态属性
@Id - 必须,定义了映射到数据库表的主键的属性,一个实体只能有一个属性被映射为主 键,置于 getXxxx() 前。
属性:
@GeneratedValue(strategy=GenerationType.AUTO) - 可选,用于定义主键生成并自增策略。
@Column - 可将属性映射到列,使用该注解来覆盖默认值,@Column描述了数据库表中 该字段的详细定义,这对于根据 JPA 注解生成数据库表结构的工具非常有作用。
属性:
name - 可选,表示数据库表中该字段的名称,默认情形属性名称一致
nullable -可选,表示该字段是否允许为 null,默认为true
unique - 可选,表示该字段是否是唯一标识,默认为 false
length - 可选,表示该字段的大小,仅对 String 类型的字段有效,默认值255.
insertable -可选,表示在ORM框架执行插入操作时,该字段是否应出现INSETRT 语句中,默认为 true
关联映射
双向多对一:多方有一方的引用,一方有多方的引用。
//级联,optional=true(默认true,作用是设置join连表查询方式,设置为false表示inner join) @ManyToOne(cascade=CascadeType.ALL,optional=true) @JoinColumn(name="boardroom_id")
双向一对一:两边都有多方的引用,方便查询。
@OneToOne(cascade=CascadeType.ALL)@JoinColumn(name="**_id",unique=true)
双向一对多:两边都有多方的引用,方便查询。
//fetch=FetchType.EAGER,设置延时加载类型@OneToMany(mappedBy="自己在另外一方的名字",cascade=CascadeType.ALL,fetch=FetchType.EAGER)
举例:会议室和黑板会会议者之间的关系
/** * 黑板实体类 */@Entity@Table(name="T_blackBoard")public class BlackBoardEntity { private int id; private int size; private BoardroomEntity boardroom; @Id @GeneratedValue(strategy=GenerationType.AUTO) @Column(name="id") public int getId() { return id; } public void setId(int id) { this.id = id; } @Column(name="size") public int getSize() { return size; } public void setSize(int size) { this.size = size; } @OneToOne(cascade=CascadeType.ALL) @JoinColumn(name="boardroom_id",unique=true) public BoardroomEntity getBoardroom() { return boardroom; } public void setBoardroom(BoardroomEntity boardroom) { this.boardroom = boardroom; } @Override public String toString() { return "BlackBoardEntity [id=" + id + ", size=" + size + "]"; }}
/** * 会议室实体类 */@Entity@Table(name="t_boardroom")public class BoardroomEntity { private int id; private String name; private String address; private BlackBoardEntity blackBoard; //关联黑板 private Set<ConventioneerEntity> conventioneer; //关联与会者 @Id @GeneratedValue(strategy=GenerationType.AUTO) @Column(name="id") public int getId() { return id; } public void setId(int id) { this.id = id; } @Column(name="name") public String getName() { return name; } public void setName(String name) { this.name = name; } @Column(name="address") public String getAddress() { return address; } public void setAddress(String address) { this.address = address; }// mappedBy自己在另外一方的名字, cascade 级联 @OneToOne(mappedBy="boardroom",cascade=CascadeType.ALL) public BlackBoardEntity getBlackBoard() { return blackBoard; } public void setBlackBoard(BlackBoardEntity blackBoard) { this.blackBoard = blackBoard; }// mappedBy自己在另外一方的名字,级联,fetch=FetchType.EAGER,设置延时加载类型 @OneToMany(mappedBy="boardroom",cascade=CascadeType.ALL,fetch=FetchType.EAGER) public Set<ConventioneerEntity> getConventioneer() { return conventioneer; } public void setConventioneer(Set<ConventioneerEntity> conventioneer) { this.conventioneer = conventioneer; } @Override public String toString() { return "BoardroomEntity [id=" + id + ", name=" + name + ", address=" + address + ", blackBoard=" + blackBoard + ", conventioneer=" + conventioneer + "]"; }}
/** * 会议者实体类 */@Entity@Table(name="t_conventioneer")public class ConventioneerEntity { private int id; private String name; private BoardroomEntity boardroom;//关联会议室 @Id @GeneratedValue(strategy=GenerationType.AUTO) @Column(name="id") public int getId() { return id; } public void setId(int id) { this.id = id; } @Column(name="name") public String getName() { return name; } public void setName(String name) { this.name = name; } //级联,optional=true(默认true,作用是设置join连表查询方式,设置为false表示inner join) @ManyToOne(cascade=CascadeType.ALL,optional=true) @JoinColumn(name="boardroom_id") public BoardroomEntity getBoardroom() { return boardroom; } public void setBoardroom(BoardroomEntity boardroom) { this.boardroom = boardroom; } @Override public String toString() { return "ConventioneerEntity [id=" + id + ", name=" + name + "]"; }}
最后记得在配置文件中添加映射:
<!-- 配置注解映射文件 --> <mapping class="com.zh.annotation.BoardroomEntity"></mapping> <mapping class="com.zh.annotation.BlackBoardEntity"></mapping> <mapping class="com.zh.annotation.ConventioneerEntity"></mapping>
- Hibernate(十二)注解开发
- hibernate注解开发,注解详解
- Hibernate-day03 Hibernate注解开发
- Hibernate的注解开发
- hibernate注解开发
- Hibernate注解开发
- Hibernate注解开发
- Hibernate注解开发
- hibernate 注解开发
- hibernate--注解开发
- hibernate注解开发相关
- Hibernate 注解开发
- 注解式开发-Hibernate基本注解
- Hibernate注解开发(第一部分基本注解)
- Hibernate注解开发(第二部分嵌入式注解)
- Hibernate中注解的开发
- hibernate使用注解简化开发
- hibernate 一对多注解开发
- PHP语言学习基础(二)
- python爬虫环境安装-mysql环境安装
- .NET银联支付开发(一):支付
- 图解树状数组
- hibernate为什么要配置数据库的方言
- Hibernate(十二)注解开发
- 滤波电路
- redis-01
- Python格式化输出
- localStorage、sessionStorage、cookie
- mybatis主配置文件解析
- 关于微信怎么刷票之微信投票怎么快速刷票及微信刷投票方法
- maven 常用命令 mvn 发布可执行jar包
- docker commands(doing)