Hibernate学习笔记:
2015-07-20 21:01
204 查看
Hibernate学习笔记:
hibernate是一个持久层的框架,简化对数据库的使用,将数据库中的表映射为对象(ORM对象关系映射),在对对象进行操作的同时自动同步到数据库中。
一、使用基本流程
1、编写hibernate配置文件,其中包含了数据库连接的设定(指定驱动、连接、登录名、密码等)还有hibernate映射文件。
2、编写PO类(具有一定格式的普通java文件),该类与数据库中的表格对应,需要在映射文件中给出字段和属性的对应关系。
3、编写hibernate映射文件,一般一个po类对应一个映射文件,映射文件中除了指明字段和属性的对应关系外还可以设置表(po)与表(po)的关联关系(一对一,一对多,多对多)
4、编写加载hibernate配置文件的类,该类中使用了:
(1)Configuration,利用它的configure方法来加载配置文件,然后用buildSessionFactory方法创建SessionFactory对象。
Configuration configuration = new Configuration().configure("hibernate.cfg.xml");
SessionFactory sessionFactory = configuration.buildSessionFactory();
(2)SessionFactory,利用得到的SessionFactory对象的openSession方法来产生Session实例的工厂。
(3)Session,负责执行持久化对象(PO)的操作,方法有save,load,update,delete,saveOrUpdate;
5、编写DAO类,该类主要通过使用PO来对数据库进行各种操作,一般需要通过“加载配置文件的类”来获取session对象,再通过session进行操作。查询数据库时使用Query对象(Session.createQuery方法获取),它可以使用HQL(面向对象的数据库查询语言)对PO进行查询操作,然后再使用Transaction对象(Session.beginTransaction方法)进行事务的提交或回滚。
二、对关联关系的理解:
1、一对一:分为主键关联和外键关联,两者在配置映射文件时有所不同,再编写PO类时,两个关联的类都需要在属性中添加所关联的类,并提供相应的setter和getter方法,建立关联时直接set(关联的对象),在取得关联对象时直接get()
2、一对多:分为单向关联和双向关联,单向关联和双向关联的区别在于单向关联只需在单的一方进行映射文件的修改,而双向关联则都需要,在PO类中,单向关联只需要在单的一方添加Set类型的属性(存放多的一方)并给出相应方法,而双向关联除此之外还要在多的一方添加类型为单的一方(即:将外键设置为对象)的属性并给出方法。
》》》单向关联只能从单的一方获取到多的一方的信息(Set类型),双向关联双方都可获取对方信息
3、多对多:在多对多关联关系中,需要使用一个中间表,该中间表的字段一般是两个关联的表的主键,该中间表将这两个字段作为组合主键并分别是两个关联表主键的外键。在编写PO类时,并不需要理会中间表,而是在两个关联表中分别一个Set类型的属性(用来存放对方的po对象),并分别添加setter和getter方法。
hibernate是一个持久层的框架,简化对数据库的使用,将数据库中的表映射为对象(ORM对象关系映射),在对对象进行操作的同时自动同步到数据库中。
一、使用基本流程
1、编写hibernate配置文件,其中包含了数据库连接的设定(指定驱动、连接、登录名、密码等)还有hibernate映射文件。
2、编写PO类(具有一定格式的普通java文件),该类与数据库中的表格对应,需要在映射文件中给出字段和属性的对应关系。
3、编写hibernate映射文件,一般一个po类对应一个映射文件,映射文件中除了指明字段和属性的对应关系外还可以设置表(po)与表(po)的关联关系(一对一,一对多,多对多)
4、编写加载hibernate配置文件的类,该类中使用了:
(1)Configuration,利用它的configure方法来加载配置文件,然后用buildSessionFactory方法创建SessionFactory对象。
Configuration configuration = new Configuration().configure("hibernate.cfg.xml");
SessionFactory sessionFactory = configuration.buildSessionFactory();
(2)SessionFactory,利用得到的SessionFactory对象的openSession方法来产生Session实例的工厂。
(3)Session,负责执行持久化对象(PO)的操作,方法有save,load,update,delete,saveOrUpdate;
5、编写DAO类,该类主要通过使用PO来对数据库进行各种操作,一般需要通过“加载配置文件的类”来获取session对象,再通过session进行操作。查询数据库时使用Query对象(Session.createQuery方法获取),它可以使用HQL(面向对象的数据库查询语言)对PO进行查询操作,然后再使用Transaction对象(Session.beginTransaction方法)进行事务的提交或回滚。
二、对关联关系的理解:
1、一对一:分为主键关联和外键关联,两者在配置映射文件时有所不同,再编写PO类时,两个关联的类都需要在属性中添加所关联的类,并提供相应的setter和getter方法,建立关联时直接set(关联的对象),在取得关联对象时直接get()
2、一对多:分为单向关联和双向关联,单向关联和双向关联的区别在于单向关联只需在单的一方进行映射文件的修改,而双向关联则都需要,在PO类中,单向关联只需要在单的一方添加Set类型的属性(存放多的一方)并给出相应方法,而双向关联除此之外还要在多的一方添加类型为单的一方(即:将外键设置为对象)的属性并给出方法。
》》》单向关联只能从单的一方获取到多的一方的信息(Set类型),双向关联双方都可获取对方信息
3、多对多:在多对多关联关系中,需要使用一个中间表,该中间表的字段一般是两个关联的表的主键,该中间表将这两个字段作为组合主键并分别是两个关联表主键的外键。在编写PO类时,并不需要理会中间表,而是在两个关联表中分别一个Set类型的属性(用来存放对方的po对象),并分别添加setter和getter方法。
相关文章推荐
- 【计蒜客系列】挑战难题18:跳跃游戏
- pandas常用操作
- js动画2 多物体运动
- poj3735 Training little cats
- Android AIDL跨进程通讯
- 编写一个函数将数组中的数字前后颠倒,并输出到屏幕上来。
- Find Minimum in Rotated Sorted Array
- POJ 3304 Segment
- 实习第四天——安卓开发中遇到的问题
- 一致性哈希算法
- 转:我们是否应该把后端构建为API
- ubuntu中文论坛
- linux在下面APK反编译软件和过程的描述
- HDUOJ1091
- C语言用结构体模拟类的功能
- HDU 1735 字数统计
- [DFS] AOJ 0118 Property Distribution
- strstr函数的被查找字符串与查找到的字符串是互相影响的,同时可以只用i--控制循环不变
- 银联加密算法
- [c] HDOJ1053 哈夫曼树的应用