hibernate是一种框架,一种开源的关系对象映射框架,它对JDBC做了 轻量级的封装,可以让使用者直接通过操纵POJO对象,来完成对数据库的操作。hibernate会自动生成sql语句,并执行。
hibernate框架使用中,是直接对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>Configuration
作用:进行配置信息的管理 目标:用来生成SessionFactory 可以在configure()中指定hibernate的配置文件,如果不指定,则在src/classpath下加载hibernate.cfg.xml文件 —加载默认hibernate的配置文件
sessionFactory = new Configuration().configuration().buildSessionFactory();—加载指定的hibernate配置文件
sessionFactory = new Configuration().configuration("文件").buildSessionFactory();不需要与数据库同步了 除了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中的信息失效,不更新数据库