《hibernate运用》由会员分享,可在线阅读,更多相关《hibernate运用(10页珍藏版)》请在金锄头文库上搜索。
1、hibernate运用的总结Hibernate的准备:Hibernate官网主页:下载Hibernate需要的包推荐下载hibernate-distribution-3.3.2.GA-dist.zipHibernate简介:一个开发源代码的对象关系映射框架对JDBC进行了非常轻量级的对象封装将JavaBean对象和数据库的表建立对应关系Hibernate的优势:Hibernate是一个优秀的java持久化层的解决方案。持久化的含义:JDBC 就是一种持久化机制将程序数据直接保存成文本文件也是持久化机制的一种实现在分层结构中,DAO 层(数据访问层)也被称为持久化层Hibernate 简化了繁琐
2、的编码Hibernate 将数据库的连接信息都存放在配置文件中Hibernate包目录结构:部署jar包:hibernate3.jarrequired 目录下的jar 包Oracle 数据库驱动jar包使用Hibernate操作数据库需要七个步骤:、 读取并解析配置文件Configuration conf = newConfiguration().configure();、 读取并解析映射信息,创建SessionFactorySessionFactory sf = conf.buildSessionFactory();、 打开SessionSession session = sf.openSe
3、ssion();、 开始一个事务(增删改操作必须,查询操作可选)Transaction tx = session.beginTransaction();、 数据库操作session.save(user);/或其它操作、 提交事务(回滚事务)mit();(tx.rollback();)、 关闭sessionsession.close();注意:如果Hibernate 配置文件中,current_session_context_class 参数设置为thread 并采用SessionFactory 的getCurrentSession()方法获的Session 实例则不需要此步Hibernate的
4、配置:用于配置数据库连接运行时所需的各种属性默认文件名为“hibernate.cfg.xml”例如: org.hibernate.dialect.Oracle9Dialect jdbc:oracle:thin:10.0.0.188:1521:ORCLjbitbdqntrue oracle.jdbc.driver.OracleDriver实体类的配置文件:hibernate-mapping SEQ_ID property 元素常用属性name 表示实体类属性的名字type 表示实体类属性的类型column 表示数据库字段的名字column 元素常用的属性name 表示字段的名字length 表示
5、字段的长度not-null 舍得是否可以为nullHibernate中实体对象的三种状态瞬时状态(Transient)刚用new语句创建,还没有被持久化,且不处于Session的缓存中持久状态(Persistent)已经被持久化,且加入到Session的缓存中游离状态(Detached) 已经被持久化,但不再处于Session的缓存中对数据的操作:对数据执行增,删,改 的时候必须要在事务中执行,在执行事务之前,要开启事务,在事务执行之后要提交或者回滚事务。否则此操作没有任何的效果。同时:在对数据进行修改的时候,要先查出数据,然后对要修改的字段进行重新赋值。最后要提交事务。实体间的关系:关联关系
6、:例如,用户可以发布多条信息,这就表明用户和信息之间存在关联关系泛华关系: 例如,老虎是动物,就表示老虎和动物之间存在这泛化关系实体间的关联关系:关联是指不同表之间的数据彼此联系的方法。数据库表与表之间的关联关系,以外间的形式体现注意:数据关联关系是ORM的一个重要特征,但往往也是导致系统性能低下的原因。不良的关联设计会对系统的性能表现产生致命的影响,在十几开发中我们要需要特别注意着一点。单向一对多关联 public class District implements java.io.Serializable private int id;private String name;private
7、 Set street= new HashSet();public Set getStreet() return street;public void setStreet(Set street) this.street = street;/* default constructor */public District() /* full constructor */public District(int id, String name) this.id = id;this.name = name;/ Property accessorspublic int getId() return thi
8、s.id;public void setId(int id) this.id = id;public String getName() return this.name;public void setName(String name) this.name = name;例如:街道对区 配置文件:注意:在多的一方(区中)定义一个街道的集合,对应数据库中的字段就是一的一方的主键单向多对一:例如:街道对区 注意:在多对一的时候,在多的一方的实体类中,创建一的一方的一个属性,类型为多的一方的类型 public class Street implements java.io.Serializable private int id;private String name;private District district;public District getDistrict()