hibernate学习笔记
来源:互联网 发布:陕汽重卡软件 编辑:程序博客网 时间:2024/05/01 10:02
对象 表记录
从对象到表记录
JDBC
表记录到对象 数据库
API 配置
一、Hibernate的API:
1.Confuguration
Configure(String)加载指定的主配置文件
Configure()(读取)加载默认的主配置文件(hibernate.cfg.xml)
如何不在主配置文件中添加映射文件,也可以使用API手动添加,使用方法
addResource(String)
addClass(类名.class)//即映射文件的同名类
buildSessionFactory()生成session工厂
(方法链)
2.sessionFactory session工厂
openSession() 打开一个新的session
getCurrentSession()
Close()
3.Session
beginTransaction()
getTransaction()//获取当前关联的事务
close()
Save(Object)
Delete(Object)//删除的是实体对象
Update(Object)
Get(class,id)//返回Object
Query createQuery(String HQL)//返回Query
4.Transaction
Commit()
rollback()
5.Query
list()返回List
uniqueResult()返回object
setFirstResult(int)
setMaxResults(int)
二、主配置文件:
Hibernate.cfg.xml
1.数据库信息
2.声明映射文件
3.其他信息
<!--
数据库中没有表时可以使用如下属性建表
create:先删表,后建表
create-drop:启动时建表(创建sessionFactory开始),退出前删表
update:如果表结构不一致,就更新或创建
validate:启动时验证表结构,如果不一致就报异常
-->
<property name="hibernate.hbm2ddl.auto">update</property>
映射文件:
类名.hbm.xml
类-->表
属性-->列
……
高级特性:
数据库连接池
二级缓存
懒加载
一、主键的映射
<id name="id" type="java.lang.Integer">
<column name="id" />
<generator class="native" /><!-- 组件生成策略 -->
</id>
策略:native *:自动选择,根据底层数据库的能力选择identity,sequence或Hilo其中的一个
Identify:使用数据库的主键自动增长(Oracle不能用),在保存时会忽略手工正定的值,而由数据库生成的,要求此属性是数字类型
Assigned:手工指定主键的值,比如指定uuid否则会报错。
Increment
Uuid *:由hibernate生成uuid并指定为主键值,要求此属性是String类型
Foreign
Hilo:主键的的类型是数字
Sequence
指定主键是怎么生成的
复合主键: <composite-id>
<key-property name=""></key-property>
</composite-id>
一、推荐使用代理主键
业务主键:与业务相关
代理主键:与业务无关(推荐使)
二、推荐数字使用包装类型(Integer)因为有null值,不适用原始类型int
第二天
HashSet是无序的
TreeSet按自然顺序排序
LinkedHashSet按插入顺序排序
映射文件中:
<!--set集合映射
Table:集合表的名字
<key>中的column:集合外键
<element>集合元素列的信息
Sort属性:如果指定为为natural,就会像TreeSet那样进行排序(效率低)
Order-by属性:指定查询集合元素用的SQL中的order by部分,这里写的是SQl语句(建议使用)
-->
<set name=”addressSet” table=”user_addressSet” sort=”natural”(order-by=“address DESC ”)>
<key column=”userId”/>
<element column=”address” type=”string”></element>
</set>
<!--list集合映射
Table:集合表的名字
<key>中的column:集合外键,代表属于哪个对象
<list-index>,存放元素索引的列,list必有,无须进行排序,怎么插入的就是什么顺序
<element>集合元素列的信息
-->
<!-- addressList属性,List集合 -->
<list name="addressList" table="user_addressList">
<key column="userId"></key>
<list-index column="idx"></list-index>
<element column="address" type="string"></element>
</list>
<!--Map集合映射
Table:集合表的名字
<key>中的column:集合外键
<map-key>,map的key
<element>集合元素列的信息,map中的value
-->
<hibernate-mapping package="cn.itcast.h_hbm_oneTomany">
<class name="Department" table="deparment">
<!-- 映射联合主键 -->
<id name="id">
<generator class="native"></generator>
</id>
<property name="name"></property>
<!-- employee属性,Set集合,表达的是Department与Employee的一对多的关系
inverse属性:表示是否放弃维护关联关系true表示放弃,false不放弃,让对方维护,在一的一方,只有五外键方才能有inverse属性设置。
-->
<set name="employees" inverse="false">
<key column="departmentId"></key>
<one-to-many class="Employee"/>
</set>
</class>
</hibernate-mapping>
- 【Hibernate学习笔记】hibernate入门
- Hibernate学习笔记:初识Hibernate
- Hibernate Synchronizer 学习笔记
- hibernate学习笔记1
- Hibernate 学习笔记
- Hibernate学习笔记
- Hibernate 学习笔记
- Hibernate 实例学习笔记
- Hibernate学习笔记(1)
- hibernate学习笔记
- Hibernate学习笔记(一)
- Hibernate学习笔记
- Hibernate学习笔记!- -
- Hibernate学习笔记(一)
- Hibernate学习笔记
- Hibernate 学习笔记
- Hibernate Synchronizer 学习笔记
- Hibernate 学习笔记
- java上传文件注意事项
- 空气开关原理
- Framework中的适配器模式
- Android 蓝牙( Bluetooth)耳机连接分析及实现
- Hadoop 中利用 mapreduce 读写 mysql 数据
- hibernate学习笔记
- Hibernate乐观锁与悲观锁的使用(并发)
- ASP FSO相关的一些例子
- Java中的接口
- Nginx学习(6)—http配置模型
- openwrt SDK, 利用SDK生成自己的ipk安装包
- C/C++视频
- oracle 联机日志文件损坏的几种场景和恢复方法
- C++中extern “C”含义深层探索