A. hibernate采用什么设计模式切换数据源
Hibernate可以用在任何JDBC可以使用的场合,例如Java应用程序的数据库访问代码,DAO接口 的实现类,甚至可以是BMP里面的访问数据库的代码。从这个意义上来说,Hibernate和EB不是一个范畴的东西,也不存在非此即彼的关系。 二、Hibernate是一个和...
B. 高分求 hibernate 数据库设计 方面的读书笔记
hibernate的API不是就很好用么?
就是对象映射关系的问题。维护权你是用hibernate管理还是用数据子自己管理呢?
C. 请简述Hibernate工作原理
Hibernate工作原理是Configuration读取Hibernate的配置文件和映射文件中的信息,即加载配置文件和映射文件,并通过Hibernate配置文件生成一个多线程的SessionFactory对象。
然后,多线程SessionFactory对象生成一个线程Session 对象;Session对象生成Query对象或者Transaction对象;可通过Session对象的get(),load(),save(),update(),delete()和saveOrUpdate( )等方法对PO进行加载、保存、更新、删除等操作。
在查询的情况下,可通过Session 对象生成一个Query对象,然后利用Query对象执行查询操作;如果没有异常,Transaction对象将提交这些操作结果到数据库中。
(3)hibernate数据库设计扩展阅读:
Hibernate它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成sql语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。
Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的JaveEE架构中取代CMP,完成数据持久化的重任。
D. Hibernate Oracle 数据库主键 如何设计
用Number(38)就可以吧,主键用Long会很慢!至于Hibernate可以这些配置实体类
@Entity
@javax.persistence.SequenceGenerator(name = "SEQ_SCHEME", sequenceName = "SEQ_SCHEME", allocationSize = 1)
@Table(name = "USER")
@org.hibernate.annotations.Entity(dynamicInsert = true, dynamicUpdate = true, selectBeforeUpdate = true)
public final class User implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_SCHEME")
/* * */
@Column(name = "userid")
private Long userid;
}
E. 简述hibernate数据模型
某个超类或实现Hibernate 的某个接口。因为Hibernate 是面向对象的程序设计语
言和关系数据库之间的桥梁,所以Hibernate 允许程序开发者采用面向对象的方式
来操作关系数据库。 补充: Hibernate 概述
Hibernate 是目前最流行的ORM 框架,其采用非常优雅的方式将SQL 操作完全包装
成对象化的操作。其作者Gavin King 在持久层设计上极富经验,采用非常少的代码实现
了整个框架,同时完全开放源代码,即使偶尔遇到无法理解的情况,也可以参照源代码
来理解其在持久层上灵巧而智能的设计。
目前Hibernate 在国内的开发人员相当多, Hibernate 的文档也非常丰富,这些都为
学习Hiberante 铺平了道路,因而Hibernate 的学习相对简单一些。下面通过对比来了解
Hibernate 和传统JDBC 操作数据库持久层之间的差异。
Hibernate 的起源
当前的软件开发语言已经全面转向面向对象,而数据库系统仍停留在关系数据库阶
段。面对复杂的企业环境,同时使用面向对象语言和关系数据库是相当麻烦的,不但中
间的过渡难以理解,而且其开发周期也相当长。
Hibernate 是一个面向Java 环境的对象/关系数据库映射工具。对象/关系数据库映射194久化E( Object/Relational Mapping) 表示一种技术,用来把对象模型表示的对象映射到基于SQL
的关系模型数据结构中去。
Hibernate 的目标是:释放开发者通常的数据持久化相关的编程任务的95% 。对于以
数据为中心的程序而言,往往在数据库中使用存储过程来实现商业逻辑,Hibernate 可能
不是最好的解决方案。但对于那些基于Java 的中间件应用中,设计采用面向对象的业务
据库厂商的SQL 代码,并且把结果集由表格式的形式转换成值对象的形式。
Hibernate 不仅管理Java 类到数据库表的映射(包括Java 数据类型到SQL 数据类型
的映射) ,还提供数据查询和获取数据的方法,可以大幅度地减少在开发时人工使用SQL
F. Hibernate是不是设计的太重量级了
纯OO的ORM组件,第三方插件支持做的不是很好,基本就是黑盒。很难扩展,也很难找问题。
我们早期曾经用这个做过一个票务系统,在并发略高的情况下,经常出现索引溢出异常,还有个人在维护阶段发现这个东西对内存的消耗有些严重,当然已经排错是开发人员的代码问题。
优点:纯OO,对数据库结构的依赖性解除的还不错,不会出现数据库的结构一更改,服务端直接crash的情况,所以,可以在运行中去调整数据库的结构(开发阶段)。纯面向对象,针对单表操作的一些业务,开发便捷,效率高,但是对复杂点的多表查询和相关操作,支持非常有限。
缺点:第三方的插件支持有限,更新慢,出现内部问题以后,排查和解决非常困难。
hibernate的重,在于它是一个大而全的ORM,内部依赖了一些其他特定版本的其他组件,导致一些在生产环境下偶然性发生的问题,排查和解决异常困难。
目前我碰到过的是hibernate内f在查询时填充查询结果到字典里的时候,有一个线程的并发问题,这个问题直接导致IndexOutOfRange异常,在生产环境下偶然性发生,非常难通个debug的形式进行问题重现。
尝试解决了很久,都没能解决,最后,没有办法,引入dapper,用dapper重写了几个业务压力较大的业务方法。
G. hibernate能创建数据库吗怎么创建稍微详细点
hibernate不能创建数据库,
他只是一个框架。
能方便你程序对数据库数据的操作。
数据库都是mysql、oracle、sqlserver创建的
H. 按照Hibernate的设计原则,映射文件和数据库表,谁导出谁
这其实就是OOD的思想
系统分析完之后就是设计了,
也就是MODEL的设计,一个项目核心还是MODEL,数据的持久化这些都是非常机械的,基本没有变动的,HIBERNATE就是把这些行为抽取出来自动完成并在效率上做一优化等,也就是说开发的时候我没根本不用做持久化的模块,我们只要写一些DAO接口,再在测试的时候模拟一些数据就行,MODEL设计完毕我们把DAO实现一下,再编写配置文件,系统就组装完毕了,可以测试了。
这样,在开发的时候根本就不用去做数据库的设计了,使得我们的做法更OO了这就是OOD的思想。再者H框架的高移植性,使得我们可以轻松的把现在系统换别的数据库实现
I. hibernate投票系统数据库设计。。
number, --投票内容
J. hibernate怎么通过实体类创建数据库表
常规的思路是,设计好数据库,建好表,借助MyEclipse(也可以是其他IDE),自动生成映射,或者自己写映射。早就听说hibernate中可以自动生成表。但是一直没有试验。今天首先介绍其中的一个属性hbm2ddl.auto,这个就是这个方案的核心属性,有四个值:create,create-drop,update看看我们从网上查找到得资料:
<!--
启动时删数据库中的表,然后创建,退出时不删除数据表
<property
name="hbm2ddl.auto">create</property>-->
<!--
启动时删数据库中的表,然后创建,退出时自动删除所有表
<property
name="hbm2ddl.auto">create-drop</property>-->
<!--
自动修改,如果表结构与实体类不一致,那么就修改表使它们一致,数据会保留
<property
name="hbm2ddl.auto">update</property>-->
<!--
自动校验,如果表结构与实体类不一致,那么不做任何操作,报错
<property
name="hbm2ddl.auto">validate</property>-->
这样的话,设计实体类,直接写POJO,然后写映射,让hibernate帮我们生成数据库表。