- 浏览: 334966 次
- 性别:
- 来自: 北京
最新评论
-
lvyuan1234:
lvyuan1234 写道lvyuan1234 写道lvyua ...
java解析mp3工具 -
lvyuan1234:
lvyuan1234 写道lvyuan1234 写道怎么一直报 ...
java解析mp3工具 -
lvyuan1234:
lvyuan1234 写道怎么一直报找不到文件?找到原因了,e ...
java解析mp3工具 -
lvyuan1234:
怎么一直报找不到文件?
java解析mp3工具 -
Cy0941:
...
org.apache.catalina.connector.RequestFacade cannot be cast to org.springframewor
文章列表
提供创建对象的接口。
可以做一些初始化工作等,尤其是在对象的关系比较复杂的情况下,好处更加明显。
工厂模式一般与单例模式配合使用。
工厂模式分为两种:工厂方法(Factory Method),抽象工厂(Abstract Factory)。
工厂方法
FactoryMethod.java
package com.gary.designpattern.factory.factorymethod;
import com.gary.designpattern.factory.obj.Obj;
import com.gary.designpattern.factory.obj.O ...
Singleton模式主要作用是保证在 Java应用程序中,一个类 Class只有一个实例存在。
有两种实现方式:
1.private构造方法.
2.synchronized获取实例方法.
示例代码如下
SingletonA.java
package com.gary.designpattern.singleton;
/**
* Singleton模式主要作用是保证在 Java应用程序中,一个类 Class只有一个实例存在
*
* @author gary
*
*/
public class SingletonA {
private s ...
IPUtil.java
package com.gary.net;
import java.net.Inet4Address;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.HashMap;
public class IPUtil {
public static v ...
文件类型使用FileBody,字符串类型使用StringBody,其它的还有ByteArrayBody,InputStreamBody.
package com.gary.test.upload;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse ...
mysqldump后,修改表时提示:
Cannot load from mysql.proc. The table is probably corrupted,
版本升级引起的问题,解决方法:
C:\Users\gary>mysql_upgrade -u root -p
报错
org.hibernate.exception.SQLGrammarException: could not execute native bulk manipulation query at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:92) at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66) at org.hibernate.engine.query.NativeSQ ...
通过接口方式注入
建议使用前两种方法
Source.java
package com.gary.test;
public class Source {
public void helloWorld(){
System.out.println("Hello World!");
}
}
ISource.java
package com.gary.test;
public interface ISource {
//方法名任意,方法参数是所依赖对象的类型
public void injectSource(So ...
通过访问器方法(set)注入
此方法较为常用.在目标类中,定义要注入的属性,并添加访问器方法,则spring会自动注入.
Source.java
package com.gary.test;
public class Source {
public void helloWorld(){
System.out.println("Hello World!");
}
}
Target.java
package com.gary.test;
public class Target {
private S ...
构造方法注入
通过constructor-arg指定构造方法的参数
Source.java
package com.gary.test;
public class Source {
public void helloWorld(){
System.out.println("Hello World!");
}
}
Target.java
package com.gary.test;
public class Target {
private Source source;
publi ...
悲观锁
在应用程序中显示地为数据资源加锁.悲观锁假定当前事务操纵数据资源时,肯定还会有其它事务同时访问该数据资源,为了避免当前事务的操作受到干扰,先锁定资源.尽管悲观锁能防止丢失更新和不可重复读这类并发问题,但会影响并发性能.
乐观锁
假定当前事务操纵数据资源时,不会有其它事务同时访问该数据资源,因此完全依靠数据库的隔离级别来自动管理锁的工作.应用程序采用版本控制手段来避免可能出现的并发问题.
LockMode类表示的几种锁定模式
锁定模式
描述
LockMode.NONE
SQLQueryImpl query = (SQLQueryImpl) session.createSQLQuery(
"sql语句")
.setParameter(0, 参数);
query.addScalar("列1", Hibernate.STRING)
.addScalar("列2", Hibernate.STRING);
return query.list();
需要注意的是所有的列都要写出来,addScalar来指定它们的类型,否则会类型转换异常
...不知道有没有和我一样懒的,表的列太多,一个一个弄太麻烦,每次都下断点调试更麻烦,还是直接输出省事
package ssh.util;
import java.lang.reflect.Method;
/**
* 利用反射生成hibernate映射类的toString方法
* @author gary
*
*/
public class GenerateToString {
/**
* 覆盖toString
* @param classPath 包名+类名,如ssh.vo.User
* @return
*/
public sta ...
persist()方法和save()方法
persist()方法是在Hibernate3版本中才出现的,实现了EJB3规范中定义的持久化语义,persist()方法不保证立即为持久化对象的OID赋值,而是有可能在Session清理缓存时才为OID赋值.
session.save()方法并不立即执行SQL insert语句,只有当Session清理缓存时,才会执行SQL语句,如果在save()方法后,又修改了持久化对象的属性,
java对象在Hibernate中的状态
1. 临时状态(transient):刚用new语句创建,还没有被持久化,并且不处于Session缓存中.临时对象.
2. 持久化状态(persistent):已经被持久化,并且加入到Session的缓存中.
public static BeanFactory factory = null;
public static UserDAOImpl userDAOImpl = null;
public static SessionFactory sessionFactory = null;
public static Session session = null;
@BeforeClass
public static void setUpBeforeClass() throws Exception { ...