hibernate相关知识点

来源:互联网 发布:淘宝互刷如何安全 编辑:程序博客网 时间:2024/05/18 19:19

一些名词、概念

1.pojo(plain old java object) 也称VO(value object,值对象)包含一些属性和相应的getter、setter方法,不允许存在业务方法。

2.映射文件(*.hbm.xml)

    <?xml version="1.0"?>    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">    <!-- Generated 2017-12-13 12:20:33 by Hibernate Tools 3.5.0.Final -->    <hibernate-mapping><!--根元素-->        <class name="book.Book_message" table="BOOK_MESSAGE">         <!--class name:映射对应的表名 table:数据库表名 catalog:数据库名-->            <id name="BID" type="java.lang.String">             <column name="BID" />                <generator class="assigned" />            </id>        <!--id name:映射的主键名 type:类型 column name:数据库里主键名  generator:指定主键的生成方式 assigned表示应用程序对主键赋值-->            <property name="BNAME" type="java.lang.String">                <column name="BNAME" />            </property>        <!--property name:映射的属性名 type:类型 column name:数据库里属性名-->         </class>    </hibernate-mapping>

3.配置文件(*.cfg.xml) hibernate核心配置文件

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"                                         "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"><hibernate-configuration> <session-factory name="HibernateSessionFactory">  <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>  <property name="hibernate.connection.url">jdbc:mysql://127.0.0.1:3306/book?useUnicode=true&amp;  characterEncoding=UTF-8</property>  <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>  <property name="hibernate.connection.username">root</property>  <property name="hibernate.connection.password">123456</property>  <mapping resource="Book_message.hbm.xml"/> </session-factory></hibernate-configuration>

4.hibernate核心接口

Configuration:负责读取(hibernate.cfg.xml)完成相应初始化(创建一个实例):Configuration config = new Configuration().configure();SessionFactory:创建session实例SessionFactory sessionFactory = config.bulidSessionFactory();Session:hibernate持久化操作的基础,提供众多持久化方法,透明完成持久化对象的增删查改。Session session = sessionFactory.openSession();Transaction:hibernate中进行事务操作的接口Transaction transaction = session.beginTransaction();Query:hibernate的查询接口,用于执行hql(hibernate查询语句)Query query = session.createQuery("from 表名 where 查询条件");

5.HQL

语句:1.查询:[select <属性名>] from <类名> [where <查询条件> order by <属性> [desc|asc(默认)]]2.更新:update <类名> set<属性名>=<属性值> [where <查询条件>]        delete <类名> [where <查询条件>]执行:1.查询:List list = query.list();2.更新:int n = query.executeUpdate();Query参数:Query query = session.createQuery("select * from xxx where id=?");query.setString(0,"A01");   setXxx(index,value);通用setParameterQuery query = session.createQuery("select * from xxx where id=:id");query.setString("id","A01");   setXxx(name,value);通用setParameter

6.实体对象

transient(瞬时态) 实体对象只在内存中存在,尚未被Session实例关联presisent(持久态) 被session实例关联,对应数据库中的一条记录,变更被保存到数据库中。持久化对象被hibernate管理。例:这里有个Book pojo类,有id,name两个属性,实现了getter、setter方法。Book book1 = new Book();book.setId("1"); book.setName("hibernate");//book1处于transientTransaction transaction = session.beginTranscation();session.save();//book1转换为persistenttransaction.submit();//提交事务,处于持久态的book被持久化到数据库中detached(脱管态) 持久化对象对应的Session实例关闭。Session.close();通常将瞬时态与脱管态的对象统称为VO,将持久化对象称为PO(persistent object)。

7.hibernate批量处理

7.1通过hibernate缓存7.1.1修改hibernate配置文件,统称是hibernate.cfg.xml
<hibernate-configuration> <session-factory name="HibernateSessionFactory">  <property name="hibernate.jdbc.batch_size">5</property>  <!--大小-->  <property name="hibernate.query.factory_class">org.hibernate.hql.ast.ASTQueryTranslatorFactory</property>  <!--使hibernate的HQL直接支持update、delete批量更新语法-->  <property name="hibernate.cache.use_second_level">false</property>  <!--关闭二级缓存--> </session-factory></hibernate-configuration>
7.2绕过hibernate直接调用jdbc api

8.hibernate事务管理

基于JDBC或JTA的事务管理
原创粉丝点击