- 实体类的编写规则
- 实体类中的属性是私有的
- 私有属性使用公开的set和get方法操作
- 要求实体类中有属性作为唯一值
- 实体类属性建议不使用基本数据类型(byte、short、int、long、float、double、boolean、char),使用基本数据类型对应的包装类(Byte、Short、Integer、Long、Double、Boolean、Charater)
- hibernate主键生成策略
1 <id name="id" column="uid"> 2 <!-- 3、配置数据库表主键的增长策略 :native:自动增长,uuid:生成GUID主键等等--> 3 <generator class="native"></generator> 4 </id>
- 实体类操作
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 }
实体类的三种状态:瞬时态、持久态、托管态
- 瞬时态:对象没有id并且与Session没有关联【new 的一个对象】
- 持久态:对象有id值并且与session有关联【通过id查询到的对象】
- 托管态:对象有id值但是与session没有关联
- hibernate一级缓存
- hibernate的事务操作
*********************** KISPINE ***********************