Hibernate笔记
HQL笔记

1.hql更新String hql = "update PhUser set realName=?";int row=this.getSession().createQuery(hql).setString(0, "小李想").executeUpdate();PhUser 类名2.hql删除String hql = "delete PhUser a where erId=2";int row=this.getSession().createQuery(hql).executeUpdate();还有个这种的格式:final String hql = "delete PhRoleFunction as a where a.roleId = "+ roleId;this.getHibernateTemplate().execute(new HibernateCallback() {public Object doInHibernate(Session session)throws HibernateException, SQLException {return session.createQuery(hql).executeUpdate();}});更新也可以写成这样的格式3.hql单表查询String hql = "from PhUser a where erId=" + userId;List list = this.getHibernateTemplate().find(hql);4.hql多表查询(1)String hql = "select new map(a.CUId as CUId,a.unitName as unitName,b.CUFId as CUFId,b.UFName as UFName) from PhCorrelativeUnit a,PhCorrelativeUnitFunction b where a.CUId=b.CUId";List list = this.getHibernateTemplate().find(hql);多个表的字段放到map中,map的键值就是as后面的别名,如果没有as就是字段名(2) String hql = "select new com.phantom.appeal.action.bean.DealPaper(a.id as id,a.billId as billId,a.state as state,a.creator as creator,a.createtime as createtime ,b.eventContent as eventContent ,c.realName as realName,b.billCode as billCode,b.citName as citName ) from PhDealBill a,PhAcceptBill b,PhUser c where a.departmentId="+ billid+ " and a.state=0 and a.billId=b.billId and a.creator =erId order by a.billId";return this.getHibernateTemplate().find(hql);另外就是写一个类,对应你要查询的字段,这里的类名是new com.phantom.appeal.action.bean.DealPaper,里面对应查询的字段名5.得到记录数String hql = "select count(*) from PhUser";List list = this.getHibernateTemplate().find(hql);return ((Long) list.get(0)).intValue();<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN""/dtd/spring-beans.dtd"><beans><bean id="propertyConfig"class="org.springframework.beans.factory.config.Pr opertyPlaceholderConfigurer"><property name="locations"><list><value>classpath:system.properties</va lue></list></property></bean><!--JNDI DataSource for J2EE environments --><bean id="dataSource"class="boPooledDataSource"destroy-method="close"><property name="driverClass"value="${db.driverClassName}"/><property name="jdbcUrl" value="${db.url}"/><property name="user" value="${ername}"/><property name="password" value="${db.password}"/><!--C3P0 configuration --><property name="autoCommitOnClose" value="true"/><property name="checkoutTimeout"value="${cpool.checkoutTimeout}"/><property name="initialPoolSize"value="${cpool.minPoolSize}"/><property name="minPoolSize"value="${cpool.minPoolSize}"/><property name="maxPoolSize"value="${cpool.maxPoolSize}"/><property name="maxIdleTime"value="${cpool.maxIdleTime}"/><property name="acquireIncrement"value="${cpool.acquireIncrement}"/><property name="maxIdleTimeExcessConnections"value="${cpool.maxIdleTimeExcessConnections}"/></bean><bean id="baseService" lazy-init="true"class="org.springframework.transaction.interceptor.TransactionPr oxyFactoryBean"abstract="true"><property name="transactionManager"><ref bean="transactionManager" /></property><property name="transactionAttributes"><props><prop key="exec*">PROPAGATION_REQUIRED</prop><prop key="create*">PROPAGATION_REQUIRED</prop><prop key="update*">PROPAGATION_REQUIRED</prop><prop key="save*">PROPAGATION_REQUIRED</prop><prop key="add*">PROPAGATION_REQUIRED</prop><prop key="del*">PROPAGATION_REQUIRED</prop><prop key="remove*">PROPAGATION_REQUIRED</prop><prop key="insert*">PROPAGATION_REQUIRED</prop><prop key="*">PROPAGATION_REQUIRED</prop></props></property></bean><bean id="messageSource"class="org.springframework.context.support.ReloadableResourceBundleMe ssageSource"><property name="basenames"><list><value>classpath:GlobalMessage</value></list></property></bean><bean id="lobHandler"class="org.springframework.jdbc.support.lob.DefaultLobHandler"lazy-init="true"></bean><!-- SessionFactory --><bean id="sessionFactory"class="org.springframework.orm.hibernate3.LocalSessionFactoryBea n"abstract="false" singleton="true" lazy-init="default"autowire="default" dependency-check="default"><property name="dataSource" ><ref bean="dataSource"/></property><property name="lobHandler"><ref local="lobHandler" /></property><property name="mappingDirectoryLocations"><list><value>classpath:com/hmmarket/entity</value></list></property><property name="hibernateProperties"><props><prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop><prop key="hibernate.show_sql">true</prop><propkey="hibernate.format_sql">true</prop></props></property></bean><!-- TransactionManager --><bean id="transactionManager"class="org.springframework.orm.hibernate3.HibernateTransactionMa nager"><property name="sessionFactory"><ref local="sessionFactory" /></property></bean><bean id="sqlMapClient"class="org.springframework.orm.ibatis.SqlMapClientFactoryBean"><property name="dataSource" ref="dataSource"/><property name="configLocation"value="classpath:sqlmap/sql-map-config.xml"/></bean><bean id="baseDao"class="com.hmmarket.framework.base.dao.impl.BaseDaoImpl"><property name="sessionFactory" ref="sessionFactory"/><property name="sqlMapClient" ref="sqlMapClient"/> </bean><bean id="tagDao"class="mon.tag.hibernate.TagDa oHibernate"autowire="byName"/><bean id="tagManager" parent="baseService" singleton="false"> <property name="target"><beanclass="mon.tag.impl.TagManagerImpl"autowire="byName" /></property></bean><!--start config batch job--><bean name="hmBatchJob"class="com.hmmarket.service.batchjob.HMBatchJob" singleton="false"autowire="byName"/><bean name="hmBatchFeeInfo"class="org.springframework.scheduling.quartz.MethodInvokingJobDetailF actoryBean"><property name="targetObject" ref="hmBatchJob"/><property name="targetMethod" value="execAllBatchJob"/><property name="concurrent" value="false"/> </bean><bean id="cronTrigger"class="org.springframework.scheduling.quartz.CronTriggerBean"><property name="jobDetail" ref="hmBatchFeeInfo"/><property name="cronExpression" value="0 0 0 ? *MON-FRI"/></bean><bean id="seheduler"class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"><list><ref bean="cronTrigger"/></list></property></bean><!--end config batch job--></beans>。
hibernate配置

目录
1 Hibernate概述 2 第一个Hibernate程序 3 Hibernate的配置文件 4 深入理解持久化对象 5 Hibernate的映射文件 6持久化对象 如果PO 实例与Session实例关联起来,且该实例关联到数据库的记录
脱管对象 如果PO实例曾经与Session实例关联过,但是因为Session的关闭等原 因,PO实例脱离了Session 的管理
Hibernate全面解决方案架构解释
事务(Transaction) 代表一次原子操作,它具有数据库事务的概念 但它通过抽象,将应用程序从底层的具体的JDBC、JTA和CORBA 事务中隔离开。 一个Session 之内可能包含多个Transaction对象。 所有的持久化操作都应该在事务管理下进行,即使是只读操作。
管态,对该对象操作无须锁定数据库,不会造成性能的下降。
持久化对象的状态迁移
持久化实体: 1、Serializable save(object obj) 将对象变为持久化状态 2、void persist(object obj) 将对象转化为持久化状态 3、Serializable save(object obj,object pk) 将obj对象转化为持久化状态,该对象保存到数据库,指定主键值 4、void persist(object obj,object pk) 也加了一个设定主键
Hibernate工作原理
Configuration cfg = new Configuration().configure();
开始
启动hibernate
构建Configuration 实例,初始 化该实例中的所有变量
bookStore 笔记

1. 获取购物车对象
ClearShoppingCartServlet
2. 调用 BookService.clearShoppingCart(ShoppingCart sc) 方法 3. 派发页面: catalog.jsp: 并给出提示信息: “您的购物车现在 为空”
BookService
1. clearShoppingCart(ShoppingCart sc) : 清空购物车中的 所有 ShoppingCartItem 对象, 实际上是调用 Map.clear() 方法
输入新的查询条件
1. 调用getSearchBookFromRequest 方 法获取新的 SearchBook 对象 2. 更新 HttpSession 中的 SearchBook 对象
查询操作
没有输入新的查询条件
使用上次的查询条件, SearchBook 对象 应该从 HttpSession 中获取
Service
没有 有
把点击读书对应的 ShoppingCartItem 对象 放到已经创建好的购物车中
从购物车中取出 ShoppingCartItem 对象 使其 quantity + 1
View: Jsp
1. 获取请求参数: bookid
DeleteItemFromCartServlet
2. 获取购物车对象 3. 调用 BookService 对象的 deleteItemFromShoppingCart(int bookId, ShoppingCart sc) 4. 派发页面
查询操作
如何区分是否输入了查询条件?
若点击了 “查询” 按钮, 则提交了表单, 此时 booktitle, bookauthor 等查询表单域都 不为 NULL . 否则为 NULL
裕兴新概念英语第二册笔记_第55课

11-08-2013gold n 金子mine n 矿treasure n 财宝revealer n 探测器invent v 发明detect v 探测bury v 埋藏cave v 山洞seashore n 海岸pirate n 海盗arm v 武装soil n 泥土entrance n 入口finally adv 最后worthless adj 毫无价值的thoroughly adv 彻底地trunk n 行李箱confident adj 有信心的value n 价值gold 1n 金子pure gold 纯金a gold medal 一枚金牌a gold ring 一枚金戒指a gold necklace 一条金项链a gold watch 一块金表a gold mine 一座金矿a golsfish 一条金鱼Pay in gold 用金币付款egAll that glitters is not gold.闪光的不都是金子(外表好不见得真的好)2n a voice of gold 金嗓子golden adj a golden opportunity 一个绝好的机会,良机golden days (一生中的)幸福时光egSpeech is silver; silence is golden.(谚)雄辩是银,沉默是金silver n 银子a silver coin 一枚银币silvery adj 银白色silver gray adj 银灰色mine 1我的egShe is a firend of mine .她是我的一个朋友。
2n 矿a coal-mine 一个煤矿a gold-mine 一个金矿a mine worker/miner 一个矿工3egHe is a mine of information about the political situation of that country. 他非常熟悉该国的政情。
hibernate官方文档

第一篇:官方文档的处理方法,摘自官方在迁移原先用JDBC/SQL实现的系统,难免需要采用hibernat native sql支持。
1.使用SQLQueryhibernate对原生SQL查询执行的控制是通过SQLQuery接口进行的.1Session.createSQLQuery();1.1标量查询最基本的SQL查询就是获得一个标量(数值)的列表。
1sess.createSQLQuery("SELECT * FROM CATS").list();2sess.createSQLQuery("SELECT ID, NAME, BIRTHDATE FROM CATS").list();将返回一个Object数组(Object[])组成的List,数组每个元素都是CATS表的一个字段值。
Hibernate会使用ResultSetMetadata来判定返回的标量值的实际顺序和类型。
如果要避免过多的使用ResultSetMetadata,或者只是为了更加明确的指名返回值,可以使用addScalar()。
1sess.createSQLQuery("SELECT * FROM CATS")2 .addScalar("ID", Hibernate.LONG)3 .addScalar("NAME", Hibernate.STRING)4 .addScalar("BIRTHDATE", Hibernate.DATE)这个查询指定了:SQL查询字符串,要返回的字段和类型.它仍然会返回Object数组,但是此时不再使用ResultSetMetdata,而是明确的将ID,NAME和BIRTHDATE 按照Long, String和Short类型从resultset中取出。
同时,也指明了就算query 是使用*来查询的,可能获得超过列出的这三个字段,也仅仅会返回这三个字段。
B 理解Hiberante及HQL初步

2013-7-31
13
基本/包装类型属性
一. 1. 二. 1.
基本数据类型 包装类型
long,int,short,byte,float,double,char,boolean Long,Integer,Shot,Byte,Float,Double,Charact er,Boolean
课堂提问:什么是包装数据类型?有什么作用?
3
二. 1.
2.
3.
对象标识符(OID)的作用
2013-7-31
对象标识符(OID)
三. 1.
OID生成器的概念
Hibernate提供了多种不同的OID生成器,每一种 OID生成器对应一种OID生成方式,具体体现为一 个生成器类。
2013-7-31
4
对象标识符(OID)
三.
各种OID生成器简介
increment
20
持久化类/实体的状态
瞬时-Transient
由new操作符创建,且尚未与Hibernate Session 关联的 对象被认定为瞬时(Transient)的。 瞬时(Transient)对象不会被持久化到数据库中,也不会 被赋予持久化标识(identifier)。 如果程序中没有保持对瞬时(Transient)对象的引用,它 会被垃圾回收器(garbage collector)销毁。 使用Hibernate Session可以将其变为持久(Persistent) 状态。(Hibernate会自动执行必要的SQL语句)
28
二. 1. 2.
HQL使用方式
2013-7-31
HQL概述(续)
三.
四.
在HQL中无表的概念,查询(检索)的 目标是类和属性,检索的结果是对象集 合。 HQL语句示例
hibernate_中_对数据库中date类型的处理_概述说明
hibernate 中对数据库中date类型的处理概述说明1. 引言1.1 概述:在软件开发中,与日期相关的数据类型在数据库处理中经常出现。
hibernate是一个流行的Java持久化框架,在与数据库交互时也需要考虑对日期类型数据的处理。
本文旨在提供有关hibernate中对数据库中date类型的处理的全面概述。
1.2 文章结构:本文按照以下结构进行阐述:2. hibernate 中对数据库中date类型的处理:介绍了hibernate中处理Date 类型数据的方法和技巧,以及在数据库中保存和检索Date类型数据时需要遵循的最佳实践。
3. Date类型与其他数据类型之间的转换:探讨了Date类型与字符串、Timestamp和Calendar之间相互转换的方法和注意事项。
4. Hibernate中使用日期函数进行查询和计算:介绍了常用的日期函数,以及如何在Hibernate中使用这些函数进行查询和计算,并附有示例代码和解释。
5. 结论: 总结了文章内容,并提出进一步研究该主题可能涉及到的方向。
1.3 目的:通过本文,读者将能够理解在hibernate中如何正确地操作和处理数据库中的Date类型数据。
我们将讨论一些重要概念、方法和技巧,并提供示例代码来帮助读者更好地理解。
此外,我们还将讨论与Date类型有关的其他数据类型之间的转换,并详细介绍如何在Hibernate中使用日期函数进行高级查询和计算。
最后,我们将通过总结文章内容并提出进一步研究的方向来归纳全文。
(注意:本段是按照普通文本格式回答,以下部分也同样)2. hibernate 中对数据库中date类型的处理2.1 Date类型介绍在Hibernate中,Date是Java中表示日期和时间的类之一。
它可以直接与数据库中的date类型进行映射,并提供了许多操作和方法用于处理日期和时间数据。
2.2 Hibernate中操作Date类型的方法和技巧当我们使用Hibernate操作数据库中的Date类型数据时,可以使用以下方法和技巧来处理:- 映射配置:在Hibernate实体类中,使用注解或XML文件进行映射配置。
韩顺平java从入门到精通视频教程(全94讲)学习笔记整理(齐全)
java平台1、J2SE java开发平台标准版2、J2EE java开发平台企业版java程序需要在虚拟机上才可以运行,换言之只要有虚拟机的系统都可以运行java程序。
不同系统上要安装对应的虚拟机才可以运行java程序开发步骤1、编写源文件 (.java)2、编译源文件为类文件(.class)可用J2SE或J2EE编译3、在虚拟机上运行注释//单行注释/* */多行注释java内容介绍java编程可以分成三个方向:1、java se (j2se)桌面开发 java中的基础中的基础2、java ee (j2ee)web开发3、java me (j2me)手机开发java se课程介绍java面向对象编程(基础)java图开界面开发java数据库编程java文件io流编程java网络编程java多线程编程java ee基础1java面向对象编程--数据库编程-->java sejava 基础2html--css--javascript-->div+cssjava ee中级部分Servlet--Jsp-->mvc模式java ee高级部分Struts--Ejb--Hibernate--Spring--Ajax(ext,dw2)-->ssh框架java之父gosling1990 sun启动绿色计划1 | 4451992 创建oak语言-->java1994 gosling参加硅谷大会演示java功能,震惊世界1995 sun正式发布java第一个版本,目前最新是jdk7.0java开发工具记事本、(jcreator、jbuilder退出舞台了)、netbean、eclipse如何选择开发工具先选择记事本,对java有一定了解后再使用eclipse高级开发工具为什么呢?1、更深刻的理解java技术,培养代码感2、有利于公司面试java语言的特点1、java语言是简单的2、java语言是面向对象的3、java语言是跨平台(操作系统)的[即一次编译,到处运行]4、java是高性能的java第一个程序hello.java运行java程序要安装和配置jdkjdk是什么?1、jdk全称java dvevlopment kit中文java开发工具包2、jdk是sun公司开发的3、jdk包括jre(java runtime envirnment)java运行环境、一堆java工具和java基础的类库(类共3600左右,常用类在150个左右)4、可以在下载**开发安装jdk,用户执行需要安装jre配置JDK添加环境变量即可windows下配置jdk在计算机属性--高级设置--环境变量--添加PATH将JDK所在路径指定即可。
韩顺平servlet与jsp 笔记与心得
∙韩顺平 servlet与jsp 笔记与心得∙∙∙∙Java EE概述:Java EE是一个开放的平台,它包括的技术很多,主要包括十三种核心技术(java EE就是十三种技术的总称)。
建立一个整全的概念。
J2ee的十三种技术(规范)1.java数据库连接(JDBC)。
——JDBC定义了4种不同的驱动:1.JDBC-ODBC桥,2.JDBC-native驱动桥3,JDBC-network桥4.纯java驱动。
2.Java命名和目录接口(JNDI)(它是为了对高级网络应用开发中的使用的目录基础结构的访问。
)。
3.企业Java Beans(Enterprise Java Beans,EJB)(它提供了一个架构来开发和配置到客户端的分布式商业逻辑,因此可以明显减少开发扩展性、高度复杂企业应用的难度。
)。
4.JavaServer Pages(JSPs)。
5.Java servlets(servlets提供的功能大部分与JSP相同,JSP中大部分是HTML代码,其中只有少量的Java代码,而servlets则相反,它完全使用Java编写,并且产生HTML代码。
)。
6.Java IDL/CORBA(用得不多)。
7.Java 事务体系(JTA)/Java事务服务(JTS)(用得不多)。
8.JavaMail和JavaBenas激活架构(JavaBeans ActivationFramework,JAF)。
(JavaMail是一个用来访问邮件服务的API)。
9.Java信使服务(Java Messaging Service,JMS)(JMS是一个用来和面向信息的中层通信的API)。
10.扩展标记语言(Extensible Markup Language,XML)。
11.12. 13当前流行的及格框架struts+hibernate+spring(ssh).Java ee的开发环境(eclipse)Eclipse是一个开源的、可扩展的集成开发环境,已经成为目前最流行的j2ee 开发工具。
Hibernate_映射配置文件详解
Prepared by TongGang
hibernate.cfg.xml的常用属性
• • • • • • • • • connection.url:数据库URL ername:数据库用户名 connection.password:数据库用户密码 connection.driver_class:数据库JDBC驱动 show_sql:是否将运行期生成的SQL输出到日志以供调试。取 show_sql 值 true | false dialect:配置数据库的方言,根据底层的数据库不同产生不 dialect 同的sql语句,Hibernate 会针对数据库的特性在访问时进行 优化。 hbm2ddl.auto:在启动和停止时自动地创建,更新或删除数据 hbm2ddl.auto 库模式。取值 create | update | create-drop resource:映射文件配置,配置文件名必须包含其相 mapping resource 对于根的全路径 connection.datasource :JNDI数据源的名称
• Class:定义一个持久化类 Class: • name (可选): 持久化类(或者接 (可选): 持久化类( 可选 口)的类名 • table (可选 - 默认是类的非全限 (可选 定名): 定名): 对应的数据库表名 • discriminator-value (可选 - 默 discriminator(可选 认和类名一样): 认和类名一样): 一个用于区分不 同的子类的值,在多态行为时使用。 同的子类的值,在多态行为时使用。 它可以接受的值包括 null 和 not null。 null。
Prepared by TongGang
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1,本章任务:
《1》使用Hibernate实现用户的增、删、改、查。
《2》升级房屋出租系统:
(1)使用Hibernate实现用户注册:
(2)使用Hibernate实现房屋信息的增、删、改、查。
2,本章目标:
《1》理解Hibernate工作原理:
《2》使用Hibernate实现增、删、改、查 等操作。
3,为什么使用Hibernate?
《1》Hibernate是用于简化对DAO层的操作:
(1)Hibernate只对对象/实体操作,不对表操作。
(2)传统的jdbc方式是对数据库中表的操作,
注:使用Hibernate可以简化DAO层的实现。
4,ORM(object relation mapping),对象关系映射:
我们的Java程序是面向对象的。而现今的大多数数据库都是关系型数据库。而OR
M是我们能以面向对象的
思想来操作数据库。能将对 对象的操作转换成对表的操作。
即:以后我们只需做绿色线 所画部分,红色部分会由Hibernate自动实现(将程序中对
对象的操作转化成对数据库中表的操作)
8.png
注:
Struts是MVC的实现。
Hibernate是ORM的实现。
5,持久化:(重要)
将程序数据在瞬时状态和持久状态之间转换的机制。
如:从数据库中取出数据放到List集合中,也是一种持久化。
瞬时状态:保存在内存中的数据
持久状态:
6,使用Hibernate所需准备:
《1》添加Hibernate支持(jar包)
《2》添加配置文件--Hibernate.cfg.xml
《3》添加实体类和映射文件--User.hbm.xml
6,serializable实现序列化是为了数据更方便的传输。
7,主键生成器:
native 在数据库中生成。需在数据库中设置成自增长。
assigned 在程序中指定主键:此种情况下,数据库中的主键 不能 设置成 自增长
8,使用Hibernate,系统中添加一个表的时候应做哪些准备?
《1》添加实体类User(实体类继承java.io.Serializable包),
《2》添加实体映射文件User.hbm.xml,(名字可以实体名相同,也可不同。)
( 注:建xml时,选用XML(Basic Templates))
《3》将映射文件添加到配置文件中,即:在hibernate.cfg.xml中添加
注:实体类中属性的名字 与 数据库表中 字段的名字 可以不相同,但是建议写成一样的。
9,使用Hibernate的七个步骤:
其中,此处的session不是会话,而是代表数据库的连接,类似JDBC中的Connection。
即:在jdbc中使用Connection来创建连接,而Hibernate使用session来建立连接。
注意:导包的时候是导入 org.hibernate.XXX包;
10,Hibernate原理/执行过程:
增、删、改 等对数据库进行了改变的操作,需添加到事务中,而查询未对数据库进行修改,
不需添加到事务中。
且在Hibernate中,增、删、改、查、分别对应 session.save() , session.delete() , session.update() ,
session.get() 方法。以上各方法中,都是以实体作为参数的(如:User类的实体)。
注:和JDBC相比,JDBC的效率更高。但Hibernate使用更加方便。