hibernate注解简单使用
来源:互联网 发布:ios屏幕检测软件 编辑:程序博客网 时间:2024/06/06 20:08
最近刚学的hibernate,用来写东西,出现挺多问题的,下面说的都是比较简单实用的。
前提:
这篇对hibernate的注解的一些参数的介绍的不是很不全(通常只是介绍例子中给出的注解解析),要更完整的了解其中一个注解可以再继续查询这个注解。
这篇更多的是我自己学hibernate的总结,然后把注解列举一下,方便查找。
映射实体类例子
一般文件类DefaultFile
@MappedSuperclass@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)public class DefaultFile{ // Fields @Id @Column(name = "id", insertable = false, updatable = false) @GeneratedValue(strategy=GenerationType.IDENTITY) private int id; @Column(name = "name") private String name; @Column(name = "path") private String path; @Column(name = "note") private String note; @Column(name = "uploadDate", insertable = false, updatable = false) private Timestamp uploadDate; /** * 文件内容,不被映射成column */ @Transient File file; ...}
图片文件类ImageFile
@Entity@Table(name = "imageFile")public class ImageFile extends DefaultFile{ @OneToMany(cascade = CascadeType.ALL,mappedBy="imagefile",fetch = FetchType.LAZY) private Set<Account> accounts = new HashSet<Account>(); ...}
账户类Account
@Entity@Table(name="account")public class Account { // Fields @Id @Column(insertable=false,updatable=false) @GeneratedValue(strategy=GenerationType.IDENTITY) private Integer id; @ManyToOne(fetch=FetchType.EAGER,cascade=CascadeType.ALL) @JoinColumn(name="imageID") //头像 private ImageFile imagefile; @Column private String name; @Column private String password; @Column(insertable=false,updatable=false) private Timestamp createdDate; ...}
@Entity
作用:
标记为实体类,标记后都会被映射到数据表中
用法:
一般实体类都要加上这个注释
@MappedSuperclass
作用:
表明该类作为父类被其他实体类继承后,其它实体类可以继承该类的属性,并且结合各子类各自映射对应的表,然后改父类不映射到数据库表
用法:
这个和上面的@Entity可以说二者只能选其一,如果选择@MappedSuperclass则不映射表,如果用@Entity则会映射到表
结合例子:
例子中DefaultFile被注解为@MappedSuperclass,因此DefaultFile不会被映射到表,而ImageFile继承DefaultFile,因此ImageFile会继承DefaultFile的属性,加上自己的属性,映射到新表
@Inheritance
作用:
定义继承的策略
用法:
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
上面的InheritanceType.TABLE_PER_CLASS是指每个子类都成为一个新表,还有以下的继承策略(看名字就大概知道意思了):
@Table
作用:
用来标记该实体类映射到数据库中的表的表名
用法:
可添加参数来说明表名@Table(name=”table_name”)
@Id
作用:
说明该属性为主键
@GeneratedValue
作用:
表明该列为自动增长的属性
用法:
@GeneratedValue(strategy=GenerationType.IDENTITY)
其中strategy指自动增长的策略,而这个GenerationType.IDENTITY是指数据库自动增长,相当于mysql中auto_increment,还有其它属性:
@Column
作用:
指明该列的属性
用法:
@Column(name = “uploadDate”, insertable = false, updatable = false)
name = “column_name”
指明列名
insertable=false
插入操作时忽略该属性
updatable=false
更新 操作时忽略该属性
@OneToMany
作用:
表名一对多的关系,通常用于Set<T>
变量
用法:
@OneToMany(cascade = CascadeType.ALL = CascadeType.ALL,mappedBy=”imagefile”,fetch = FetchType.LAZY)
cascade
CascadeType.ALL
所有操作都进行关联,具体看下面例子:
@Entity public class A{ @ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY) @JoinColumn(name = "bID") private B b; ... } @Entity public class B{ ... } B b = new B(); A a = new A(); a.setB(b); //这时数据库中的b表是没有b对象的信息的,但是在执行完下面a对象的保存后,也会把对象b也保存到b表中。 aDao.save(a);
CascadeType.MERGE
例子:
@Entity public class A{ @ManyToOne(cascade = CascadeType.MERGE, fetch = FetchType.LAZY) @JoinColumn(name = "bID") private B b; ... } @Entity public class B{ ... } B b = new B(); A a = new A(); a.setB(b); //这时数据库中的b表是没有b对象的信息的,这时执行下面的保存a对象的时候就会报错,只有b对象信息在数据库b表中有对应的,下面语句才可以正常执行 aDao.save(a);
mappedBy=”imagefile”
如果这个一对多的关系不是通过第三张表来维持,而是多方保存一方的id(多方外键引用一方),则必须要有mappedBy来指明多方中哪个变量来保存一方(外键),值是多方里面保存一方的属性名字,具体可看例子中的使用
fetch=FetchType.EAGER
加载的策略,有积极和懒惰,积极是指用查询语句获取对象时,马上加载标记为@OneToMany的变量,懒惰则是等到使用时才获取。
@ManyToOne
作用:
表名一对多的关系,通常用在对应的一方类的一个变量
用法:
@ManyToOne(fetch=FetchType.EAGER,cascade=CascadeType.ALL)
属性和@OneToMany的基本差不多。但是如果这个多对一的关系不是通过第三张表来维持,而是保存在多方的表中(外键),必须还添加一个注解@joinColumn
@joinColumn
作用:
作用于@ManyToOne标注后的变量,指明该变量映射到数据库中表的列名
用法:
@JoinColumn(name=”imageID”)
值是数据库中外键的表名
@Transient
作用:
指明被标注的变量不需要被映射到数据库表中
- hibernate注解简单使用
- hibernate的简单注解/使用
- 使用hibernate注解以及几个简单语句
- Hibernate环境部署与注解简单使用
- hibernate注解简单应用
- 使用annotations注解的hibernate的简单示例
- hibernate 注解的使用
- Hibernate中使用注解
- Hibernate注解使用
- Hibernate注解使用
- hibernate使用注解
- Hibernate注解的使用
- Hibernate使用注解方式
- Hibernate 注解使用
- Hibernate 注解使用总结
- Hibernate使用注解
- Java Hibernate注解使用
- Hibernate注解使用入门
- 1012. 数字分类 (20)
- 旅行售货员问题的回溯法求解
- UVa 1600(未通过)
- HDU 2444.The Accomodation of Students【二分图判断+最大匹配】【5月4】
- 推荐系统的评价指标总结
- hibernate注解简单使用
- (Leetcode)11. Container With Most Water
- NIO边看边记 之 FileChannel(七)
- 从EXCEL中读出数据到数据库中
- [线段树 中位数] BZOJ 4071 [Apio2015]巴邻旁之桥
- XFire创建WebService服务端和客户端
- ubuntu 安装lamp
- 解决SecureCRT下spark-shell中scala无法删除问题
- POJ 3636 Nested Dolls