涉及的注解
@Entity(name="") name属性指明了JPQL中使用的实体名
@Table(name="xxx")
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
GenerationType.TABLE //会创建一个表 具有序列名和对应值两个字段,易于数据库移植
GenerationType.SEQUENCE //支持序列的数据库 如 Oracle
GenerationType.IDENTITY //使用ID自动增长 如mysql
GenerationType.AUTO // 由持久化提供器根据数据库的不同自动决定以何种方式生成主键
@Column(nullable=false,length=10,unique=false,name="",insertable=true,updatable=true)
name指明映射的字段名
insertable和updatable指明是否让该字段出现在SQL INSERT和SQL UPDATE语句中
@Transient指明该字段不会被持久化
@Enumerated(EnumType.STRING) 枚举类型的映射,及映射到数据库内的数据类型
@Lob 映射大数据
byte[] Byte[] Serializable时数据库中映射为Blob类型,char[] Character[] String时为Clob类型
@Basic(fetch=FetchType.LAZY)默认是立即 FetchType.EAGER
注解延时加载,懒加载,特别是大数据字段时很有用
@Temporal(value=TemporalType.DATE)
对于时间类型很严格处理时,指明是映射为date,time,timestamp
实体属性也可以是 普通可序列化的java对象
@Embedded当不需要将整个对象映射到数据库,只希望映射它的字段可以使用
表名和列名不要使用数据库的保留字段如 order group
对于实体bean建议重写equals和hashcode方法以使用集合时,可以区别实体的不同
@GeneratedValue
AUTO
TABLE
IDENTITY
SEQUENCE