Hibernate整理学习(一)
来源:互联网 发布:三维图片制作软件 编辑:程序博客网 时间:2024/06/16 17:38
hibernate定义
hibernate是一种框架,一种开源的关系对象映射框架,它对JDBC做了
轻量级的封装,可以让使用者直接通过操纵POJO对象,来完成对数据库的操作。hibernate会自动生成sql语句,并执行。
hibernate配置文件
hibernate框架使用中,是直接对POJO对象*进行操作,来达到增删改查数据库的目的。
pojo对象的配置
pojo实体类:
>
public class Dept {
private Integer id;
private String name;
//set,get,以及无参构造
}
/>
Dept:类名对应数据库的表名dept
id :字段,dept表主键
name:字段
Dept配置文件:
<hibernate-mapping> <class name="jopo.Dept" table="Dept" catalog="test"> <id name="id" type="java.lang.Integer"> <column name="id" not-null="true" /> <generator class="increment"/> </id> <property name="name" type="java.lang.String"> <column name="name" length="20" /> </property></class></hibernate-mapping>
1. < class >标签表示一个实体类,在其中配置实体类的属性
name ="类的权限定名" table="表名" catalog="数据库名" < id >标签设置主键, name="属性名",type="类型"< column > 设置字段:name="字段名" not-null ="true" 非空< generator >设置主键生成策略: 不同的数据库,也有不同 native 根据数据库自适应
2.< property > 属性:
name 属性名,type 类型< column > 设置字段:name="字段名" not-null ="true" 非空 length 长度 property 标签可简写< property name="name" column="name" />
配置文件处理
配置文件管理
Configuration
作用:进行配置信息的管理
目标:用来生成SessionFactory
可以在configure()中指定hibernate的配置文件,如果不指定,则在src/classpath下加载hibernate.cfg.xml文件
—加载默认hibernate的配置文件
sessionFactory = new Configuration().configuration().buildSessionFactory();
—加载指定的hibernate配置文件
sessionFactory = new Configuration().configuration("文件").buildSessionFactory();
SessionFactory
生产session的工厂,生成一个session,sessionFactory从连接池取出一个连接交给session对jopo类的操作,都是依赖于session进行的getSession()
Session
Session是管理数据库的一个任务单元新建一个session可以理解为要开启一个对数据库操作的任务(个人理解,求斧正)通过load/get可以从数据库获得pojo对象 load/get(POJO类.class,主键标识) get,直接从数据库中查到并获取了对象信息 load,本人理解为预加载,已经定位了需要的信息,只等临门一脚(真正使用时),才会把对象信息加载到jopo对象中返回。通过save(pojo),将一个pojo对象加入到session中,没有save操作,不会对数据库进行修改update(pojo),更新指定主键的字段信息,在xml中<property>有一个update属性,默认为true,可以更新,如果设为false,不可更新。flush(),将session中的数据刷新到数据库中,如果没有flush,则根本不会对数据库进行操作。flush也有多种默认(详解自己看)。 比如: |FlushMode.ALWAYS:任务一条SQL语句,都会flush一次 |FlushMode.NEVER :永远不flush 此选项在性能优化时可能用,比如session取数据为只读时用,这样就
不需要与数据库同步了
除了flush外,还有evict,clear。
evict(pojo)是从session中拆除,如果实在flush之前拆除,则在提交事务
即session.getTransaction().commit()时会异常。不同步(具体原因涉及到session的内部结构了,本人也不太清楚,大概是因为entityEntries在flush注册信息与本身保存的不一致的原意,entityEntries是个map集合)。
Transaction
开启事务(增、删、改的时候是先将jopo保存在session中,如果没有flush(),则根本不会对数据库进行操作),和sql中的开启事务,提交事务/回滚一致。
commit以session中的信息来flush更新数据库
roolback方法session中的信息失效,不更新数据库
- Hibernate整理学习(一)
- Hibernate 框架学习整理(一)
- hibernate+xfire学习整理
- Hibernate整理学习(二)
- hibernate学习整理1
- Hibernate 学习 Q & A 整理
- Hibernate学习资料整理-1
- Hibernate学习整理(Hibernate优化及HQL)
- mysql学习整理(一)
- HttpClient学习整理 (一)
- Mysql学习整理(一)
- pandas学习整理(一)
- Hibernate学习手记(一)
- Hibernate学习手记(一)
- Hibernate学习笔记(一)
- Hibernate学习笔记(一)
- Hibernate 学习(一)
- hibernate学习(一)
- kafka zookeeper docker容器互联
- android侧滑
- 544. Output Contest Matches
- Ubuntu 中软件的安装、卸载以及查看的方法总结
- 微信小程序日历
- Hibernate整理学习(一)
- 移植OpenSSL加密软件到ARM
- PHP的array_keys() 函数
- WPF studying~随记
- 悟得一句真言
- HTML与JSP跳转的相对路径的区别
- Android开发艺术探索学习摘要(三)
- java的8种基本数据类型总结
- Ajax技术之与服务器通信-一个完整的实例(实现检测用户名是否唯一功能)