Hibernate/MyBatis
iteye_17225
这个作者很懒,什么都没留下…
展开
-
Hibernate part 14:查询及数据库并发事务
对象之间相互关联,toString()不要相互引用,java.lang.StackOverflowError 。 HQL查询语法和SQL类似,可以实现SQL语句的大部分功能,支持链式编程风格,复杂查询直接使用SQL,Hiberante查询效率不高。@Test public void test01() { Session session = Hiberna...原创 2015-08-31 12:49:17 · 87 阅读 · 0 评论 -
Hibernate part 5:主键生成策略
<id name="id" column="id" type="int"> <generator class="increment"></generator></id>Hibernate通过SQL max(id)+1获得最大值,不依赖于数据库,JavaBean中ID类型必须为short、in原创 2015-02-20 16:09:06 · 78 阅读 · 0 评论 -
Hiberante part 6:持久化对象状态
瞬时态 transient:尚未与Hibernate Session关联对象,被认为处于瞬时状态,失去引用将被JVM回收,无持久化标识OID,未与Session关联持久态 persistent: 数据库中有数据与之对应并与当前session有关联,并且相关联的session没有关闭数据库并且事务未提交,存在持久化标识OID,与Session关联脱管态 detached: ...原创 2015-02-21 13:34:30 · 91 阅读 · 0 评论 -
Hibernate part 7:Session 一级缓存
在 Session 接口的实现中包含一系列的 Java 集合, 这些 Java 集合构成了 Session 缓存. 只要 Session 实例没有结束生命周期, 存放在它缓存中的对象也不会结束生命周期 一级缓存是存在的,通过get()查询Customer对象,查询两次ID为1的Customer对象,控制台只发送了一条SQL,并且打印c1和c2,获得的地址是一样的,可以证明Sess...原创 2015-02-21 22:37:35 · 74 阅读 · 0 评论 -
Hibernate part 8:一对多关联关系映射
数据库建表原则,在多的一方添加一个外键列,引用一的一方的主键,例如客户和订单,在订单表中增加客户编号作为外键 一对多,类对象之间的关系,在多的一方添加一个集合class A { B b; // 一个A对应一个B}class B { A[] 、List<A>、Set<A> // 一个B 对应很多A } 以客户与订单关系为...原创 2015-02-22 14:02:25 · 76 阅读 · 0 评论 -
Hiberante part 9:一对一关系映射
一个男人对应一个女人,一个女人只能属于一个男人 方式一:外键映射Male类public class Male implements Serializable { private Integer id; private String name; private Integer age; private Female female;} Male.hbm...原创 2015-02-22 22:31:33 · 84 阅读 · 0 评论 -
Hiberante part 10:多对多关系映射
多对多的实体关系模型也是很常见的,比如学生和课程的关系。一个学生可以选修多门课程,一个课程可以被多名学生选修。在关系型数据库中对于多对多关联关系的处理一般采用中间表的形式,将多对多的关系转化成两个一对多的关系。 Student类public class Student implements Serializable { private Integer id; p...原创 2015-02-23 13:47:14 · 69 阅读 · 0 评论 -
Hibernate part 11:一对多/多对多检索策略
类级别的检索策略:Customer c=(Customer)session.load(Customer.class, 1); session的方法直接检索Customer对象,对Customer对象到底采用立即检索,还是延迟检索方式,通过class元素的lazy属性设定 get():默认立即检索load():默认延迟检索public void l...原创 2015-02-23 21:51:39 · 107 阅读 · 0 评论 -
Hibernate part 12:多对一/一对一检索策略
1) 当fetch 取值 join ,采用迫切左外连接 lazy 被忽略 针对 get/load 有效 如果Query , fetch="join" 被忽略, lazy 将重新生效 2) 当fetch取值 select ,产生多条SQL 查询 lazy="false" 采用立即查询 lazy="proxy" 将由Customer.hbm.xml &l...原创 2015-03-08 20:10:08 · 79 阅读 · 0 评论 -
Hibernate part 4:Session中get()/load()详解
get(): @Test public void testGet() { Session session = HibernateUtils.openSession(); Transaction transaction = session.beginTransaction(); transaction.begin(); Customer c = (C...原创 2015-02-18 10:07:01 · 88 阅读 · 0 评论 -
Hibernate Part 3:核心API和常量配置
Hibernate体系结构图: Hiberante框架支持两种配置文件:src/hibernate.properties:数据库连接、常用数据配置src/hibernate.cfg.xml:数据库连接、常用数据配置、二级缓存策略、 hbm的映射、 事件(监听器 )src/hibernate.cfg.xml可配置的参数更多,功能更加强大 Hibernate...原创 2015-02-17 21:46:10 · 92 阅读 · 0 评论 -
Hibernate part 15:C3P0连接池配置
Hibernate有默认的连接池,是DriverManagerConnectionProvider12:51:52,892 INFO DriverManagerConnectionProvider:64 - Using Hibernate built-in connection pool (not for production use!)12:51:52,894 INFO D...原创 2015-08-31 13:06:54 · 86 阅读 · 0 评论 -
Hibernate part 16:管理Session与ThreadLocal绑定
hibernate.cfg.xml中的配置<property name="hibernate.current_session_context_class">thread</property> 层序中获取通过SessionFactory获取session时使用getCurrentSession() @Test public void test0...原创 2015-08-31 14:02:09 · 98 阅读 · 0 评论 -
Hibernate part 17:二级缓存
Session级别的缓存,事务范围的SessionFactory级别的缓存,进程范围的 SessionFactory缓存:内置:Hibernate自带的,只能缓存一些配置的SQL语句,如命名查询配置在*.hbm.xml中的SQL语句外置:需要配置第三方插件使用,自己内有实现 二级缓存的结构 二级缓存提供商:EHCache: 可作为进程范围内的缓存,...原创 2015-08-31 16:59:04 · 72 阅读 · 0 评论 -
MyBatis 单表CRUD
项目当中用到了MyBatis,所以为了快速上手,先来个单表CRUD 还是不习惯用maven构建项目,不下载jar包就没有doc也没有example,mybatis下载地址,https://github.com/mybatis/mybatis-3 建立web项目,导入包,创建数据表,创建pojo对象 mybatis核心位置文件时sqlMap...原创 2015-11-10 10:38:14 · 97 阅读 · 0 评论 -
Mybatis sqlMapConfig.xml中的常用配置
sqlMapConfig.xml是mybatis的核心配置文件,可配置标签有properties(属性)settings(全局配置参数)typeAliases(类型别名)typeHandlers(类型处理器)objectFactory(对象工厂)plugins(插件)environments(环境集合属性对象)envir...原创 2015-11-15 13:06:47 · 194 阅读 · 0 评论 -
MyBatis Mapper代理实现DAO
mapper接口遵循的开发约定1、mapper.xml中namespace属性等于mapper接口的地址2、mapper接口中的方法名和mapper.xml中statement的id一致3、mapper接口中的方法参数类型和mapper.xml中的statement的parameterType类型一致4、mapper接口中的方法返回类型和mapper.xml中的state...原创 2015-11-15 13:15:49 · 94 阅读 · 0 评论 -
Hibernate Part 1:环境搭建
下载Hibernate3.6.10开发包,下载地址:http://sourceforge.net/projects/hibernate/files/hibernate3/解压缩Hibernate开发包,获得如下目录结构: 使用Hibernate所需要的jar包:hibernate-distribution-3.6.10.Final/hibernate3.jar --...原创 2015-02-15 22:28:54 · 66 阅读 · 0 评论 -
Hibernate Part 2:单表CRUD
使用Hibernate实现单表CRUD,数据库使用MySQL建立customer表create database test;create table customer ( id int primary key auto_increment, name varchar(20), age int, city varchar(20)); 创建JavaBean对象...原创 2015-02-16 22:50:57 · 73 阅读 · 0 评论 -
Hibernate part 13:批量检索策略
从Customer到Order,配置在<set>标签中,batch-size表示一次查询几个客户的订单,而不查询的订单数量,配置为2,表示一次查询两个客户的订单数量<hibernate-mapping> <class name="rock.lee.bean.Customer" table="customer" catalog="test"...原创 2015-03-08 20:10:21 · 79 阅读 · 0 评论