- 浏览: 111284 次
- 性别:
- 来自: 农村进城务工人员
最新评论
-
suxiaomi:
...
Spring MVC—拦截请求 -
hetor:
...
重写equals()时要重写hashCode() -
luoyexian:
你好:请问web.xml 要怎么配置这两个文件,我将这两个文件 ...
从日志看Spring启动过程 -
xingyunpi:
很清楚,谢谢分享~收藏一下
重写equals()时要重写hashCode() -
citymoon2000:
拦截器没用
Spring MVC—拦截请求
文章列表
1、set
前面已经介绍了set的使用,这里只是介绍一下其中的element元素:
如果一对多中多方的表字段很少,可以不必单独建立映射文件,使用element更加方便
如:Company--Dept
dept表只有公司id:compid,部门名称:name
那么使用上述方法更简洁:
<set name="depts" table="dept">
<key column="compid"/>
<element column="name" type="strin ...
- 2009-05-19 16:10
- 浏览 869
- 评论(0)
1、一对多
一般使用延迟加载关联对象,即lazy=true(默认)
如果立即加载(lazy=true),关联的对象较多时可以在set上配置batch-size,以减少select语句的次数(即生成了...in(xx,xx...)语句)。batch-size一般设置为30-50比较合适。
2、多对一
很多情况下多对一都会使用立即检索,即显式配置lazy=false,此时可以在1方的class配置batch-size以提高检索1方的效率。
3、迫切左外关联检索
可以在set、many-to-one、one-to-one中配置fetch=join实现,也可以在hql中使用left join fetch ...
- 2009-05-19 14:32
- 浏览 864
- 评论(0)
1、one-to-many
<set name="email" inverse="true" cascade="all">
<key column="uid"/>
<one-to-many class="com.chen.vo.Email"/>
</set>
2、many-to-one
<many-to-one name="users" column="uid" cl ...
- 2009-05-18 21:51
- 浏览 851
- 评论(0)
引用
http://www.iteye.com/topic/82946
关于one-to-one关联的从方不能lazy loading是由one-to-one的机制造成的,比如user和contact是一对一,user是主,contact是从,约束依赖于user,那么在数据库中,contact表中应该有一个外键字段指向user表的主键。
当加载contact对象时,从contact表的记录中就可以得到user记录的id,这和多对一是一样的,就可以知道user对象是否存在,不存在则user为null,存在就生成代理对象,所以可以实现主方的延迟加载。
当加载user对象时,从user表记录 ...
- 2009-05-18 21:03
- 浏览 1064
- 评论(0)
equal:比较两者的值是否相等;
==:比较两者是否是同一个对象的引用。
例子:
Integer a=1;
Integer b=new Integer(1);
System.out.println(a==b);//false
System.out.println(a.equal(b));//true
注意:为String、Integer、Double、Long类型的变量赋初值,其实就是创建了一个常量对象,所以如果将此常量对象作为一个实参,在调用函数内部修改其值是不会改变实参的值的。
static void main(String[] arg0){
String ...
- 2009-05-18 17:29
- 浏览 914
- 评论(0)
通过另外设置一个合适的构造函数即可。
比如只加载User的username、password,那么这样添加一个构造函数到User.java:
public User(String username,String password){
this.username=username;
this.password=password;
}
在查询时:
Query q=session.CreateQuery("select new User(u.username,u.password) from User u where u.id=1");
q.list() ...
- 2009-05-12 21:05
- 浏览 910
- 评论(0)
1、原生SQL,为复杂查询提供帮助
getUser(){
SQLquery q=session.createSQLQuery("select {u.*} from users u where username='"+username+"'",u);
q.addEntity("u",Users.class);//u是表的别名
return (Users)q.setMaxResults(1).uniqueResult();
}
2、Query的list与iterator
引用
robbin:
众所周知,Li ...
- 2009-05-12 20:37
- 浏览 2535
- 评论(1)
我们知道hibernate默认情况下对CRUD的执行是按照save、update、delete的顺序,为什么是这样呢?
因为在调用session.save()时,hibernate同时执行了session.flush(),这个方法是清理(注意不是清空!)hibernate缓存,同时发送SQL语句到数据库(但并没有更新数据库,直到commit()后才更新)。
代码:
session.save(user);//此时会输出SQL语句
session.update(user);//不输出SQL语句
session.delete(user);//不输出SQL语句
关键在于调用se ...
- 2009-05-12 18:31
- 浏览 1058
- 评论(0)
最近在学习hibernate时对dao设计模式产生一些疑惑,总结出以下事务管理方案:
1、只涉及到简单的业务流程(每个业务只涉及一个dao操作)
此时不需要service层,只要dao就够了。
例子:
public void insertUser(Users user) {
Session session=SessionFactory.openSession();
Transaction ts=session.beginTransaction();
session.save(user);
ts.commit();
session.close();
}
这里的Sess ...
- 2009-05-06 22:59
- 浏览 2902
- 评论(0)
Criteria接口天生就是为动态查询而设计的,当然Query接口也可以实现,但比较繁杂。
简单例子:
public List<User> getUserByCond(Map<String, String> cond) {
Session session=SessionFactory.getSession();
Criteria ct=session.createCriteria(User.class);
Iterator<Map.Entry<String,String>> iter=cond.entrySet().iter ...
- 2009-05-05 21:12
- 浏览 1122
- 评论(0)
1、瞬态(Transient)
不在session缓存,不与session实例关联,数据库中没有与之对应的记录。
delete()过的对象(必须是持久化对象)将删除数据库中对应的记录,并从session缓存清除。
进入瞬态:new出来的对象,delete()。
2、持久化态(Persistent)
在session缓存,与session实例关联,数据库中有对应记录,Session在清理缓存时会根据对象的属性变化确定是否更新数据库。
进入持久化态:save(),update(),load(),get(),find()返回的List集合中的所有对象。
3、游离态(detached)
不在sess ...
- 2009-05-04 21:01
- 浏览 844
- 评论(0)
1、ORM的优缺点
优点:提高开发效率,降低开发难度。缺点:系统层次增加,性能有一定损失。
2、HIbernate的5个核心接口:
Configuration--负责初始化时加载配置信息(hibernate.cfg.xml)并据此加载映射文件,最后创建SessionFactory对象。将读入的配置信息设置到SessionFactory对象的缓存中。
SessionFactory--负责创建session对象,SessionFactory实例是重量级对象,线程安全,一般使用单例模式创建。
Session--负责管理所有与持久化相关的操作,如数据存取、事务、对象生命周期。非线程安全,应避免多个线程 ...
- 2009-05-04 20:40
- 浏览 1054
- 评论(0)
The distinct between jdk and jre
The JDK includes a Java compiler (javac), a Java virtual machine (java), and all of the standard Java library components -- in other words, everything you need to write Java programs in a wide variety of problem domains, and more than enough firepower for the assignm ...
- 2009-05-04 13:05
- 浏览 1575
- 评论(0)