Hibernate is a object-relational mapping tool for Java language which also implements in Java JPI, Hibernate's primary feature is mapping from Java classes to database tables.
如下图
![](https://img.haomeiwen.com/i12624636/81f48b40ada3a125.png)
在实际中,一个类对应一个表,对象对应记录(行), 而对象的属性对应列。
![](https://img.haomeiwen.com/i12624636/4556e74b3d79e99e.png)
好处:
1.不会错误性重复,写一次,一旦创立instance,就会在database填表出现.
2.不会需要太多的SQL知识, 并且OOP能够得到很好的利用
坏处:
1.有时候需要setUp,xml文件会出问题.
2.功效会不如原SQL language好.
JPA
JPA是一种实现ORM的规范,而hibernate是ORM的实现。
Hibernate中的sessionFactory, session, transaction
sessionFactory用来生产Session,而这里的session并不是用于http与用户的交互,而是应用程序和数据库的交互,一旦要更新数据库,则需要begintransaction, 获得session,详情如下代码.
public void save(Student student) {
Transaction transaction= getSession().beginTransaction(); //开启事务
getSession().save(student);//只要传一个Student的对象实例
transaction.commit(); //事务提交
getSession().close();//关闭session
}</span>
只有通过这样才能实现和数据库的交互
Java和Hibernate代码的对应
![](https://img.haomeiwen.com/i12624636/da5a2bf20604ca29.png)
Hibernate中的Annotation
@Entity 用于对实体类的标注
@Table 用于更改Java类在映射的table名
@Id 属于Table的primary Key
@Column sql表中的Column
@GeneratedValue
用于生成主键,可以在variable之上,也可以在主键之上.
@Embeddable 当一个primary key由两个以上的column组成的时候
下面是EmbeddableId的例子
![](https://img.haomeiwen.com/i12624636/c529f47701b49d29.png)
Assiociations:
@OnetoOne, ManyToOne, OneToMany
![](https://img.haomeiwen.com/i12624636/101d936f2bbf4ab5.png)
网友评论