hibernate基础

来源:互联网 发布:女神联盟女神升级数据 编辑:程序博客网 时间:2024/05/21 07:55

1.Hibernate基本使用


2.Hibernate核心的API类(6个)
Configuration
SessionFactory
Session
Transaction
Query

Cirteria


3.增删查改
openSession()  事务自动处理
问题:  插入,查询,正常的,删除和更新(update,delete,saveOrUpdate有问题)
getCurrentSession()    事务自己处理
插入,查询,删除,更新全部正常
前提条件:必须配置<property name="current_session_context_class">thread</property>
Transaction  t =  session.beginTransaction();
t.commit();
t.rollback();

4.hibernate.cfg.xml中
<!-- hibernate.hbm2ddl.auto:
      5.2.11 
create-drop:不管有没有数据库表,先删除后创建表,在执行操作 ,一般做测试调试用
create:不管有没有数据库表,先删除后创建表,在执行操作 ,一般做测试调试用
update:没有数据库表就创建,如果有直接进行插入,删除,修改,查询更新。
validate:校验 表必须已经存在,而且表中的字段必须按照指定策略或者要求生成。
                 校验 sql语句语法是否正常(校验方言)
 -->
<property name="hibernate.hbm2ddl.auto">update</property> 


5.元数据配置文件:xx.hbm.xml
     5.1  实体类映射到数据库表的类型指定: 通过type属性指定,但是值必须是包装类型 (包名+类名)
    示例:<id name="id" type="java.lang.Integer">
       <property name="name" type="java.lang.String"></property>
      备注: 建议大家实体类中的基本类型写成包装类型。 
    5.2  测试主键生成策略:
          自然主键:Hibernate不管理主键,开发者自己维护,而且必须手动插入。
          代理主键:hibernate管理主键。按照指定策略生成主键         
          推荐的主键生成策略是uuid。          
  native: 本地策略。根据数据平台不同,根据当前数据库的特性会自动选择生成的主键策略
             mysql: 生成的id特点:主键,不为null,自动增长  ,identity
            orcale:sequence  
  increment:适用于int,short,long作为主键。
           生成方式:
             1.先去查询数据库的最大id,
             2.再最大的id值上增加1,
             3.把增加后的id值作为新的id值进行插入
      控制台:select  max(id)  from stu;      
          insert into .....   
  identity:只能用在支持自动增长的数据库中。mysql支持,Oracle不支持。 
  uuid:字符串类型(char,varchar),长度32位,占用空间大,跨数据库平台(移植性好)。  
  sequence:Orcale数据库策略