当前位置:首页 > JAVA > Java Hibernate入门

Java Hibernate入门

提问:
(这一些题是答辩或是面试可能遇到的或是我经常搞混的题)

java

1 JDBC是什么?

JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用java语言编写的类和接口组成。

2 JDBC遇到的一些麻烦是什么?

1 从效率上来说,每次操作都要重新连接数据库,对数据库的压力比较大。

2 从代码上考虑,每次执行的语句都是经过编译及连接的控制,还有考虑事务提交回滚什么的,程序员的重复性和验证性的工作量加大。

3 java提倡的是面向对象编程,但是数据库是对数据进行操作。 

3 三层架构是哪三成?

界面层(User Interface layer)、业务逻辑层(Business Logic Layer)、数据访问层(Data access layer)。

4 数据库分页的关键字(oracle,MySQL 以及 SQL Server)?

Oracle—》 ROWNUM ;MySQL—》limit ;SQL Server—》top

5 谈谈你对hibernate缓存的了解?

开始今天的知识点总结

1 认识hibernate

hibernate是轻量级JavaEE应用的一个持久层框架。它的作用在于管理Java实体类到数据库表之间的映射关系,并且提供数据查询和获取数据的方法,可以大幅度的缩短使用JDBC处理数据持久化的时间。

java则是一门面向对象的编程语言,hibernate完成了对象模型和基于SQL关系模型的映射关系,使得程序员可以只用这个来面向对象编程。

2 对象–关系映射

ORM全称Object/Relation Mapping,对象/关系数据库映射。该框架的基本特征就是完成面向对象的编程语言到关系数据库之间的映射。

因为java一开始项目就是面向对象分析,面向对象设计,面向对象编程,所以关系数据库就把数据库的数据包装成面向对象模型,这就是ORM框架。

面向对象编程的优点:

1、 面向对象建模,操作

2、 多态,继承,封装

3、 摒弃难以理解的过程

4、 简单易用,容易理解

关系型数据库的优点:
1、 大量数据查询、排序

2、 集合数据连接操作、映射

3、 数据库访问的并发、事物

4、 数据库的约束、隔离

结合着两个的优点,采用ORM框架后,我们的应用程序就可以直接访问对象的方式对对象进行持久化(CRUD)。

基本映射的方式:

1 数据库表映射类(实体类———数据库表):持久化类被映射到一个数据表 ,当使用一个持久类来创建,增加,修改,伤处实例的时候,系统会自动的对这个表进行CRUD操作。

2 数据表的行映射对象(new实例———行):持久化类会生成很多实例,每个实例就对应数据库一行的操作。每个持久化对象对应数据表的一行记录。

3 数据表中的列映射对象的属性(属性———列):持久化类对属性值进行修改的时候,orm将会转化成数据库对应行指定列来改变值。

4 Hibernate的介绍

Hibernate是一个面向JAVA环境的对象/关系数据库映射工具,用来把对象模型表示的对象映射到基于SQL的关系模型数据结构中去 ,Hibernate的目标主要是为了释放开发者通常的数据持久化相关的编程的繁重任务。

对于一数据为中心的程序员来说,hibernate不是最好的方法,但是对于以java为中心的程序员来说,hibernate是最有用的。

Hibernate还提供数据查询和获取数据的方法。

5 Hibernate就是一个ORM框架的典型代表;那么与其他的ORM框架相比,他的特点在于什么地方?

1、 开源和免费的License,方便需要时研究源码,改写源代码,进行功能定制。

2、 轻量级封装,调试容易,减轻程序员负担。

3、 有可扩展性,API开放,功能不够用时,自己可以编码扩展。

6 Hibernate持久化解决方案:?

Hibernate的持久化解决方案用户将不再使用jdbc来链接数据库进行操作了。而是以面向对象的方式进行持久层操作。对于数据的访问,事务用户都不用管了。将应用从底层的JDBC中抽象出来,通过配置文件管理底层的JDBC连接,让Hibernate解决持久化访问的实现。

7 hibernate工作原理图:

java

8 理解JAVA对象的3种形态

1 瞬态 —对象是通过new出来的,被认为处于瞬态。

瞬态对象不会被持久化到数据库中,也不会被赋予持久化标识(ID),如果程序中失去了瞬态对象的引用,瞬态对象将被垃圾回收机制销毁。

2 持久态— 持久化实例在数据库中有对应的记录,并拥有一个持久化标识(id),持久化的实例可以是刚保存的。也可以是刚被加载的。无论那种,持久化对象都必须与指定的Hibernate Session关联。

Hibernate会检测到处于持久化状态对象的改动,在当前操作执行完成时将对象数据写回数据库。数据库与java中的改变是同步的。

3 游离态– 这个实例他曾经处于持久化状态,但随着与之关联的session被关闭,该对象就变成游离状态了。

游离对象的引用依旧有效,对象可以继续被修改,只是不会同步到数据库中。如果重新让游离对象与某个session关联,该对象会重新转换为持久化状态。

比如说先关闭了session关联,在java中改变对象的属性,这时数据库数据不会改变,但是当你连接到session的时候,数据库的数据就会改变成你java中相同的数据了。

  • << 程序员最值得听的歌曲TOP10
  • C#新语法Async和Await >>
  • 作者:
    除非注明,本文原创:知道91,欢迎转载!转载请以链接形式注明本文地址,谢谢。
    原文链接:http://www.zhidao91.com/java-hibernate/

    相关文章 近期热评 最新文章

    • Android内存优化:ArrayMap
      其实如果我们一个程序中,已经不再使用某个对象,但是因为仍然有引用指向它,垃圾回收器就无法回收它,当然该对象占用的内存就无法被使用,这就造成了内存泄露。
    • 自己动手封装javaBean
      JavaBean是使用Java语言开发的一个可重用的组件,在开发中可以使用JavaBean减少重复代码,使整个代码的开发更简洁。
    • 安卓开发-实现软键盘搜索
      安卓是现在最火的平台了,在实际开发中,调用系统的键盘是很容易,但是有些情况下,我们需要做出软键盘,这样用户的安全度会提高一个档次。
    • oracle数据库相关操作注意事项
      修改Oracle SGA(共享内存) 很多网站说修改Oracle的内存通过命令 如果你这么做了,那么恭喜你,你的Oracle数据库无法启动了。如果你已经这么做了,恢复Oracle启动的方...
    • 使用微信JDK实现微信接口签名验证
      要使用微信的接口必须在绑定的域名下测试;签名必须先向微信请求到access_token,然后用access_token再去请求jsapi_ticket,最后用jsapi_ticket和相关的参数按照ASCII码...
    • ABP开发指南系列教程(2) – 多层架构...
      为了减少复杂性和提高代码的可重用性,采用分层架构是一种被广泛接受的技术。为了实现分层的体系结构,ABP遵循DDD(领域驱动设计)的原则,将工程分为四个层: 展现层(...
    • ABP开发指南系列教程(1) – 入...
      ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)”的简称。 ASP.NET Boilerplate是一个用最佳实践和流行技术开发现代WEB应用程序的新起点,它旨在成为一个通用的WE...
    • Windows下 JIRA + Agile + Mysql 破解...
      本文讲述了Windows下 JIRA + Agile + Mysql 破解安装示例教程
    • c#类的构造函数继承关系示例剖析
      本文通过示例代码讲解了c#子类的构造函数与父类的关系,子类怎样集成父类的构造函数的。