当前位置:首页 > Hibernate学习笔记
Hibernate学习笔记
11月5日
1. 持久化[persistence] 指 将应用数据存储于关系数据库之中。
2. 将数据关系模型转换为业务模型 对象/关系[object/relational]。 3. 对象关系映射ORM 【object/relational mapping】。
关联 对象 和 关系模型。
4. JDBC Java Database Connectivity。 5. SQL Structured Query Language。 6. ORM应用场景选择模型要求:
1) 高度标准化 2) 拥有主键
3) 拥有指向主键的外键关系,而非指向普通表列。 7. one-to-one or one-to-many associations一对一或者一对多关联。 8. Hibernate Query Language (HQL)。 9. 对象模型和关系模型不匹配:
1) Identity 同一性 2) Inheritance 继承性 3) Association 关联性
10. Ant环境设置设置ANT_HOME目录,然后在系统PATH中添加
%ANT_HOME%\\bin;%PATH% 。
11. 下载地址:
1) www.hibernate.org Hibernate 2) Ant.apache.org Ant
3) Dev.mysql.com/downloads MySQL Connector/J 12. Linux 环境变量vim /etc/profile 添加最后一行
export PATH=\13. Ant build.xml 示例:
11月6日
1. ant clean #清除编译 可通过-f 指定ant配置文件。 2. java中package和import均需要以 分号 结尾。
3. Hibernate主要组件:最底层为配置文件,Configuration用来创建
SessionFactory,SessionFactory再创建Session实例。Session实例为Hibernate持久化服务为用户体统的接口。
4. 如果配置文件hibernate.cfg.xml,hibernate.properties都存在,前者中
的配置覆盖后者中的配置。两者都存在的目的避免数据库连接信息暴露在项目目录树中。
5. Hibernate dialect 属性用于描述Hibernate匹配的数据库类型。
6. Mapping 文件的类型,除了指定的integer,string,timestamp,还可以自
己实现接口org.hibernate.UserType和 org.hibernater.CompositeUserType。
7. Hibernate中one-to-one指另个对象共享一个主键,不常用。Many-to-one
用于维护两个持久类的外键关联。
8. Proxies用于直到需要一个对象才去检索它。可在class中添加proxy值或
者置lazy为true即将持久类作为代理【Proxies】。即当检索某个类时不检索它的关联类。
9. Hibernate mapping文件推荐和描述类的class文件存于同一目录中。 10. Cascades级联 当更改一个记录的主键值,会对应更新相应的外键值。
Hibernate支持级联类型:
a) all 所有操作:保存更新删除 b) save 插入和更新操作传递 c) delete 删除操作传递
d) delete-orphan 所有操作传递,删除后不再关联
11. 在many-to-one关联中可用fetch指定关联查询时的方法join或者select。
一个对象只可以用一个join,其他集合则只可用select。 12. 三种创建初始化Configuration对象:
a) Configuration cfg = new Configuration();
SessionFactory factory = cfg.configure().buildSessionFactory(); b) cfg.addFile(“com/king/Event.hbm.xml”); c) cfg.addClass(com.king.Event.calss); 13. 映射文件可以打包添加到项目:
a) b) Configuration.addJar(new java.io.File(\14. 利用SessionFactory创建Session实例 Session session = factory.openSession(); 15. save()关联一个ID值到持久类的实例对象,update()更新一个已关联的实 例对象到数据库。Session不立即写入数据库,而是在flush()之后在同步写入到数据库。 16. 数据库列类型为boolean,则对应类属性类型可设置为java.lang.Boolean 该类型可以为null,true,false。 17. 对象持久:session.saveOrUpdate();session.flush();session.close(); 18. 对象检索:Event event = (Event) session.load(Event.class, eventId); session.close(); 19. HQL 可以使通过对象属性来检索对象而非表名或者表列名。 Query query = session.createQuery(“from Event where name =?”, ”Opening Presentation”); query.setParamter(0, ”Opening Presentation”, Hibernate.STRING); List events = query.list(); 20. NonUniqueObjectExceptionSession cache引起的异常: 将某个ID值关联给某对象实例后,创建相同对象的实例并赋予相同ID时,执行保存第二个实例对象时会报此异常。 21. 任何时间对象传递到会话【Session】时都是首先传递到会话缓存。 Session.contaions(firstEvent); 检测对象是否在会话缓存 Session.evict(firstEvent); 将对象从会话缓存中驱逐 Session.clear(); 从会话缓存中清除所有对象 22. Hibernate支持的连接池:C3P0,Apache’s DBCP libray, Proxool. a) C3P0 可在hibernate.cfg.xml配置连接池属性: 连接池接口org.hibernate.connection.ConnectionProvider 23. Java Transaction API (JTA) 24. org.hibernate.Transaction Hibernate事务处理类 事务处理范围内不需要调用session.flush()事务处理类自动调用。 配置JTA事务处理 。 25. Session应该一次只可以被一个应用线程调用,在多线程网络应用这是一个 概念。 26. Hibernate缓存机制 可针对持久类以及集合进行缓存配置 27. EHCache (Easy Hibernate Cache) 11月7日 1. Inheritance继承hierarchy层级的。 2. Hibernate继承持久策略: 3. Discriminator 用来识别不同的子类,在第一种层级继承策略中。 4. 第一种继承策略:层级一张表存储着继承层级里面的所有对象。子类不可以用非空属性。 5. NULL不能无值 字段为空时插入NULL NOTNULL可以无值 字段为空时不插入NULL,任其空 6. 第二种继承策略是将子类存储在单独的表中,而非第一种那样存在一张表中。7. entity-relationship (ER) 8. SchemaExport检查映射文件、持久化类、hibernate.cfg.xml、生成表。 9. 可以定义ant schema-export用以创建数据库。 10. 当Hibernate配置文件定义了主键生成属性为native,则数据库的主键类型最 好设计为自增型。 11. Ant schema-export 执行时会报空指针异常: quiet=\ 在 12. Ant配置文件可以通过project_name.target_name来指向一个已引入的target, 可通过此方法将schema-export复用到hibernate-build.xml文件中。 13. Log4j使用 a) import org.apache.log4j.*; b) private static Logger log = Logger.getLogger(CLASSNAME.class); c) log.warn();log.info();log.error(); 14. 使用cascade来保存持久类的关联类,在**.hbm.xml中many-to-one配置 cascade属性值。如cascade=”save-update”。 15. Component组件将对象一部分属性抽出来封装成一个组件定义为一个类对象。 Hibernate映射文件可以配置component选项。细化对象或者封装部分属性来复用可以使用组件,或者某些属性集合是多个的。比如Location的address属性,可能含有信箱地址mailAddress、账单地址billAddress。另外的好处就是可以使针对属性集合的方法更加靠近对应的属性集合,当属性集合抽象成为类对象后,可定义相应的处理方法。将一张表转换为多个对象,表的部分字段被抽象成为一个属性集合成为一个对象。 11月8日 1. Java Foundation Classes(JFC) unordered无序的 2. Hibernate支持的集合类型: a) java.util.List b) java.util.Map c) java.util.Set 3. java.util.List持久化元素不可相同,java.util.Map key值不可相同。 4. Hibernate集合Set映射中key值为关联类持久化存储表中外键字段。 5. Hibernate持久化集合和Java集合对比: 6. Hibernate 集合实现结构: 7. on-to-many:一个持久化对象实例关联多个关联类实例。比如一个会议会有多 有演讲者和出席者;many-to-one:持久化类多个实例的某个字段关联同一个关联实例,比如多个不同时间的会议在同一个地方举行;mant-to-many:比如出席者可以出席多个会议。最后一个关系模型需要额外的持久化数据库存储表来进行相关逻辑关系的存储。 8. many-to-one和one-to-many代码示例:
共分享92篇相关文档