代码改变世界

随笔档案-2012年12月25日

Hibernate 事务处理和spring中配置事务

2012-12-25 00:16 by eoeAndroid社区, 348 阅读, 收藏,
摘要: 1.非集成spring事务管理事务是指由一个或者多个SQL语句组成的工作单元,这个单元中SQL语句只要有一个SQL语句执行失败,就会撤销整个工作单元。事务的成功取决于工作单元的所有SQL语句都执行成功,它必须具备ACID特征,ACID是Atomic(原子性)、Consistency(一致性)、Isolation(隔离性)和持久性(Durability),它们的含义是:(1)原子性:事务是不可分割的工作单元,事务中所有操作执行成功事务才算成功(2)一致性:事务不能破坏数据的完整性和一致性(正确性)(3)隔离性:在并发环境中,事务是独立的,它不依赖其他事务也能完成任务(4)持久性:只要事务成功执行 阅读全文

hibernate 乐观锁与悲观锁使用

2012-12-25 00:16 by eoeAndroid社区, 201 阅读, 收藏,
摘要: 总结一句话概述 当多个事务同时使用相同数据时会导致并发问题,此时只能用锁来限制。 悲观锁:直接锁住数据库,一个用完,下个才能用,开销大。 乐观锁:数据库中增大version字段,每次提交时,对比当前version和数据库的version是否一致来判断。引用其他文章详细讲解:Hibernate支持两种锁机制:即通常所说的“悲观锁(Pessimistic Locking)”和 “乐观锁(OptimisticLocking)”。悲观锁的实现,往往依靠数据库提供的锁机制(也只有数据库层提供的锁机制才能真正保证数据访问的排他性,否则,即使在本系统中实现了加锁机制,也无法保证外部系统不会修改数据)。Hib 阅读全文

hibernate 延迟加载的错误 failed to lazily initialize

2012-12-25 00:16 by eoeAndroid社区, 216 阅读, 收藏,
摘要: 这个问题一般出现在一对多的情况下,解决的方法有两种1、设置lazy=false如果是用annotation,则配置如下Xml代码@OneToMany(targetEntity=CourseAuthorizationItem.class,cascade={CascadeType.PERSIST,CascadeType.MERGE},mappedBy="course",fetch=FetchType.EAGER)将fetch类型设置成直接获取2、就是使用filter,过滤所有的链接如果在使用filter的时候,要配置事务处理,否则会导致session处于只读状态而不能做修改、删 阅读全文

hibernate的1级缓存和2级缓存

2012-12-25 00:15 by eoeAndroid社区, 149 阅读, 收藏,
摘要: 一级缓存就是Session级别的缓存,close后就没了。 二级缓存就是SessionFactory级别的缓存,全局缓存,要配置其他插件。 什么样的数据适合存放到第二级缓存中? 1、很少被修改的数据 2、不是很重要的数据,允许出现偶尔并发的数据 3、不会被并发访问的数据 4、参考数据 不适合存放到第二级缓存的数据? 1、经常被修改的数据 2、财务数据,绝对不允许出现并发 3、与其他应用共享的数据。 Hibernate的二级缓存策略的一般过程如下: 1) 条件查询的时候,总是发出一条select * from table_name where …. (选择所有字段)这样的S... 阅读全文

spring的入门(aop,ioc,bean作用域等)简介

2012-12-25 00:15 by eoeAndroid社区, 243 阅读, 收藏,
摘要: Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。个人理解:Sping容器作为一个bean工厂,通过配置文件来管理bean(应用中所有组件都当成bean)组成关系:BeanFactory-------->ApplicationContext(子接口)-------->ClassPathXmlApplicationContext(实现类)········IOC控制反转模式 阅读全文

SSH整合开发[Spring2.5+Hibernate3.3+Struts2]

2012-12-25 00:15 by eoeAndroid社区, 233 阅读, 收藏,
摘要: 1.首先整合Spring和Hibernate①引入jar包:hibernate核心安装包下的:hibernate3.jarlib\required\*.jarlib\optional\ehcache-1.2.3.jarhibernate 注解安装包下的lib\test\slf4j-log4j12.jarSpring安装包下的:dist\spring.jardist\modules\spring-webmvc-struts.jarlib\jakarta-commons\commons-logging.jar、commons-dbcp.jar、commons-pool.jarlib\aspectj 阅读全文

hibernate执行sql获取泛型对象

2012-12-25 00:15 by eoeAndroid社区, 218 阅读, 收藏,
摘要: 看下面的SQL查询示例:private void test(){ //获取Hibernate Session对象 Session session = HibernateUtil.currentSession(); //开始事务 Transaction tx = session.beginTransaction(); //编写SQL语句 String sqlString = "select {s.*} from student s where s.name like '马军'"; //以SQL语句创建SQLQuery对象 List l = session.cr 阅读全文

集成Spring后HibernateTemplate实现分页

2012-12-25 00:15 by eoeAndroid社区, 765 阅读, 收藏,
摘要: Spring 整合 Hibernate 时候用的 HibernateTemplate 不支持分页,因此需要自己包装一个类进行分页,具体实现如下...使用spring的hibernateTemplate的回调机制扩展hibernateTemplate的功能实现分页[java]view plaincopy/***使用hql语句进行操作*@paramhql*@paramoffset*@paramlength*@returnList*/publicListgetListForPage(finalStringhql,finalintoffset,finalintlength){Listlist=getH 阅读全文

Hibernate 检索查询的几种方式(HQL,QBC,本地SQL,集成Spring等)

2012-12-25 00:14 by eoeAndroid社区, 360 阅读, 收藏,
摘要: 1.非集成SpringHibernate的检索方式,主要有以下五种。1.导航对象图检索方式。(根据已经加载的对象,导航到其他对象。)2.OID检索方式。(按照对象的OID来检索对象。)3.HQL检索方式。(使用面向对象的HQL查询语言。)4.QBC检索方式。(使用QBC(Qurey By Criteria) API来检索对象。)5.本地SQL检索方式。(使用本地数据库的SQL查询语句。)1、导航对象图检索方式利用类与类之间的关系来检索对象。譬如我们要查找一份订单,就可以由订单对象自动导航找到订单所属的客户对象。当然,前提是必须在对象-关系映射文件上配置了它们的多对一的关系。Orderorder 阅读全文

log4j的使用

2012-12-25 00:14 by eoeAndroid社区, 170 阅读, 收藏,
摘要: log4j是一个非常强大的log记录软件,下面我们就来看看在项目中如何使log4j。首先当然是得到log4j的jar档,推荐使用1.2.X版,下载地址:http://logging.apache.org/log4j/1.2/download.html我们先看一个最简单的示例:【示例1】 项目结构: 【注:由于这里的多个项目公用一个jar档,我们可以创建一个专门放置jar档的Java工程,然后将jar档放到lib目录下。在要使用的工程中按图所示进行引用 】Java代码:Java代码 packagecom.coderdream.log4j; importorg.apache.log4j.Logge 阅读全文

Hibernate 映射xml中的属性类型

2012-12-25 00:14 by eoeAndroid社区, 353 阅读, 收藏,
摘要: Hibernate的内置映射类型1JAVA基本类型(包括它们的包装类)和Hibernate映射类型HibernateJava类型标准SQL类型大小和取值范围integer/intint/java.lang.Integerinteger4字节,-2^31~2^31-1longlong/java.lang.Longbigint8字节, -2^63~2^63-1shortshort/java.lang.Shortsmallint2字节, -2^15~2^15-1bytebyte/java.lang.Bytetinyint1字节, -128~127flatfloat/java.lang.Floatfl 阅读全文

浅谈hibernate(cascade,lazy,inverse,fetch)

2012-12-25 00:13 by eoeAndroid社区, 206 阅读, 收藏,
摘要: 1.cascade是否执行级联操作 <set name="children" lazy="true" cascade="all"> 在保存主表的时候,如果没有保存从表信息,会抛出异常,如果设置了级联关系,可以自动先保存从表,在保存主表all: 所有情况下均进行关联操作,即save-update和delete。 none: 所有情况下均不进行关联操作。这是默认值。 save-update: 在执行save/update/saveOrUpdate时进行关联操作。2.inverse指定哪一方不控制关联关系,一般在set上(1端不 阅读全文

使用JUnit在struts+spring+hibernate框架环境下进行单元测试

2012-12-25 00:13 by eoeAndroid社区, 166 阅读, 收藏,
摘要: 过往使用的方式从最原始的IDE的DEBUG工具断点查错到目前还在用最快捷的使用文字输出(log或system.out)。这些调试方式不是说不好,但有些情况下达不到自己的需求,浪费了一些时间,因为在SSH的环境下修改的源码就意味着要部署。有个误区,有的人认为把ApplicationServer的热部署方式设置为ture,就不用部署了。其实实际还是重新部署了一遍,只是不需要你按键罢了。而且这样的后果还是你每保存一下就帮你部署一次,项目大的话花费很更多,我想也有不少人知道有个内存溢出的问题...挺头痛的..之前偶尔接触到JUnit,才领略到单元测试的精辟,记录一下学习心得。请别笑学得晚,最近也有个T 阅读全文

hibernate的映射关系(1对n,n对1,n对n······)

2012-12-25 00:13 by eoeAndroid社区, 252 阅读, 收藏,
摘要: 1对多(1对多关系,name="novelSet"对应字段名 inverse=“true”不维护关联关系,order-by排序字段)<hibernate-mapping package="com.model"> <class name="NovelType" table="noveltype" catalog="sshweb"> <id name="id" type="java.lang.Integer"> <co 阅读全文

hibernate简介(Session,几种状态,方法······等)

2012-12-25 00:12 by eoeAndroid社区, 345 阅读, 收藏,
摘要: Hibernate是什么? Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 对象关系映射简称ORM(Object Relational Mapping),由于我们目前使用的编程语言大都是面向对象的编程,使用的数据库也大多都是关系型数据库,数据得以对象的形式在程序中使用,并且程序中的有些对象(数据对象)得永久保存在数据库中,故就出现了ORM,说得更通俗点:ORM就是将数据库中的数据和程序中的对象进行互相的转换! 如今的ORM框架可以说是很丰富的:Hibernate,开源 ORM 框架.. 阅读全文

ssh配置的一些简便方法

2012-12-25 00:12 by eoeAndroid社区, 127 阅读, 收藏,
摘要: 如ssh集成hibernate的xml映射2种方法 <!-- mappingResouces属性用来列出全部映射文件 --> <!--<property name="mappingResources"> <list> <value>com/model/Novel.hbm.xml</value> <value>com/model/NovelType.hbm.xml</value> </list> </property>--> //在com/model/map 阅读全文

MYSQL 日期函数

2012-12-25 00:12 by eoeAndroid社区, 139 阅读, 收藏,
摘要: MYSQL 日期函数大全对于每个类型拥有的值范围以及并且指定日期何时间值的有效格式的描述见7.3.6日期和时间类型。这里是一个使用日期函数的例子。下面的查询选择了所有记录,其date_col的值是在最后30天以内:mysql>SELECTsomethingFROMtableWHERETO_DAYS(NOW())-TO_DAYS(date_col)<=30;DAYOFWEEK(date)返回日期date的星期索引(1=星期天,2=星期一,……7=星期六)。这些索引值对应于ODBC标准。mysql>selectDAYOFWEEK('1998-02-03');-&g 阅读全文

Spring 管理Bean(获取Bean,初始化bean事件,自动匹配ByName······等)

2012-12-25 00:11 by eoeAndroid社区, 681 阅读, 收藏,
摘要: 1.实例化spring容器 和 从容器获取Bean对象实例化Spring容器常用的两种方式:方法一:在类路径下寻找配置文件来实例化容器 [推荐使用]ApplicationContext ctx = new ClassPathXmlApplicationContext(new String[]{"beans.xml"});方法二:在文件系统路径下寻找配置文件来实例化容器 [这种方式可以在开发阶段使用]ApplicationContext ctx = new FileSystemXmlApplicationContext(new String[]{“d:\\beans.xml“ 阅读全文

Spring AOP进行日志记录,管理

2012-12-25 00:11 by eoeAndroid社区, 297 阅读, 收藏,
摘要: 在java开发中日志的管理有很多种。我一般会使用过滤器,或者是Spring的拦截器进行日志的处理。如果是用过滤器比较简单,只要对所有的.do提交进行拦截,然后获取action的提交路径就可以获取对每个方法的调用。然后进行日志记录。使用过滤器的好处是可以自己选择性的对某一些方法进行过滤,记录日志。但是实现起来有点麻烦。 另外一种就是使用Spring的AOP了。这种方式实现起来非常简单,只要配置一下配置文件就可以了。可是这种方式会拦截下所有的对action的每个操作。使得效率比较低。不过想做详细日志这个方法还是非常好的。下面我就介绍一下使用Spring AOP进行日志记录的方式。 第一种。Spri 阅读全文

hibernate的搭建(包括Spring集成)和调用

2012-12-25 00:11 by eoeAndroid社区, 139 阅读, 收藏,
摘要: 一.非Spring集成的搭建和使用1.首先我们得下载Hibernate的需要的jar包(通常情况下导入hibernate3.jar和require文件夹里面的所有jar包). hibernate3.jar: 这个是Hibernate的核心包,所以是必须的jar包. cglib-2.2.jar: cglig库,Hibernate用它来实现PO字节码的动态生成,非常核心的包,所以也是必须的包 dom4j.jar dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的。dom4j是一个非常优秀的Java XML API,具有性能优异、功能强大和极端易用使... 阅读全文

struts2跟struts1的区别

2012-12-25 00:11 by eoeAndroid社区, 139 阅读, 收藏,
摘要: 1) 在Action实现类方面的对比:Struts 1要求Action类继承一个抽象基类;Struts 1的一个具体问题是使用抽象类编程而不是接口。Struts 2 Action类可以实现一个Action接口,也可以实现其他接口,使可选和定制的服务成为可能。Struts 2提供一个ActionSupport基类去实现常用的接口。即使Action接口不是必须实现的,只有一个包含execute方法的POJO类都可以用作Struts 2的Action。2) 线程模式方面的对比:Struts 1 Action是单例模式并且必须是线程安全的,因为仅有Action的一个实例来处理所有的请求。单例策略限制了 阅读全文

mysql命令行操作

2012-12-25 00:09 by eoeAndroid社区, 253 阅读, 收藏,
摘要: 一、连接MYSQL格式: mysql -h主机地址 -u用户名 -p用户密码或者: mysql -u 用户名 -p // 回车后要求输入密码,密码不可见1、连接到本机上的MYSQL。首先打开DOS窗口,然后进入目录mysql\bin,再键入命令mysql -u root -p,回车后提示你输密码.注意用户名前可以有空格也可以没有空格,但是如果-p后带有用户密码,那么-p与密码之间必须没有空格,否则让你重新输入密码.例如以下都是合法的登陆:(帐号:root 密码:123)mysql -u root -pmysql -uroot -pmysql -uroot -p123如果刚安装好MYSQL,超级 阅读全文

Junit

2012-12-25 00:09 by eoeAndroid社区, 205 阅读, 收藏,
摘要: 我们在编写大型程序的时候,需要写成千上万个方法或函数,这些函数的功能可能很强大,但我们在程序中只用到该函数的一小部分功能,并且经过调试可以确定,这一小部分功能是正确的。但是,我们同时应该确保每一个函数都完全正确,因为如果我们今后如果对程序进行扩展,用到了某个函数的其他功能,而这个功能有bug的话,那绝对是一件非常郁闷的事情。所以说,每编写完一个函数之后,都应该对这个函数的方方面面进行测试,这样的测试我们称之为单元测试。传统的编程方式,进行单元测试是一件很麻烦的事情,你要重新写另外一个程序,在该程序中调用你需要测试的方法,并且仔细观察运行结果,看看是否有错。正因为如此麻烦,所以程序员们编写单元测 阅读全文

json返回hibernate的结果会自动调用(get)查询出关联表的数据,解决方法

2012-12-25 00:09 by eoeAndroid社区, 147 阅读, 收藏,
摘要: //防止json数据用类的get方法访问关联类的所有数据,如果不需要关联的数据,set关联的Nullfor(Novel novel : novelList){novel.setNovelType(null);}comentData.put("rows", novelList); 阅读全文