03Hibernate进阶

  1. 实体类的编写规则
    • 实体类中的属性是私有的
    • 私有属性使用公开的set和get方法操作
    • 要求实体类中有属性作为唯一值
    • 实体类属性建议不使用基本数据类型(byte、short、int、long、float、double、boolean、char),使用基本数据类型对应的包装类(Byte、Short、Integer、Long、Double、Boolean、Charater
  2. hibernate主键生成策略
    1 <id name="id" column="uid">
    2    <!-- 3、配置数据库表主键的增长策略 :native:自动增长,uuid:生成GUID主键等等-->
    3    <generator class="native"></generator>
    4 </id>
  3. 实体类操作
     1 package cn.kispine.test;
     2 
     3 import org.hibernate.Session;
     4 import org.hibernate.SessionFactory;
     5 import org.hibernate.Transaction;
     6 import org.hibernate.cfg.Configuration;
     7 import org.junit.Test;
     8 
     9 import cn.kispine.entity.User;
    10 
    11 public class Demo {
    12     @Test
    13     public void testHibernateAdd() {
    14         //第一步:加载hibernate核心配置文件
    15         Configuration cfg = new Configuration();
    16         cfg.configure();
    17         //第二步:创建sessionFactory对象
    18         SessionFactory sessionFactory = cfg.buildSessionFactory();
    19         //第三步:使用sessionFactory对象创建session对象
    20         Session session = sessionFactory.openSession();
    21         //第四步:开启事务
    22         Transaction tx= session.beginTransaction();
    23         //第五步:写具体逻辑CRUD操作
    24         User user = new User();
    25         user.setAddress("克利夫兰");
    26         user.setPassword("勒布朗");
    27         user.setUsername("James");
    28         
    29         session.save(user);
    30         //第六步:提交事务
    31         tx.commit();
    32         //第七步:关闭释放资源
    33         session.close();
    34         sessionFactory.close();
    35     }
    36 
    37     @Test
    38     public void testHibernateGet() {
    39         Configuration cfg = new Configuration();
    40         cfg.configure();
    41         SessionFactory sessionFactory = cfg.buildSessionFactory();
    42         Session session = sessionFactory.openSession();
    43         Transaction tx = session.beginTransaction();
    44         
    45         User user = session.get(User.class,"4028bc2362a5b9770162a5b97aa50000");
    46         System.out.println(user);
    47         
    48         tx.commit();
    49         session.close();
    50         sessionFactory.close();
    51     }
    52     
    53     @Test
    54     public void testHibernateUpdate() {
    55         Configuration cfg = new Configuration();
    56         cfg.configure();
    57         SessionFactory sessionFactory = cfg.buildSessionFactory();
    58         Session session = sessionFactory.openSession();
    59         Transaction tx = session.beginTransaction();
    60         
    61         User user = session.get(User.class,"4028bc2362a5b9770162a5b97aa50000");
    62         user.setPassword("asfaSFFADDF");
    63         
    64         session.saveOrUpdate(user); 
    65         
    66         tx.commit();
    67         session.close();
    68         sessionFactory.close();
    69     }
    70     
    71     @Test
    72     public void testHibernateDelete() {
    73         Configuration cfg = new Configuration();
    74         cfg.configure();
    75         SessionFactory sessionFactory = cfg.buildSessionFactory();
    76         Session session = sessionFactory.openSession();
    77         Transaction tx = session.beginTransaction();
    78         
    79         User user = session.get(User.class,"4028bc2362a5b9770162a5b97aa50000");
    80         
    81         session.delete(user); 
    82         
    83         tx.commit();
    84         session.close();
    85         sessionFactory.close();
    86     }
    87 }
    CRUD

    实体类的三种状态:瞬时态、持久态、托管态

    • 瞬时态:对象没有id并且与Session没有关联【new 的一个对象】
    • 持久态:对象有id值并且与session有关联【通过id查询到的对象】
    • 托管态:对象有id值但是与session没有关联
  4. hibernate一级缓存
  5. hibernate的事务操作
原文地址:https://www.cnblogs.com/kispine/p/8757050.html