Hibernate
phubing
纵使秋风起,人生不言弃。
展开
-
Hibernate需要的10个jar包
Hibernate是ORM的解决方案,其底层对数据库的操作依赖于JDBC,所以您必须先取得JDBC驱动程序,在这边我们使用的是MySQL,所以您必须至以下网址先取得MySQL的JDBC驱动程序:JDBC驱动程序 接下来取得Hibernate,在撰写此文的同时,Hibernate最后的稳定版本是2.1.6,而3.0版还在测试阶段,这边的介绍将以2.1.6为主,所以请至以下网址取得hiber转载 2016-12-11 08:50:02 · 265 阅读 · 0 评论 -
hibernate uniqueResult方法
如果查询返回多个值用list()方法[java] view plaincopyprint?public void testQuery(){ Configuration config = new Configuration().configure(); SessionFactory factory = config.buildSessi转载 2016-12-25 22:12:22 · 14428 阅读 · 0 评论 -
Hibernate注解详解
一。实体Bean每个持久化POJO类都是一个实体Bean,通过在类的定义中使用@Entity注解来进行声明。声明实体Bean@Entitypublic class Flightimplements Serializable { Long id; @Id public Long getId() { return id; } public void setI转载 2016-12-24 09:47:31 · 1056 阅读 · 0 评论 -
Hibernate Student_Course_Score设计
项目在本人机器(win7 64位 myeclipse2014)存在bug,会报如下错误:Caused by: java.sql.SQLException: Field 'id' doesn't have a default value,截止发布时尚未找到原因,望各位前辈指点(2016年12月24号)示例:设计代码,实现在数据库中建student表、c转载 2016-12-24 18:33:19 · 520 阅读 · 0 评论 -
HQL语句大全
hibernate配备了一种非常强大的查询语言,这种语言看上去很像SQL。但是不要被语法结构 上的相似所迷惑,HQL是非常有意识的被设计为完全面向对象的查询,它可以理解如继承、多态 和关联之类的概念。第 15 章 HQL: Hibernate查询语言Hibernate配备了一种非常强大的查询语言,这种语言看上去很像SQL。但是不要被语法结构 上的相似所迷惑,HQL是非常有意识的被设计为转载 2016-12-25 10:07:41 · 334 阅读 · 0 评论 -
Hibernate注解使用以及Spring整合
原文转自:http://wanqiufeng.blog.51cto.com/409430/484739(1)简介:在过去几年里,Hibernate不断发展,几乎成为Java数据库持久性的事实标准。它非常强大、灵活,而且具备了优异的性能。在本文中,我们将了解如何使用Java 5 注释来简化Hibernate代码,并使持久层的编码过程变得更为轻松。传统上,Hibernate的配置依赖于转载 2016-12-24 09:52:42 · 376 阅读 · 0 评论 -
@JoinColumn 详解
在address中没有特殊的注解。在Person中对应到数据库里面就有一个指向Address的外键.我们也可以增加注释指定外键的列的名字,如下:@OneToOne(cascade=CascadeType.ALL,optional=true)@JoinColumn(name="addressID")//注释本表中指向另一个表的外键。 publicAddress getA转载 2016-12-24 09:44:08 · 657 阅读 · 0 评论 -
JavaEE – JPA(1):事务的基础概念
现在任何应用都需要数据持久化。否则就不算是一个完整的应用。那么对于一个数据持久化而言,最重要的无外乎两方面:事务管理(Transaction Management)对象关系映射(Object Relational Mapping)本文作为JPA(Java Persistence API)这一系列文章的首篇,就来先谈谈事物管理相关的一些概念和基础。转载 2016-12-23 21:05:59 · 528 阅读 · 0 评论 -
分布式系统唯一ID生成方案汇总
系统唯一ID是我们在设计一个系统的时候常常会遇见的问题,也常常为这个问题而纠结。生成ID的方法有很多,适应不同的场景、需求以及性能要求。所以有些比较复杂的系统会有多个ID生成的策略。下面就介绍一些常见的ID生成策略。1. 数据库自增长序列或字段最常见的方式。利用数据库,全数据库唯一。优点:1)简单,代码方便,性能可以接受。2)数字ID天然排序,对分页或者需要排序的结果很有帮助。转载 2016-12-23 14:30:13 · 1151 阅读 · 0 评论 -
releaseSession理解
Hibernate可以实现分页查询,昨天试了一下,分页效果不错。但是发现了一个问题,就是当请求超过20次的时候页面就会卡死。经检查,是卡在分页查询这一块。应用程序采用struts2 + spring2 + hibernate3架构 连接池配置使用的是c3p0, 最大池大小为20, 很显然是连接池耗尽导致的。 增加连接池大小只是饮鸩止渴,总还有耗尽的时候,必须找到根本原因。D转载 2016-12-25 22:14:35 · 1552 阅读 · 0 评论 -
hibernate 深入理解持久化对象
hibernate 完全采用面向对象的方式来操作数据库,因此开发者眼里只有对象、属性,无须理会数据库、表、列等概念。持久化类的要求Hibernate 采用低侵入式设计,所以对持久化类的要求也是只要是简单的pojo即可。虽然hibernate对持久化没什么要求,但应遵守如下规则: -提供一个无参的构造器,这样hibernate就可以使用Constructor.newInstance(转载 2016-12-29 12:46:37 · 293 阅读 · 0 评论 -
hibernate中写配置文件xxx.hbm.xml时那个成员变量的类型type如何写的问题
hibernate中的类型就是8种基本类型的包装类首字母变为小写,有integer,long,short,float,double,charchter,byte,boolean,当然还包括其他类型如:yes_no,true_false hibernate中的类型的作用是匹配数据库表中字段的类型和Java类中属性的类型不匹配的问题的一种解决方案,比如string完成从java.lang.String转载 2017-04-26 16:34:40 · 1197 阅读 · 0 评论 -
hibernate 配置数据库方言
版权声明:走别人没做过的路,让别人有路可走。RDBMS 方言 DB2 org.hibernate.dialect.DB2Dialect DB2 AS/400 org.hibernate.dialect.DB2400Dialect DB2 OS390 org.hibernate.dialect.DB2390Dialect PostgreSQL org.hibernate.d转载 2017-04-23 15:59:47 · 904 阅读 · 0 评论 -
get和load方式 .
get和load方式是根据id取得一个记录下边详细说一下get和load的不同,因为有些时候为了对比也会把find加进来。1.从返回结果上对比:load方式检索不到的话会抛出org.hibernate.ObjectNotFoundException异常get方法检索不到的话会返回null2.从检索执行机制上对比:get方法和find方法都是直接从数据库中检索而load方转载 2017-04-22 11:07:07 · 273 阅读 · 0 评论 -
[JavaEE - JPA] 7. ORM的核心注解 - 关系类型
本文继续介绍JPA ORM的核心注解中和关系映射相关的部分。关系映射的处理绝对是一个JPA应用最为重要的部分之一。关系映射处理的好,不仅仅是建模上的成功,而且在程序性能上也会更胜一筹。关系映射处理的不好很容易造成程序性能底下,各种Bug频繁出现,而且这些Bug通常还会比较隐蔽,总是在关键时刻掉链子。我想这也是为什么很多开发人员说JPA入门容易,精通难得原因之一。因为关系确实不是那么好处理的,不转载 2016-12-29 21:06:12 · 308 阅读 · 0 评论 -
[JavaEE - JPA] 6. ORM的核心注解 - 基础类型以及嵌套类型
本文继续介绍JPA ORM的核心注解中和基础类型映射相关的部分。基础类型映射所谓的基础类型映射,实际上就是Java中定义的数据类型应该如何被JDBC转换成数据库所支持的数据类型。而这些基础类型,主要包括了以下9种:简单类型:byte,int,short,long,boolean,char,float以及double简单类型对应的包装类型:Byte,Integer,Short,Lon转载 2016-12-29 21:03:44 · 304 阅读 · 0 评论 -
[JavaEE - JPA] 4. EntityManager相关核心概念
前三篇文章花了一些笔墨介绍了事务的概念以及在EJB和spring Framework中分别是如何完成事务管理的。之所谓花了比较大的代价来介绍事务主要也是因为不管在什么类型的持久化应用中,都包含下面两个关键点:事务管理对象关系映射(ORM)而JPA主要定义的就是和对象关系映射(ORM)相关的内容。从本篇文章开始,会系统性地介绍JPA的方方面面。核心概念及其关联关系首先,当然是介绍转载 2016-12-29 20:58:45 · 289 阅读 · 0 评论 -
[JavaEE - JPA] 3. Spring Framework中的事务管理
前文讨论了事务划分(Transaction Demarcation)在EJB中是如何实现的,本文继续介绍在spring Framework中是如何完成事务划分的。我们已经知道了当采用Container事务类型的时候,事务划分主要有以下两种方案(参考这里):使用JTA接口在应用中编码完成显式划分在容器的帮助下完成自动划分在使用JavaEE的EJB规范时,这两种方案分别被实现为BMT以转载 2016-12-29 20:57:11 · 513 阅读 · 0 评论 -
[JavaEE - JPA] 2. EJB中的事务管理
在上一篇文章中介绍了事务的基本概念,包括事务的ACID性质,以及事务的类型并且稍微提到了事务划分。对于任何一个需要持久化数据的应用而言,事务划分(Transaction Demarcation)的规划都是非常重要的一环。如果规划的不好,轻则影响性能,重则会导致在某些情况下数据发生不一致,从而严重影响业务逻辑的顺利进行。本文继续介绍事务划分在当前JavaEE技术体系下基于EJB的实现方案。虽转载 2016-12-29 20:55:06 · 427 阅读 · 0 评论 -
ID生成策略
hibernate中主键的生成策略主要有以下几种:(1)uuid原理是使用128位的uuid算法产生主键,从而能够确保网络环境下的一致性。使用此生成策略时,实体类的主键是String类型的,映射成表中字段为varchar。适用所有数据库。[java] view plain copy print?"id" column="id"> "white-spac转载 2016-12-23 14:28:28 · 483 阅读 · 0 评论 -
hibernateTemplate 分页
01 02@Autowired03HibernateTemplate hibernateTemplate;04 05 06public List find(Integer转载 2016-12-22 15:35:23 · 431 阅读 · 0 评论 -
hibernate中native、identity和increment等主键的区别
identity:由底层数据库生成标识符。identity是由数据库自己生成的,但这个主键必须设置为自增长,前提条件是低层数据库支持自动增长字段类型 ,一般来说象SQL,MySQL这类的数据库都是选择identity increment:由hibernate管理主键,自动以递增的方式生成标识符,每次增量为1。其在每次插入前取得一个当前最大的id+1作为主键,该主键必须为Inte转载 2016-12-09 16:20:35 · 570 阅读 · 0 评论 -
Hibernate学习:slf4j日志框架
一:首先来看一个图commons-logging和slf4j都是日志的接口,供用户使用,而没有提供实现!后面的log4j,slf4j-nop等才是他们的实现。二:hibernate框架的slf4j-api-1.5.8.jarHibernate默认用的是slf4j-nop.jar日志实现方式。但是我们可以替换成log4j的实现。但不转载 2016-12-07 21:52:55 · 407 阅读 · 0 评论 -
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Class path contains multiple SLF4J bindings.SLF4J: Found binding in [jar:file:/D:/Hibernate/slf4j-1.7.5/slf4j-nop-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]SLF4J: Found binding in原创 2016-12-07 11:36:08 · 841 阅读 · 0 评论 -
Implicit super constructor Object() is undefined for default constructor. Must define an explicit co
Eclipse错误1. Implicit super constructor Object() is undefined for default constructor. Must define an explicit constructor解决方案:把Java的类库加载进去,在工程上右键选择属性->JavaBuild Path的Libraries->Add Library选择JRE转载 2016-12-07 11:11:56 · 10229 阅读 · 0 评论 -
org.hibernate.MappingException: Unknown entity:
许多初学者在学习Hibernate的时候,总会遇到这样的问题。org.hibernate.MappingException: Unknown entity: ******今天我在调试程序的时候也遇到了此问题,最终终于解决,下面我的一些总结下。一句话:“因为你的映射文件(*.hbm.xml) 没有被映射”问题出现的原因,有几下几点:1,检查你的映射文件的名字是否和你的pojo(*.j转载 2016-12-11 11:58:12 · 425 阅读 · 0 评论 -
联合主键实现Serializable接口,同时重写equals和hasCode方法 的原因和步骤
关于联合主键联合主键为什么要重写equals方法和hashCode方法,是为了保证唯一性1、在数据库保证唯一性是使用的联合主键2、把一系列的对象放到内存的时候,为了区分同名对象,数据库是使用联合主键来区分,内存中也是用相应的方式来区分,所以重写equals和hashCode方法,而且,逻辑不能乱写,hashCode不能使用父类里面的,否则两个同样的对象就视为同一对象,在equals方法转载 2016-12-11 10:59:24 · 1541 阅读 · 0 评论 -
关于An association from the table refers to an unmapped class
1,检查你的hibernate.cfg.xml文件中是否添加了 2,检查你的hibernate.cfg.xml文件中的相关联的两个的顺序,可能有其中一个需要引用另一个,但是另一个却还没有编译,就是说被用作外键的表要放在前面3,检查你的*.hbm.xml文件名是否正确4, 检查你的*.hbm.xml里面类全名5, 使用联合主键时,两个是否写对转载 2016-12-11 10:31:34 · 262 阅读 · 0 评论 -
composite-id class must implement Serializable
org.hibernate.MappingException: composite-id class must implement Serializable: com.xxx.pojo.Organization这一段中,最重要的错误提示是“composite-id class must implement Serializable: ”是因为在映射文件.hbm.xml中定义为联合主键,转载 2016-12-11 10:28:33 · 2071 阅读 · 0 评论 -
Hibernate懒加载详解
懒加载详解懒加载为hibernate中比较常用的特性之一,下面我们详细来了解下懒加载的原理和注意事项Load()方法的懒加载原理在Hibernate中,查询方法有两个,分别是get()和load(),这两种方法的不同就是load()拥有懒加载的特性。Load()方法就是在查询某一条数据的时候并不会直接将这条数据以指定对象的形式来返回,而是在你真正需要使用该对象里面的一些属性的时候才会去转载 2016-12-14 11:21:18 · 298 阅读 · 0 评论 -
Hibernate中对于主键自增策略的Annotation
关键字: hibenate @generatedvalue @genericgenerator这里讨论代理主键,业务主键(比如说复合键等)这里不讨论。 一、JPA通用策略生成器 通过annotation来映射hibernate 实体的,基于 annotation的hibernate 主键标识为@Id, 其生成规则由@GeneratedValue设定的.这里的@id和@Generat转载 2016-12-14 11:29:03 · 560 阅读 · 0 评论 -
用createQuery还是createSQLQuery?HQL和SQL的区别
hql是面向对象查询,格式:from + 类名 + 类对象 + where + 对象的属性sql是面向数据库表查询,格式:from + 表名 + where + 表中字段1、查询一般在Hibernate中使用查询时,推荐使用hql(Hibernate Query Language)查询语句。使用hql的时候需要注意:A、大小写敏感因为hql是面向对象转载 2016-12-22 15:34:11 · 6117 阅读 · 0 评论 -
createSQLQuery与createQuery的区别
本文原址 : http://stta04.javaeye.com/blog/377633hibernate 中createQuery与createSQLQuery昨晚帮同事看代码到凌晨2点多,今早6点醒来发现他发来信息说报空指针错误,实在无法入睡,起来自己测试了一下,控制台还真的报:2009-4-25 8:12:34 org.apache.catalina.core.Appli转载 2016-12-22 15:32:52 · 308 阅读 · 0 评论 -
JavaBean、EJB、EntityBean的区别
1、JavaBean 定义:一种用Java语言写的可重用组件(是具有某种功能,或者处理某个业务的对象)。 特点:共有类、无参构造、私有属性(共有的get、set方法)、可以有方法,但不作为业务逻辑 优点:Write once,run anywhere,reuse everywhere。2、EJB 定义:一个技术规范:EJB 从技术上而言不是一种"产品"转载 2016-12-22 11:08:40 · 498 阅读 · 0 评论 -
hibernate集合映射inverse和cascade详解
1、到底在哪用cascade="..."?cascade属性并不是多对多关系一定要用的,有了它只是让我们在插入或删除对像时更方便一些,只要在cascade的源头上插入或是删除,所有cascade的关系就会被自己动的插入或是删除。便是为了能正确的cascade,unsaved-value是个很重要的属性。Hibernate通过这个属性来判断一个对象应该save还是update,如果这个对象的id转载 2016-12-21 10:23:08 · 258 阅读 · 0 评论 -
HQL语句
hibernate配备了一种非常强大的查询语言,这种语言看上去很像SQL。但是不要被语法结构 上的相似所迷惑,HQL是非常有意识的被设计为完全面向对象的查询,它可以理解如继承、多态 和关联之类的概念。第 15 章 HQL: Hibernate查询语言Hibernate配备了一种非常强大的查询语言,这种语言看上去很像SQL。但是不要被语法结构 上的相似所迷惑,HQL是非常有意识的被设计为转载 2016-12-15 11:04:55 · 295 阅读 · 0 评论 -
CoreAPI_Update
讲update不是讲这个方法,而是讲什么时候会更新数据库里面的内容。什么情况下用更新?1.可以更新一个detachd状态对象,把它变成persistent,同时数据库里进行更新2.更新transient状态的对象会报错,但是更新自己设定好的ID的transient对象可以(前提是数据库里有对应的这条数据记录)有一个问题,它会将所有字段都进行更新,效率不高。是否可以做到只更新转载 2016-12-15 10:45:35 · 331 阅读 · 0 评论 -
深入理解hibernate的三种状态
原文地址: http://www.cnblogs.com/xiaoluo501395377/p/3380270.html学过hibernate的人都可能都知道hibernate有三种状态,transient(瞬时状态),persistent(持久化状态)以及detached(离线状态),大家伙也许也知道这三者之间的区别,比如瞬时状态就是刚new出来一个对象,还没有被保存到数据库中,持久转载 2016-12-14 11:18:32 · 359 阅读 · 0 评论 -
org.hibernate.LazyInitializationException: could not initialize proxy - no Session
在中这错误很常见,字面意义就是不能被初始化,因为session已经关闭了。简单理解就是因为,你使用了lazy=true,这样hibernate在从数据库中调数据的时候是不会把关联的对象查出来的,而是保存一个获取值得方法,在你使用getXXX()调用的时候,hiberante会利用这个保存的方法去从数据库中取数据。而往往我们在jsp页面中使用getXXX()准备展示数据的时候,session转载 2016-12-15 09:26:15 · 796 阅读 · 0 评论 -
Hibernate解决n+1问题
观点:对于n+1问题的理解。 一般而言说n+1意思是,无论在一对多还是多对一当查询出n条数据之后,每条数据会关联的查询1次他的关联对象,这就叫做n+1。 但是我的理解是,本来所有信息可以一次性查询出来,也就是简单的连表查询,但是Hibernate会首先查询1次得到当前对象,然后当前对象里面的n个关联对象会再次访问数据库n次,这就是1+n问题。 他们二者之间表达的意思其实是转载 2017-10-25 21:23:10 · 275 阅读 · 0 评论