hibernate框架的使用

1.ORM框架

Object-relation-maping,这里的对象指的是我java的对象,relation指的是关系型数据库,mapping映射。一句话,就是将java对象映射到一个数据库表。

2.ORM映射的方式

基于XML的映射方式

hibernate框架的使用

3.基于注解的映射方式

hibernate框架的使用

 

配置SSH工程

完全使用xml配置

  • 配置web.xml

hibernate框架的使用

只增加了这个过滤器,其他配置不变。

  • 配置spring.xml

hibernate框架的使用

hibernate框架的使用

  • springmvc.xml配置

跟之前ssm工程一模一样,如下:

hibernate框架的使用

3.xml和注解相结合的方式

  • web.xml配置跟上面一样
  • Spring.xml中注销

hibernate框架的使用

另外,也不需要配置User.hbm.xml和hibernate.cfg.xml文件了,而是用注解代替,见User类:

 

hibernate框架的使用

springmvc.xml

配置跟ssm工程一模一样,见上。

创建SSH工程

hibernate框架的使用

  1. 使用SessionFactory操作数据库

这种是原生的方式来操作数据库。

  1. 相关程序见User操作
  2. 配置就按照上面xml和注解的方式
  3. 代码

hibernate框架的使用

备注:

在原生操作时不需要加@JsonIgnoreProperties(value={"hibernateLazyInitializer","handler"}) 也可以返回json,不会报错。

  1. 使用HibernateTemplate操作数据库
  1. 相关程序见Product操作
  2. 需要我们的dao继承HibernateDaoSupport基类
  3. 按照上述配置,当执行写操作的时候会报如下错误:

hibernate框架的使用

  1. 但是执行读操作不影响,不会报上错误。原生的sessionfactory也不会报这个错。
  2. 解决readOnly问题

 自定义一个过滤器,该过滤器继承OpenSessionInViewFilter并且重写openSession()方法,如下:

hibernate框架的使用

  1. HQL的使用
  1. HQL能用在sessionFactory和hibernateTemplate中
  2. sessionFactory中使用

hibernate框架的使用

hibernateTemplate中使用

hibernate框架的使用

SQL的使用

  1. sessionFactory和hibernateTemplate都支持原生的SQL语句
  2. 使用场景
  3. hibernateTemplate中使用为例说明:

hibernate框架的使用

返回影响的行数。

  1. 总结
  2. 生产环境一般使用hibernateTemplate,线程安全
  3. hibernateTemplate跟spring结合紧密,例如声明式事务
  4. mybatsi需要自己写SQL语句,并且只支持原生SQL
  5. Mybatis只需要声明DAO层的接口,不需要自己写实现,最终是动态代理执行的业务逻辑。