Hibernate学习笔记(4)---hibernate的核心接口
Configuration类
该类主要是读取配置文件,启动hibernate,并负责管理hibernate的配置信息,一个程序只创建一个Configuration对象。
Configuration类操作方法
创建Configuration类
Configuration config = new Configuration().getconfigure();
调用该方法后会自动查找默认hibernate.cfg.xml文件
如果想指定目录下自定义的
<!--创建File对象--> File file = new File(路径); Configuration config =new Configuration().configure(file);
还可以用于创建SessionFactory对象(后面写)
加载多个XML文件
Configuration config = new Configuration().addResource(xml文件);//加载多继续写.addResource
调用setProperty方法实现动态配置属性值
SessionFactory接口
hibernate初始化,主要是生成session对象,而且一个程序只有一个SessionFactory
创建SessionFactory
Configuration config = new Configuration().getconfigure(); SessionFactory sessionFactory = config。buildSessionFactory();
SessionFactory相关配置(主要是数据库配置,下面列出一些,也就是hibernate.cfg.xml配置文件)
<session-factory> <!-- 配置数据库方言 --> <property name="dialect"> org.hibernate.dialect.MySQLDialect </property> <!-- 配置数据库连接URL --> <property name="connection.url"> jdbc:mysql://localhost:3306/user </property> <!-- 配置数据库用户名 --> <property name="connection.username">root</property> <!-- 配置数据库密码 --> <property name="connection.password">123456</property> <!-- 配置数据库JDBC驱动 --> <property name="connection.driver_class"> com.mysql.jdbc.Driver </property> <property name="myeclipse.connection.profile">driver</property> <!-- 底部输出sql语句 --> <property name="show_sql">true</property> <!-- 底部输出sql语句格式化 --> <property name="hibernate.format_sql">true</property> <!-- 把配置文件导入核心文件 ,后面会写到 --> <mapping resource="cn/dto/User.hbm.xml" /> </session-factory>
ps:Session是否是线程安全的http://blog.sina.com.cn/s/blog_72c948d701017yb5.html
Session接口
创建seesion
Session session = sessionFacctory.openSession();
生命周期:以Transaction对象(事务)的事务开始和结束为边界
seesion对象提供了一系列与持久化相关操作。
save()方法
将对象加入缓存中,同时标注为持久态(持久态,托管态,瞬时态)
根据映射文件中配置信息生成实体类对象的唯一标识
生成计划执行的insert语句(但并不会执行insert语句,要等事务提交后)
具体用法:
User user =new User(); user.setUsername("durui"); //瞬时态 Session session = sessionFacctory.openSession(); //托管态 Transaction tx = session .beginTransaction();//开启事物 session.save(user) //持久态 tx.commit();//提交事务 session.close();
update()方法
将对象加入缓存中,同时标注为持久态
生成计划执行的update语句
User user =new User(); user.setUsername("durui"); Session session = sessionFacctory.openSession(); Transaction tx = session .beginTransaction();//开启事物 session.update(user) tx.commit();//提交事务 session.close();
saveOrUpdate()方法
可以根据不同情况对数据库执行insert或者update操作
delete()对象
删除实例所对应的数据库记录(必须设置主键)
User user =new User(); user.setId("1"); Session session = sessionFacctory.openSession(); Transaction tx = session .beginTransaction();//开启事物 session.delete(user) tx.commit();//提交事务 session.close();
get()方法
通过标识符得到指定类的持久化对象,若没有返回空
Session session = sessionFacctory.openSession(); Transaction tx = session .beginTransaction();//开启事物 User user = (User)session.get(User.class,"1");//强制转换 system.out.println(user.getId()); tx.commit(); seesion.close();
load()方法
和get()方法一样,但对象必须存在,否则产生异常
contains()方法
判断一个实例是否与当前的session对象相关,也可以判断是否为持久态
evict()方法
管理session缓存
clear()方法
清空session的缓存
createQuery()方法(下节)
用于建立Query查询接口实例
Query query = session。createQuery();
createCriteria()方法(下节)
建立Criteria查询接口的实例
Criteria crit = seesion.createCriteria();
createSQLQuery()方法
从字面意思就知道是sql查询
List users = session。createSQLQuery(sql语句)。list();
createFilter()方法
用于一个持久化集合或者数组特殊查询