hibernate3.3.2
chongqingnantian
这个作者很懒,什么都没留下…
展开
-
十、一对一关联
1 一对一单向外键关联Annotation: 在被约束表字段的get方法上加@0ne20ne @JoinColumn @OneToOne @JoinColumn(name="wifeid", unique = true) //指定生成的数据库字段名,以及设置唯一性 public Wife getWife() { ...原创 2013-03-10 20:43:44 · 129 阅读 · 0 评论 -
二、hbm2ddl.auto
<property name="hbm2ddl.auto">create</property>每次都会把原来的表删掉,再重新建表。 <property name="hbm2ddl.auto">update</property>表不存在时,就创建表。如果存在,但是实体有更新,就会更新相应的表,表里面的数据不会清出。 <p原创 2013-02-18 17:12:42 · 72 阅读 · 0 评论 -
三、hibernate搭建Log4j日志(sql语句输出)
<property name="format_sql">true</property>格式化所有sql语句的输出。 <property name="show_sql">true</property>输出除ddl以外的语句。 在log4j.properties文件中加入如下:log4j.logger.org.hibern...原创 2013-02-18 21:40:01 · 274 阅读 · 0 评论 -
四、hibernate基础配置以及映射类型
指定表名:@Table(如果表名和实体名一样可以省略该注解) 指定字段名:@Column(如果字段名和实体属性一样可以省略该注解) 如果在属性上面没有添加@Transient注解,表明该属性需要映射,默认加上了@Basic注解 @Temporal:控制日期时间 @Enumerated(EnumType.STRING) 用于指定枚举 boolean型属性映...原创 2013-02-18 23:02:24 · 164 阅读 · 0 评论 -
五、ID生成策略
xml配置中常用的 generator 如下: identity 用于类似mysql数据库中,支持主键自动递增 sequence 用于类似oracle数据库中,支持序列(不指定具体sequence,hibernate则会默认生成一个名叫hibernate-sequence的序列) uuid 生成全球唯一的id native ...原创 2013-02-22 15:34:21 · 86 阅读 · 0 评论 -
六、CoreApi
1、SessionFactory的openSession和getCurrentSession① openSession永远都是打开一个新的Session,而getCurrentSession在事务没提交之前永远都是从上下文中获取同一个Session。但事务提交后,就是获取一个新的Session。(上下文是通过<property name="current_session_contex...原创 2013-02-22 17:07:53 · 78 阅读 · 0 评论 -
七、三种状态
三种状态的区分关键在于有没有IDID在数据库中有没有在内存中有没有(session缓存)三种状态:transient:内存中一个对象,没ID,缓存中也没有persistent:内存中有,缓存中有,数据库有(ID)detached:内存有,缓存没有,数据库有,有ID ...原创 2013-02-23 22:45:54 · 100 阅读 · 0 评论 -
八、Session
方法 (CRUD)savedelete:只要对象有主键,并且数据库里面有,就能删除。loadgetget与load的区别:1、不存在对应记录时表现不一样,get方法返回null,尔load方法先返回一个代理对象,在使用时报错。2、load返回的是代理对象,等到真正用到对象的内容时才发出sql语句3、get直接从数据库加载,不会延迟update1、用来更新detache...原创 2013-02-28 10:53:47 · 63 阅读 · 0 评论 -
九、Session缓存
Session接口是Hibernate向应用程序提供操作数据库的最主要接口,它提供了基本的保存、更新、删除和查询的方法。Session具有一个缓存,位于缓存中的对象处于持久化状态,它和数据库中的相关记录对应,Session能够在某些时间点,按照缓存中持久化对象的属性变化来同步数据库,这一过程称为清理缓存。 Session缓存的实现原理Session缓存是由它的实现类Session...原创 2013-02-28 15:10:08 · 76 阅读 · 0 评论 -
Hibernate中inverse="true"的理解
举例如下 Customer类: Java代码 public class Customer { private int id; private String name; private Set orders = new HashSet(); ••• } 即Customer类具有一个set集合属性...原创 2014-02-12 16:05:10 · 71 阅读 · 0 评论 -
hibernate 映射文件中 fetch 跟lazy
fetch 和 lazy 主要是用来级联查询的 而 cascade 和 inverse 主要是用来级联插入和修改的 fetch参数指定了关联对象抓取的方式是select查询还是join查询, select方式时先查询返回要查询的主体对象(列表),再根据关联外键 id,每一个对象发一个select查询,获取关联的对象,形成n+1次查询; 而join方式,主体对象...原创 2014-02-13 11:36:34 · 87 阅读 · 0 评论 -
createSQLQuery的addEntity和setResultTransformer方法
1.使用SQLQuery对原生SQL查询执行的控制是通过SQLQuery接口进行的,通过执行Session.createSQLQuery()获取这个接口。最简单的情况下,我们可以采用以下形式:List cats = sess.createSQLQuery( " select * from cats " ).addEntity(Cat. class ).list();这个查询指定了:...原创 2014-02-27 11:44:21 · 142 阅读 · 0 评论 -
一、hibernate环境搭建
1、下载hibernate-distribution-3.3.2.GA-dist2、下载hibernate-annotations-3[1].4.0.GA3、注意阅读hibernate compatibility matrix(hibernate网站download),就是注意hibernate core和hibernate annotation版本之间的对应4、下载slf4...原创 2013-02-05 21:16:03 · 65 阅读 · 0 评论 -
二十三、hibernate事务隔离级别-悲观锁-乐观锁
1、事务并发时可能出现的问题:第一类丢失更新(Lost Update)时间取款事务A存款事务BT1开始事务 T2 开始事务T3查询账户余额为1000元 T4 查询账户余额为1000元...原创 2013-03-17 21:07:36 · 63 阅读 · 0 评论 -
二十二、 1+N 问题
问题的来源:在@ManyToOne中,由于默认的fetch=FetchType.EAGER,所以如下的代码List<Topic> topics = session.createQuery("from Topic").list();本来只发一条sql就能查询出所以的Topic对象,结果Topic所关联的Catagory对象也会马上查询出来,而且如果有N个Topic对象,就会...原创 2013-03-16 23:11:25 · 131 阅读 · 0 评论 -
十一、组件映射
1 对象关系:一个对象是另外一个对象的一部分2 数据库表:一张表3 annotation: @ Embeddable @Embbeded 对象模型Husband(id,name,wife)Wife(name,age)Annotation:在Husband的wife属性上建立注解@Embedded 表明该对象是从别的位置嵌入过来的,是不需要单独映射的表.这种方式生成的表...原创 2013-03-10 20:57:37 · 74 阅读 · 0 评论 -
十二、多对一与一对多
1 多对一单向关联实体模型(User多对一Group)User(id,name,group)多Group(id,name)一数据库表设计:在多方加外键错误做法:在一方加冗余annotaion: @Many2One只需要在多的一端User属性group进行注解配置@ManyToOne //多对一关联 User是多的一方 Group是一的一方@JoinColumn(name="groupi...原创 2013-03-11 17:22:21 · 71 阅读 · 0 评论 -
十三、多对多
1 单向关联:关系模型(Teache多对多Student),从Teacher这一端能关联到students.Teacher(id,name,students)多Student(id,name)多Set<Student> students=new HashSet<Student>()在Teacher那一端配置例如:老师和学生的关系,老师需要知道自己教了哪些学生数据库...原创 2013-03-11 22:15:37 · 71 阅读 · 0 评论 -
十四、关联关系中的CRUD_Cascade_Fetch
1 设定cascade以设定在持久化时对于关联对象的操作(CUD,R归Fetch管)cascade并不影响读取,fetch才是控制读取2 cascade仅仅是帮我们省了编程的麻烦而已,不要把它的作用看的太大,建议使用hibernate的cascade注解a) Cascade的属性是数组格式,指明做什么操作的时候关联对象是绑在一起的 cascade={Cas...原创 2013-03-12 15:26:52 · 109 阅读 · 0 评论 -
十五、集合映射
1 Set2 List (与Set差不多 多个@OrderBy)a) @OrderBy("name ASC")3 Mapa) @MapKey(name="id")原创 2013-03-13 11:24:06 · 58 阅读 · 0 评论 -
十六、继承映射
1 三种方式a) 一张总表SINGLE_TABLE@Entity@Inheritance(strategy=InheritanceType.SINGLE_TABLE)@DiscriminatorColumn(name="discriminator", discriminatorType=DiscriminatorType.STRING)@DiscriminatorValue("pers...原创 2013-03-13 16:18:50 · 68 阅读 · 0 评论 -
十七、树状结构的设计
在同—个类中使用One2Many和Many2One@Entitypublic class Org { private int id; private String name; private Set<Org> children = new HashSet<Org>(); private Org parent; @Id @Generated...原创 2013-03-13 17:09:40 · 77 阅读 · 0 评论 -
十八、Hibernate 查询(Query Language)
NativeSQL >HQL.> EJBQL(JPQL 1.0) > QBC(Query By Criteria) > QBE(Query By Example) @Test public void testHQL_01() { Session session = sf.openSession(); session.beginTr...原创 2013-03-16 22:15:33 · 76 阅读 · 0 评论 -
二十一、Ehcache 中ehcache.xml 配置详解和示例
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../config/ehcache.xsd"> <diskStore path="java.io.tmpdir"/> <!-- name:缓存名称...原创 2013-03-16 22:25:48 · 74 阅读 · 0 评论 -
二十、一级缓存和二级缓存和査询缓存
注意session.clear()的运用,及时清理缓存,尤其在不断分页循环的时候 1、什么是一级缓存,session级别的缓存2、什么是二级缓存,SessionFactory级别的缓存,可以跨越session存在(1)经常被访间(2)改动不大不会经常改动(3)数重有限3、打开二级缓存(1)hibernate.cfg.xml 设定:<property name= "cache...原创 2013-03-16 22:51:33 · 69 阅读 · 0 评论 -
十九、Query的list和iterate方法的不同之处
1、list取所有字段2、iterate先取 ID,等用到的时候再根据ID来取对象3、同一个session中,第二次使用list,仍会到数据库査询4、同一个session中,第二次使用iterate,首先找session 级缓存,然后再查找sessionFactory缓存...原创 2013-03-16 23:00:02 · 82 阅读 · 0 评论 -
Hibernate一对一映射配置详解
一对一关联分为主键关联与外键关联。主键关联:不必加额外的字段,只是主表和辅表的主键相关联,即这两个主键的值是一样的。外键关联:辅表有一个额外的字段和主表相关联,或者两个表都有额外的字段与对应表的相关联。一、xml文件配置 官方文档解释<one-to-one name="propertyName" ...原创 2014-12-05 09:31:48 · 138 阅读 · 0 评论