JPA是JavaEE的标准结构,Hibernate是实现 但Hibernate的功能是JPA的超集 Hibernate通过hibernate-annotation
hibernate-entitymanager
和hibernate-core
三个组件来实现
hibernate.cfg.xml
<session-factory>
<property name="dialect">
org.hibernate.dialect.MySQLDialect
</property>
<property name="connection.url">jdbc:mysql://localhost:3306/work></property>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.username">root</property>
<property name="connection.password">696969</property>
<property name="show_sql">true</property>
<property name="format_sql">true</property>
<property name="hbm2ddl.auto">update</property>
</session-factory>
@Entity(name="tableName")
name
: 可选, 对应数据库的一个表,如果表名和实体类名相同则可以省略@Table
与@Entity
配合使用只能标注在实体类的class定义处表示对应的数据库的信息name
: 可选映射表的名称,默认表名和实体类名一致catalog
:可选, 表示Catalog名称,默认为Catalog("")schema
: 可选表示Schema名称,默认为Schema("")@Embeddable
表示一个非Entity类,可以嵌入到另一个Entity类中作为属性而存在。添加方式
@Id
@GeneratedValue
@GeneratedValue(generator = "sid")
@GenericGenerator(name = "sid", strategy = "assigned")
assigned
表示手动输入@Column
name
: 可选, 表示数据库表中该字段的名称,默认和属性名一致nullable
:可选,表示该字段是否允许为空,默认为true
unique
:可选,表示该字段是否是唯一标识,默认为false。length
:可选,表示该字段的大小仅对String类型的字段有效,默认值为255。(如果为主键 则不能使用默认值)insertable
: 可选, 表示在ORM框架执行插入操作时,该字段是否应出现INSERT语句中默认为trueupdateable
:可选, 表示在ORM执行更新操作时,该字段是否出现在UPDATE语句中,默认为true。对于一经创建就不可更改的字段,该属性非常有用,比如brithday字段。@Transient 可选,表示该属性并不需要映射到数据库的字段,ORM将会忽略该属性
@Transient
和 @Basic
是相反的
@Temporal 指定映射数据库中的日期事件类型
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name="teachers")
被控方需添加
@OneToOne(mappedBy="主控方属性名")
既是联合主键
@ManyToOne(cascade={CascadeType.ALL},fetch=FetchType.EAGER)
@JoinColumn(name="cid",referencedColumnName="CID")
关系型数据库的三总映射关系