Hibernate 的重要API

Configuration 配置对象

用于Hibernate框架加载映射文件

//  加载配置文件
Configuration cfg = new Configuration().configure();
//默认到src下寻找hibernate.cfg.xml
//  自定义加载配置文件
Configuration cfg = new Configuration().configure("文件位置");

SessionFactory: Session工厂对象

它负责Hibernate的初始化和建立session对象,SessionFactory内部维护了Hibernate的连接池和Hibernate的二级缓存。是线程安全的对象。一个项目创建一个对象即可。

SessionFactory实例通过cfg对象获取

//2.创建一个SessionFactory
SessionFactory sessionFactory = cfg.buildSessionFactory();

存在内置连接池也支持第三方连接池 比如c3p0
需要导入c3p0 两个架包 和 hibernate 一个支持c3p0的架包
在这里插入图片描述

Session

在这里插入图片描述
Session代表的是Hibernate与数据库的链接对象。不是线程安全的
Session中的API

  1. 保存方法:

Serializable save(Object obj);

  1. 查询方法:

T get(Class c,Serializable id);

T load(Class c,Serializable id);

  1. 修改方法

void update(Object obj);

  1. 删除方法

void delete(Object obj);

  1. 保存或更新

void saveOrUpdate(Object obj);

Transaction:事务对象

//开启事务
Transaction tx = session.beginTransaction();

// 事务提交
tx.commit();//如果提交前失败 自动回滚
//事务回滚
tx.rollback();

Query

Query 是一个接口用于接收HQL ,而查询多个对象

//通过session得到Query接口
String hql = "***";
Query query = session.createQuery(hql);
//接收数据
List<该持续化类> list = query.list();
//输出 等
...
//事务提交
tx.commit();

条件查询

String hql = "from table_name where 属性名 like ?";
Query query = session.createQuery(hql);
query.setParameter(0,"条件");//hibernate 是从0开始的,DBUtils是从从1开始

Criteria

  • Criteria (Query By Criteria) 面向对象查询
Criteria criteria = session.createCriteria();
List<lei> list = criteria.list();

加入条件

Criteria criteria = session.createCriteria();
criteria.add(Restrictions.like("属性","条件"));
List<lei> list = criteria.list();

SQLQuery

接收SQL语句

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
依赖对象(Dependent objects) 组件(Component)是一个被包含的对象,在持久化的过程中,它被当作值类型,而并非一个实体的引用。在这篇文档中,组件这一术语指的是面向对象的合成概念(而并不是系统构架层次上的组件的概念)。举个例子, 你对人(Person)这个概念可以像下面这样来建模: public class Person { private java.util.Date birthday; private Name name; private String key; public String getKey() { return key; } private void setKey(String key) { this.key=key; } public java.util.Date getBirthday() { return birthday; } public void setBirthday(java.util.Date birthday) { this.birthday = birthday; } public Name getName() { return name; } public void setName(Name name) { this.name = name; } ...... ...... } public class Name { char initial; String first; String last; public String getFirst() { return first; } void setFirst(String first) { this.first = first; } public String getLast() { return last; } void setLast(String last) { this.last = last; } public char getInitial() { return initial; } void setInitial(char initial) { this.initial = initial; } } 在持久化的过程中,姓名(Name)可以作为人(Person)的一个组件。需要注意的是:你应该为姓名的持久化属性定义getter和setter方法,但是你不需要实现任何的接口或申明标识符字段。 以下是这个例子的Hibernate映射文件: <!-- class attribute optional --> 人员(Person)表中将包括pid, birthday, initial, first和 last等字段。 就像所有的值类型一样, 组件不支持共享引用。 换句话说,两个人可能重名,但是两个Person对象应该包含两个独立的Name对象,只不过这两个Name对象具有“同样”的值。 组件的值可以为空,其定义如下。 每当Hibernate重新加载一个包含组件的对象,如果该组件的所有字段为空,Hibernate将假定整个组件为空。 在大多数情况下,这样假定应该是没有问题的。 组件的属性可以是任意一种Hibernate类型(包括集合, 多对多关联, 以及其它组件等等)。嵌套组件不应该被当作一种特殊的应用(Nested components should not be
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值