Day02
API
1, API简介。
(1) Configuration 配置
方法:1 configure()读取默认的配置文件
2 configure(String resource)读取指定的配置文件
3buildSessionFactory()创建sessionFactory
4addResource(Stringresource)导入一个指定位置的映射文件
5 addClass(User.Class)去User所在包中找名是User后缀是.hbm.xml的映射文件
(2)SessionFactory session工厂
方法:1 openSession()
2 getCurrentSession()
3 close()
(3)Session
方法:1 操作对象的方法:
save(Object)
Update(Object)
delete(Object)
2查询的方法:
createQuery(String)
createCriteria(Class)
3管理事务的方法
beginTransaction()开始事务,返回事务对象
getTransaction()获取和当前所关联的事务
(4)Transaction 事务:
Commit()提交
Rollback()回滚事务
(5)Query 查询
List()查询一个结果集合
UniqueResult()返回唯一的结果,没有结果返回null有多个就抛异常
2,Session中的方法。
3,查询:HQL与Criteria
配置:
1, 主配置文件
按照作用可以分为三类
1 数据库信息方言,jdbcURL,驱动,用户名,密码
2 导入映射信息
<mapping resource=”地址”>
3 其他配置信息
<property …>1 show_sql 显示生成的SQL语句2 format_sql格式化
3 Hbm2ddl自动生成表。一般使用update
<!--
create:先删除,再创建
update:如果表不存在就创建,不一样就更新,一样就什么都不做。
create-drop:初始化时创建表,SessionFactory执行close()时删除表。
validate:验证表结构是否一致,如果不一致,就抛异常。
-->
<property name="hbm2ddl.auto">update</property>
2,映射文件
映射基础
文件名后缀是hbm.xml.文件名与实体bean名称一样,一个对象对应一个映射文件,作用是说明表与对象的关系的。
Class标签:
作用说明那个类对应那个表 name属性=类名 table属性= 表名
普通属性
Name属性:对象中的属性名,必须有
Type属性:如果不写,自动检测
Column属性:对应表中的列名
Length属性:不一定用的到 varchar()类型有
Not-null:属性:不可以为空
主键
主键的生成方法:
<class name="User" table="t_user">
id元素用于映射主键。子元素generator是用于指定主键生成策略的。
-->
<idname="id">
<!--identity:使用数据库的自动增长策略,不是所有数据库都支持,比如oracle就不支持
<generator class="identity"/>
sequence:在 DB2,PostgreSQL,Oracle,SAP DB,McKoi 中使用序列(sequence)
在使用Oracle数据库时可以使用这一个
<generator class="sequence"/>
<!-- hilo,使用高低位算法生成主键值。
只需要一张额外表,所有的数据都支持。
<generator class="hilo">
<paramname="table">hi_value</param>
<paramname="column">next_value</param>
<paramname="max_lo">100</param>
</generator>
<!-- 根据底层数据库的能力选择 identity、sequence 或者hilo中的一个。
<generatorclass="native"></generator>
-->
<!--increment:由Hibernate维护的自动增长。
先查询当前最大的id值,再加1使用
不推荐使用,因为在多线程下会问题。
<generatorclass="increment"></generator>
-->
<!-- assigned:手工指定主键值
<generatorclass="assigned"></generator>
-->
<!--uuid:由Hibernate自动生成UUID并指定为主键值。 -->
<generator class="uuid"></generator>
</id>
<propertyname="name"/>
</class>
集合属性
用于表中某个属性是集合的情况
如果对集合没有顺序要求可以用set
<set name = “book” table=”books”>
<key column=”userId”/>
<element type = “string” column=”book”/></set>
User是外键
如果对集合有顺序要求的话可以使用List
AddressList属性对应list集合
<list name=”addressList” table =user_addressList>
<key column=”userId”/><list-indexcolumn=”idx”/><element type=”String”
Column=”address”/></list>
也可以使用数组的形式:
只有将list改成array就可以了,可list几乎一样
使用map形式:用于两个属相相互关联的情况
<map name="addressMap"table="user_addressMap">
<key column="userId"></key>外键
<map-key type="string"column="key_"></map-key>
<element type="string"column="address"></element>
</map>
《table属性:集合表的名称 key子元素:集合外键的列名 element元素:存放集合元素的列的信息 list-index:存放索引的列》