`
ch_space
  • 浏览: 109251 次
  • 性别: Icon_minigender_1
  • 来自: 农村进城务工人员
社区版块
存档分类
最新评论
文章列表
1、set 前面已经介绍了set的使用,这里只是介绍一下其中的element元素: 如果一对多中多方的表字段很少,可以不必单独建立映射文件,使用element更加方便 如:Company--Dept dept表只有公司id:compid,部门名称:name 那么使用上述方法更简洁: <set name="depts" table="dept"> <key column="compid"/> <element column="name" type="strin ...
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 ...
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 ...
引用 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表记录 ...

equal和“==”

    博客分类:
  • Java
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 ...
通过另外设置一个合适的构造函数即可。 比如只加载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() ...
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 ...
我们知道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 ...
最近在学习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 ...
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 ...
1、瞬态(Transient) 不在session缓存,不与session实例关联,数据库中没有与之对应的记录。 delete()过的对象(必须是持久化对象)将删除数据库中对应的记录,并从session缓存清除。 进入瞬态:new出来的对象,delete()。 2、持久化态(Persistent) 在session缓存,与session实例关联,数据库中有对应记录,Session在清理缓存时会根据对象的属性变化确定是否更新数据库。 进入持久化态:save(),update(),load(),get(),find()返回的List集合中的所有对象。 3、游离态(detached) 不在sess ...
1、ORM的优缺点 优点:提高开发效率,降低开发难度。缺点:系统层次增加,性能有一定损失。 2、HIbernate的5个核心接口: Configuration--负责初始化时加载配置信息(hibernate.cfg.xml)并据此加载映射文件,最后创建SessionFactory对象。将读入的配置信息设置到SessionFactory对象的缓存中。 SessionFactory--负责创建session对象,SessionFactory实例是重量级对象,线程安全,一般使用单例模式创建。 Session--负责管理所有与持久化相关的操作,如数据存取、事务、对象生命周期。非线程安全,应避免多个线程 ...
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 ...
Global site tag (gtag.js) - Google Analytics