@Before
	public void init(){
		Configuration configuration = new Configuration().configure();
		ServiceRegistry serviceRegistry = 
				new ServiceRegistryBuilder().applySettings(configuration.getProperties())
				                            .buildServiceRegistry();
		sessionFactory = configuration.buildSessionFactory(serviceRegistry);
		
		session = sessionFactory.openSession();
		transaction = session.beginTransaction();
	}
	
	@After
	public void destroy(){
		transaction.commit();
		session.close();
		sessionFactory.close();
	}
	@Test
	public void test(){
	    //session.测试以下方法 如:
	    User entity= new User("BBBB");
	    session.save(entity);
	}

  -------------------- 基本检索、增加、修改、删除操作 --------------------

(1) 根据主键获取实体。如果没有相应的实体,返回 null。

get(entityClass, id);

(2)根据主键获取实体。如果没有相应的实体,抛出异常。

load(entityClass, id);

1.  执行 get 方法: 会立即加载对象. 

    执行 load 方法, 若不适用该对象, 则不会立即执行查询操作, 而返回一个代理对象 

    get 是 立即检索, load 是延迟检索. 

2.  load 方法可能会抛出 LazyInitializationException 异常

3.  若数据表中没有对应的记录, Session 也没有被关闭.  

    get 返回 null

    load 若不使用该对象的任何属性, 没问题; 若需要初始化了, 抛出异常.  


(3)更新实体。

update(entity);

(4)存储实体到数据库。

save(entity);

在调用 save 方法之前, 若对象已经有 id 了, 在 flush 缓存时会发送一条 INSERT 语句且 id 是无效的

(5)存储实体到数据库。

persist(entity);

在调用 persist 方法之前, 若对象已经有 id 了, 则不会执行 INSERT, 而抛出异常

(6)增加或更新实体。

saveOrUpdate(entity);

(7) 删除指定的实体。

delete(entity);

entity 在数据表中没有对应的记录, 则抛出异常