hibernate(1)

来源:互联网 发布:网络电视需要盒子么 编辑:程序博客网 时间:2024/06/05 00:41

ID生成策略
关系映射
一对多
缓存
改动不大,经常被访问,数据量不大适合缓存
一级缓存:session级别的缓存每一次操作数据库都把结果存在缓存中,session没关闭,一样的操作直接拿值
二级缓存:sessionFactory级别的缓存每一次操作数据库都把结果存在缓存中,sessionFactory没关闭,一样的操作直接拿值

load默认使用二级缓存,iterater默认使用二级缓存
list默认往二级缓存加数据,但查询的时候不使用

这个是从数据库表实现hibernate配置文件、映射文件、POJO以及dao层的自动生成的,如果你选false则不会自动生成dao,反之,可以。(默认是false)<meta attribute="sync-DAO">false</meta>

get直接从数据库加载,不会延迟
load返回的是代理对象,等到真正用到对象的内容时才发出sql语句
不存在对应记录时表现不一样

insert into User (username, password) values (?, ?)//插入

jdbc返回的是结果集行和列,不是对象,需要转成对象,
hibernate也要封装一下jdbc,
简单的封装叫做工具,复杂的叫做框架也叫方案,解决一个问题集的方案
数据库类型专业点就是方言
全限类名 包名+类名
全限命名 /类名
简单类名 类名

对象与表
属性与列

sql
查询的是表,是表中的字段
hql
hibernate的查询语言与sql相似
查询的是对象,是对象的属性
关键字不区分大小写,但类名与属性名区分大小写

mysql
limit num,num

where order by

api
-Configuration
-configure() 默认加载hibernate.cfg.xml
-configure(String resource) 指定从那里加载
-buildSessionFactory()获得Session工厂
-SessionFactory
-openSession()
-getCurrentSession()
Session
-beginTransaction()
-getTransaction()获取当前session中关联的事务对象
Transaction
-commit()
-rollback()
Query
-list()查询一个结果集合
-uniqueResult()查询一个唯一的结果,如果没有结果,则返回null,如果结果有多个,就抛出异常
Criteria

mysql>help

数据库中实现不了排序的时候才用sort排序属性,设置了sort属性,set的实现类是TreeSet或者LinkedHashSet数据库没有排序这样的方式属于内存排序<set name="addressSet" table="addressSet" 内存排序可选sort="" 数据库排序可选order-by="address ASC||DESC">    <key column="tagId"/>    <element type="string" column="address"/></set><!-- list-index用于存放索引的列 --><list name="addressList" table="addressList">    <key column="tagId"/>    <list-index column="idx"/>    <element type="string" column="address"/></list>     

单向关联
双向关联

0 0
原创粉丝点击