HIBERNATE - 技术教程文章

hibernate略知一二

实体对象的生命周期 实体对象 是指hibernate的o/r映射关系中的域对象,即o/r中的o; 实体对象的生命周期 是指实体对象由产生到被gc(回收站)回收的一段过程,在这段过程中实体对象有三种状态。自由状态、持久状态、游离状态。 实体对象的三种状态 自由状态的特征:1、不处于session的缓存中,不被任何一个session实例关联。 ...

Hibernate的三种缓存【图】

一级缓存hibernate的一级缓存是跟session绑定的,那么一级缓存的生命周期与session的生命周期一致,因此,一级缓存也叫session级缓存或者事务级缓存。 支持一级缓存的方法有:  query.get()  query.load()  query.iterate() 只支持实体对象的时候,查询普通属性是不支持的list方法会向一级缓存中放置数据 但是起自身不使用缓存 管理一级缓存:  session.clear  session.evict(Object obj) 在大批量数据操作的时候,如...

关于延迟加载(lazy)和强制加载(Hibernate.initialize(Object proxy) )

PO 即Persistence Object VO 即Value Object PO 和VO 是Hibernate 中两个比较关键的概念。 首先,何谓VO,很简单,VO 就是一个简单的值对象。 如: TUser user = new TUser(); user.setName("Emma"); 这里的user 就是一个VO。VO 只是简单携带了对象的一些属性信息。 何谓PO? 即纳入Hibernate 管理框架中的VO。看下面两个例子: TUser user = new TUser(); TUser anotherUser = new TUser(); user.setName("Emma"); anotherUser.set...

Hibernate的隔离级别

隔离级别 是否存在脏读 是否存在不可读 是否存在幻读1 Read Unommited 没提交 可以读 Y Y Y2 Read Commited 提交了 ,可以读Oracle N Y Y4 Repeatable Read MySQL默认级别 N ...

NHibernate3剖析:Mapping篇之ConfORM实战(3):OneToOne语义【代码】【图】

系列引入 NHibernate3剖析系列分别从Configuration篇、Mapping篇、Session篇、Core篇、Tool篇、Practice篇、Extension篇等方面全面揭示NHibernate3版本内容、特性及其应用,完全基于NHibernte3版本。NHibernate专题:http://kb.cnblogs.com/zt/nhibernate/NHibernate官方站点:http://nhforge.org/NHibernate参考文档:http://nhforge.org/doc/nh/en/获取NHibernate地址:http://sourceforge.net/projects/nhibernate/files/ConfOR...

Hibernate--使用xml配置映射关系【代码】

写在前面:  配置实体类与数据库的映射关系,有两种方式:  1.使用*.hbm.xml    2.使用@注解   二:xml的配置方式: eg:员工的xml配置文件:<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-mapping PUBLIC‘-//Hibernate/Hibernate Mapping DTD 3.0//EN‘‘http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd‘><hibernate-mapping><class name="edu.hue.erp.auth.emp.vo.EmpModel" table="tbl_...

Hibernate实体映射文件多对多等关系简单应用技巧

第一步,写注释: <!--xx属性,本类与Yy(类)的多对一 --> <!--xx属性,本类与Yy(类)的一对多 --> <!--xx属性,本类与Yy(类)的多对多 --> <!--xx属性,本类与Yy(类)的一对一 --> 第二部,拷模版 <!--xx属性,本类与Yy(类)的多对一 --><many-to-one name="" class="" column=""></many-to-one> <!--xx属性,本类与Yy(类)的一对多 --><set name=""><key column=""></key><one-to-many class=""/></set> <!--xx属性,本类与Yy(类)的多...

struts2+spring+hibernate 实现分页【代码】【图】

在这里要感谢下这位博友发表的博文http://www.blogjava.net/rongxh7/archive/2008/11/29/243456.html通过对他代码的阅读,从而自己实现了网页分页功能,下面给大家分享下我的代码1.entity实体类我项目例子的实体类叫News2.DAO接口的设计,定义一个NewsDAO接口,里面声明了两个方法:publicinterface NewsDAO {publicint getAllRowCount(String hql);public List<News> queryByPage(String hql, int offset, int pageSize);}3.DAO层...

简单的Hibernate入门简介

其实Hibernate本身是个独立的框架,它不需要任何web server或application server的支持。然而,大多数的Hibernate入门介绍都加入了很多非Hibernate的东西,比如: Tomcat, Eclipse, Log4J,Struts, XDoclet, 甚至JBoss。这容易让人产生Hibernate复杂难懂的误解,特别是打击了初学者的积极性。在这篇文章将不涉及Eclipse, log4j, Struts, Tomcat, XDoclet,和JBoss。本文的目的是演示一下Hibernate的安装过程以及最基本的功能,从而给...

集成Spring后HibernateTemplate实现分页【代码】

spring 整合 hibernate 时候用的 HibernateTemplate 不支持分页,因此需要自己包装一个类进行分页,具体实现如下...使用spring的hibernateTemplate的回调机制扩展hibernateTemplate的功能实现分页/** * 使用hql 语句进行操作 * @param hql * @param offset * @param length * @return List */public List getListForPage(final String hql, finalint offset, finalint length) { List list = getHibernateT...

【Hibernate学习】 —— 抓取策略(注解方式)

当应用程序须要在关联关系间进行导航的时候。hibernate怎样获取关联对象的策略。抓取策略的方式: FetchType.LAZY:懒载入。载入一个实体时。定义懒载入的属性不会立即从数据库中载入。 FetchType.EAGER:急载入,载入一个实体时,定义急载入的属性会马上从数据库中载入。 在项目中的体现。我这里有两个实体。一个放基础数据的实体。还有一个是放操作记录的实体。这两个实体的关系是一对一关系,因此要把...

【java】itoo项目实战之大数据查询之使用 new map 优化hibernate之级联查询【图】

在我的上一篇博客《【java】itoo项目实战之hibernate 懒加载优化性能》中,我曾提到过学生数据有2万条,查询数据十分的慢,这是让人很受不了的事情,看着页面进度条一直转着圈圈,那种着急的感觉真的没法形容。最开始考虑着使用lazy 来优化,因为前台框架的原因,lazy 优化并没有起到什么左右,后来就想着有select new map 优化。我先来画画关于查询学生的级联树这个树的意思就是查询学生的时候它的深度是4级。 在没有优化之前...

struts2,spring,hibernate三大框架整合【图】

本文利用mvc三层架构来讲述S2SH三大框架整合的步骤:1.建立好包结构,建立好的包结构如下:2.导入相应的jar包(1)struts2用到的jar包(2)spring用到的jar包(3)hibernate用到的jar包(4)mysql驱动包,junit和struts2插件(5)公共包,例如日志commons-logging-1.1.3.jar log4j-1.2.17.jar slf4j-log4j12-1.5.0.jar最后经过整理的jar包清单如下:antlr-2.7.6.jar aopalliance.jar asm-3.3.jar asm-commons-3.3.jar asm-tree-3.3....

Spring4 MVC+Hibernate4+MySQL+Maven使用注解集成实例【代码】【图】

在本教程中,我们将使用基于注解的配置集成Spring和Hibernate。 我们将开发包含表单要求用户输入一个简单的CRUD为导向Web应用程序,使用Hibernate保存输入的数据到 MySQL 数据库,从数据库和更新检索记录或删除它们在事务中,全部采用注解配置。使用以下技术:Spring 4.0.6.RELEASEHibernate Core 4.3.6.Finalvalidation-api 1.1.0.Finalhibernate-validator 5.1.3.FinalMySQL Server 5.6Maven 3JDK 1.7Tomcat 8.0.21Eclipse JUNO ...

hibernate之fetch

处理关联关系是ORM中一常见操作,特别是在查询的时候,经常要在查询某个实体的时候要把它实体关联属性也查询出来,例如查询用户时级联查询角色信息,还有可能角色及联查询权限信息。在hibernate中实现这个目的有很多总方式: 1.配置OpenSessionInViewFilter,让Session在View层中保存打开状态,可以随时使用,这看起来是个一劳永逸的办法,但其也带来了一些问题, 至于会有什么样的问题百度会给你答案。 2.在映射实体时把关联属性...

SpringMVC+mybatis+hibernate+bootstrap+HTML5 [百度搜标题]【图】

请认准本正版代码,售后技术有保障,代码有持续更新。(盗版可耻,违者必究)???????? 此为本公司团队开发-------------------------------------------------------------------------------------------------------------------------A?代码生成器(开发利器); ?B?阿里数据库连接池druid; ?C?安全权限框架shiro?此系统为?springmvc + mybaits 3.2?版本 ,提供maven的pom.xml文件,另免费赠送hibernate版本一套(垮数据库)?1. 有 oracl...

Hibernate配置文件hibernate.cfg.xml【代码】

<!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"><hibernate-configuration><session-factory><property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property><property name="hibernate.connection.url">jdbc:mysql:///zwnj</property><property name="hibernate.connection.username">...

Hibernate之关联关系

时间:2017-1-20 16:28 ——一对多配置1、第一步:创建实体类 * 客户实体 * 订单实体 示例代码: /** * 客户实体 * @author WYC * */ public class Customer { private Integer cid; private String name; // 一个客户有多个订单 // 拥有哪些订单 private Set<Order> orders = new HashSet<Order>(); ...

Hibernate5.x缓存机制

一、Hibernate一级缓存1、什么是缓存 数据存到数据库里面,数据库本身是文件系统,使用流方式操作文件效率不是很高。(1)把数据存到内存里面,不需要使用流方式,可以直接读取内存中数据(2)把数据放到内存中,提供读取效率 2、Hibernate一级缓存特点(1)hibernate的一级缓存默认打开的(2)hibernate的一级缓存使用范围,是session范围,从session创建到session关闭范围(3)hibernate的一级缓存中,存储数据必须 持久态数据原...

hibernate泛化模版DAO【代码】

编写Spring+Hibernate框架下的应用,总是离不了编写一个通用的泛型GenericHibernateDao。查阅了网上不少的GenericHibernateDao实现,归纳整理为如下实现,供后续编码参考。首先定义接口泛型DAO接口 GenericDaopackage com.th.huz;import java.io.Serializable; import java.util.Collection; import java.util.Iterator; import java.util.List; import org.hibernate.Criteria; import org.hibernate.LockMode; import org.hibern...

在Hibernate中如何配置二级缓存。

缓存就是把以前从数据库中查询出来和使用过的对象保存在内存中,当以后要使用某个对象时,首先查询缓存中是否有这个对象,如果有则使用缓存中的对象,如果没有则去查询数据库,并将查询出来的对象保存在缓存中,以便下次使用,而Hibernate中一级缓存session的作用不够明显,通常用Hibernate的二级缓存,Hibernate的二级缓存是全局缓存。借助第三方缓存:比如ehcache、oscache.....首先需要打开二级缓存,比如用ehcache:<!-- ...

hibernate--HelloWorld【代码】【图】

本次学习版本:hibernate-release-5.2.6.Final,要求java 1.8 和JDBC 4.2。  hibernate是一个开放源代码的对象关系映射框架。对JDBC进行了非常轻量的封装。它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库  hibernate可以在官网直接下载。那么就来看用hibernate实现的一个Hello World的实例。package com.fuwh.mo...

【Hibernate步步为营】--hql查询过滤器及相关聚合函数查询详解【代码】

上篇文章讨论了hql查询中的连接查询,它的查询语法在功能上和sql的连接查询是相同的,内连接查询取得的是关系之间的笛卡尔积,外连接查询是获取一个关系表及与另一个关系表的合集部分,具体的使用方法见上篇文章,并在最后讨论了外置命名查询的方法。该篇文章将会对hql的参数查询、函数查询及查询过滤器做详细的讨论。一、参数查询 参数查询其实是使用等价代换的方法,使用设置的值替换字符串中指定位置的符号,或者通过使用...

hibernate session.get(class,serialid) 方法为空值的原因?【代码】

package hibernate.test;import hibernate.test.pojo.Person;import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import org.hibernate.service.ServiceRegistry; import org.hibernate.service.ServiceRegistryBuilder;public class Test { public static void main(String[] args) {// TODO Auto-generated method stub C...

hibernate criteria Restrictions工具类用法【代码】

CriteriaQuery cq = new CriteriaQuery(TSUser.class, dataGrid); // 查询条件组装器 org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, user); Restrictions.or(Restrictions.ilike("userName", searchValue, MatchMode.ANYWHERE), Restrictions.ilike("realName", searchValue, MatchMode.ANYWHERE)); Restrictions.or(Restrictions.ilike("userOrgList.tsDepart.departname", searchValue, MatchMo...

hibernate表关系【代码】【图】

1.一对一  用户表可以查分成两个表,一个userInfo、一个userLogin表   实现方式:(1)使用外键:外键+唯一性约束+非空约束(2)公用主键:公用主键,从表的主键同时也是外键,来源于主表的主键。 2. 一对多  使用外键,实现一对多关系,外键可以为null  主从关系:一:主表,多:从表 ,从表的外键必须是主表的主键或者null。 实现方法:Student Clazz step1:在一个一方创建对象引用集合 Set<>private Set<Stud...

Eclipse中在web项目中添加hibernate【图】

创建web项目创建一个web项目,FirstHibernatePro创建数据库连接创建一个数据库连接,这里使用的是Mysql数据库:window-->show View-->Data Source Explorer,然后在Database Connections右键 New,选择Mysql,然后去添加自己的数据库连接,并且添加详细的配置和加入相应的数据库驱动包 然后选择ok,开始测试自己的数据库连接,最后finish如果Database Source Exploer中出现了自己的数据库以及表则表明数据库连接创建完成,这里我的数...

怎么让Intellj Idea 把数据库的表映射成hibernate的domain对象【图】

步骤如下:第一步:连接数据源:点击:idea右边的database。如下图所示:或者你依次点击:view-->Tool windows--->database然后你将看在如下点击下面的按钮,我这里是连接mysql数据库,所以我点击mysql按钮,你要连接其他数据库,点击其他数据库就可以了。然后你就看到如下的页面:填入相应的信息,进行连接数据库。现在连接数据库这个步骤已经完成了,第二步:把数据库中的表映射成hibernate的domain对象:这里需要注意如果你的项...

hibernate +spring sessionfactory 配置

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> <property name="dataSource" ref="dataSource"></property> <!--<property name="configLocation" value="hibernate.cfg.xml"></property>--> (3)<property name="hibernateProperties"> <props> <prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop> <prop key="hibernate....

hibernate 继承映射(二)【图】

每个子类映射成一张表:650) this.width=650;" src="/upload/getfiles/default/2022/11/12/20221112033257389.jpg" title="02.png" />每个具体类映射成一张表:650) this.width=650;" src="/upload/getfiles/default/2022/11/12/20221112033257799.jpg" title="03.png" />原文:http://liuyj.blog.51cto.com/2340749/1693509