Hibernate
1.ORM:对象/关系映射 即面向对象思想编写的数据库应用程序。
2.Hibernate持久层
3.hibernate流程
privateSessionFactory sessionFactory;
private Session session;
privateTransaction transaction;
//创建配置对象
Configurationconfiguration=new Configuration().configure();
//创建服务注册对象
ServiceRegistryserviceRegistry=newServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry();
//创建会话工厂对象
sessionFactory=configuration.buildSessionFactory(serviceRegistry);
//会话对象
session=sessionFactory.openSession();
//开启事务
transaction=session.beginTransaction();//没有开启事务不会自动提交
@After
public void destory(){
transaction.commit();//提交事务
session.close();
sessionFactory.close();
}
4.session.openSession()每次创建的都是新的对象,要手动关闭session,不然会导致连接池溢出
5.映射的类要有空的构造方法不然查询会报错
6.查询get,load 当查询的不存在,get会返回null,load会报错
7.更新update
8.数据库基本操作代码
//查询
/*
cake ca=new cake(200, 20,"草莓公主");
session.save(ca);//保存对象到数据库
*/
//更新
/*
cake ca=(cake)session.get(cake.class, 2);
ca.setMsg("hello");
session.update(ca);
*/
//删除
cake ca=(cake) session.get(cake.class, 2);
session.delete(ca);
//查询List
Query query= session.createQuery("from oo.cake");
List<cake> ca=query.list();
for(cake a:ca){
System.out.println(a.getId()+" "+a.getMsg());
}
!注意上面红色的字体,查询不是表名,是实体类,因为映射了
9.cfg.xmlhibernate配置
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/HibernateConfiguration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<!--Generated by MyEclipse Hibernate Tools. -->
<hibernate-configuration>
<session-factory>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.username">root</property>
<property name="connection.password">123456</property>
<property name="connection.url">jdbc:mysql://localhost:3306/cake?useUnicode=true&characterEncoding=UTF-8</property>
<property name="show_sql">true</property><!-- 将sql语句输出到控制台,编码阶段便于测试 -->
<property name="format_sql">true</property><!-- 控制台的sql是否排版 -->
<property name="hbm2ddl.auto">update</property><!-- 生成具体的表结构,create每次drop完,再创建;update是在原有表的基础上进行更新 -->
<mapping resource="oo/cake.hbm.xml" />
</session-factory>
</hibernate-configuration>
10.hbm.xml 在myeclipse中直接在DB Browser中点击表里面选项在项目中生成hbm.xml,编辑器一般会在cfg.xml自动配置,如上一个灰色的,不然自己手动配置